{"version":3,"file":"js/chunk-vendors.edfa959d.js","mappings":"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P,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,OAOJ,SAASC,EAAwBC,GACpC,OAAO,EAASA,GAAgB,GAAIF,EACxC,EC7WA,SAAW3C,GACP,IAAI8C,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAOpH,SAASC,EAAaC,GAClB,IAAIC,EAAMD,EAAME,UACZC,EAAQH,EAAMI,WACdC,EAAOL,EAAMM,cACbC,EAASJ,EAAQ,EACjBK,EAAQH,EACRE,EAAS,IACTC,GAAS,EACTD,GAAU,IAEd,IAAIE,EAAU3jC,KAAK4jC,MAAMF,EAAQ,KAC7BG,EAAgBF,EAAU3jC,KAAK4jC,MAAMD,EAAU,GAAM,EACrDG,EAAe9jC,KAAK4jC,MAAM,QAAUF,EAAQ,OAAS1jC,KAAK4jC,MAAM,SAAWH,EAAS,IAAMN,EAAMU,EAAgB,KACpHF,EAAU3jC,KAAK4jC,OAAOE,EAAe,YAAc,UACnDD,EAAgBF,EAAU3jC,KAAK4jC,MAAMD,EAAU,GAAM,EACrD,IAAIphC,EAAIuhC,EAAeD,EAAgB,KACnCjkC,EAAII,KAAK4jC,OAAOrhC,EAAI,OAAS,QAC7BgB,EAAIvD,KAAK4jC,MAAM,OAAShkC,GACxBmkC,EAAY/jC,KAAK4jC,OAAOrhC,EAAIgB,GAAK,SACrC4/B,EAAO5gC,EAAIgB,EAAKvD,KAAK4jC,MAAM,QAAUG,GACrCV,EAAQrjC,KAAK4jC,OAAOrhC,EAAIgB,GAAK,SACzB8/B,EAAQ,KACRzjC,GAAK,EACLyjC,GAAS,IAEbA,GAAS,EACTE,EAAO3jC,EAAI,KACX,IAAIokC,EAAqBF,EAAe,KAEpCG,EAAQ,MAAS,GACjBC,EAAIJ,EAAe,QACnBK,EAAMnkC,KAAK4jC,MAAMM,EAAI,OACzBA,GAAQ,MAAQC,EAChB,IAAIruC,EAAIkK,KAAK4jC,OAAOM,EAAI,OAAUD,GAC9BG,EAAK,GAAKD,EAAMruC,EACpBouC,GAAQlkC,KAAK4jC,MAAM9tC,EAAImuC,EAAQ,OAC/B,IAAII,EAAKrkC,KAAK4jC,OAAOM,EAAI,SAAW,MAEzB,KAAPG,IACAA,EAAK,IAIT,IAFA,IAAIC,EAAUJ,EAAIlkC,KAAK4jC,MAAM,QAAUS,EAAK,IACxCh3C,EAAI,EACDA,EAAI21C,EAAez1C,OAAQF,IAC9B,GAAI21C,EAAeh0C,SAAS3B,EAAEY,WAAY,KAAO+1C,EAC7C,MAGR,IAAIO,EAAMl3C,EAAI,MACVm3C,EAAKxkC,KAAK4jC,OAAOW,EAAM,GAAK,IAC5BE,EAAQD,EAAK,EACbE,EAASH,EAAM,GAAKC,EACpBG,EAAQX,EAAqBhB,EAAe31C,EAAI,GAAK,EAMzD,OALKs3C,EAAQ,IAAIp3C,OAAS,IACtBo3C,EAAQL,EACRI,EAASL,EACTI,EAAQL,GAEL,CAAEb,KAAMkB,EAAOpB,MAAOqB,EAAQE,KAAMD,EAC/C,CASA,SAASE,EAAYtB,EAAMF,EAAOF,GAC9B,IAAIiB,EAAKb,EACLc,EAAKhB,EACLlnC,EAAKgnC,EACLqB,EAAKJ,EAAK,EACVG,EAAY,GAALC,EAAW,GAAKH,EAAK,GAC5Bh3C,EAAIk3C,EAAM,MACVO,EAAQ3oC,EAAK6mC,EAAe31C,EAAI,GAAK,EACrC03C,EAAaD,EAAQ,KACrBZ,EAAIlkC,KAAK4jC,MAAMmB,EAAa,IAC5Bz2B,EAAItO,KAAK4jC,OAAOM,EAAI,YAAc,UACtC51B,EAAI41B,EAAI,EAAI51B,EAAItO,KAAK4jC,MAAMt1B,EAAI,GAC/B,IAAI/L,EAAI+L,EAAI,KACR1O,EAAII,KAAK4jC,OAAOrhC,EAAI,OAAS,QAC7BgB,EAAIvD,KAAK4jC,MAAM,OAAShkC,GACxB1H,EAAI8H,KAAK4jC,OAAOrhC,EAAIgB,GAAK,SACzByhC,EAAOziC,EAAIgB,EAAIvD,KAAK4jC,MAAU,QAAJ1rC,GAC1B+sC,EAAS/sC,GAAKA,EAAI,KAAO,GAAK,GAC9BgtC,EAAQtlC,GAAKqlC,EAAS,IAAM,KAAO,MAKvC,OAHIC,GAAS,GACTD,IAEG,IAAIhyC,KAAKiyC,EAAQ,IAAM,EAAW,IAAMF,EACnD,CAhCA9E,EAAY+C,aAAeA,EAiC3B/C,EAAY2E,YAAcA,CAC7B,EAtMD,CAsMG3E,IAAgBA,EAAc,CAAC,ICtMlC,IAAIiF,EAAwB,mEACxBC,EAAa,cACbC,EAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAExDC,EAAa,CACb5yB,EAAG,aACHomB,EAAG,WACHyM,EAAG,WACH9zC,EAAG,aACH8R,EAAG,UACH5W,EAAG,mBAEI64C,EAAkB,CACzB,EAAK,QACL,EAAK,MACL,EAAK,UACL,EAAK,UACL,EAAK,OACL,EAAK,SACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,QACL,EAAK,aACL,EAAK,WACL,EAAK,WACL,EAAK,MACL,EAAK,gBAEL/C,EAAgB,gBAOhBgD,EAA4B,WAC5B,SAASA,IACT,CA0QA,OAjQAA,EAAWC,WAAa,SAAUC,EAASC,EAAQC,GAC/C,IAAIpkC,EAAQvO,KACR4yC,EAAa,GAAKC,eAAeF,EAAMF,EAASC,EAAOI,UACvDC,EAAY,EAAS,uBAAwBH,GAC7CI,EAAaJ,EAAWI,WACxBC,EAAgB,CAAEC,UAAW,GAAKC,aAAa30C,KAAKk0C,EAAOI,WAC3D9H,KAAc0H,EAAOU,mBACrBV,EAAS,GAAKW,yBAAyBX,EAAQD,IAEnD,IAAIa,EAAaZ,EAAOa,QACpB,GAAKC,oBAAoBd,EAAOe,SAAUb,EAAWI,WAAYN,EAAO7yC,MAAM,EAAOmrC,IAAayH,EAAU,IAEhH,GADAQ,EAAcS,cAAgB1I,IAAa,EAAS,gBAAiBgI,GAAc,GAAKW,iBAAiBf,EAAWI,YAChH,EAAYM,GACZ1H,EAAW,oDAEV,CACD0H,EAAa,GAAKM,wBAAwBN,GACtCtI,MACAsI,EAAaA,EAAWnvC,QAAQ,KAAM,MAE1C8uC,EAAcY,QAAUP,EACxBL,EAAca,UAAY9I,IACtB,EAAO,CAAC,EAAG+H,GAAa,EAAO5D,gBAAgByD,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IAEtG,IADA,IAAIqB,EAAeV,EAAW7vC,MAAMwuC,IAA0B,GACrD3uB,EAAK,EAAG2wB,EAAiBD,EAAc1wB,EAAK2wB,EAAe55C,OAAQipB,IAAM,CAC9E,IAAIriB,EAAMgzC,EAAe3wB,GACrBlpB,EAAM6G,EAAI5G,OACV65C,EAAOjzC,EAAI,GAIf,OAHa,MAATizC,IACAA,EAAO,KAEHA,GACJ,IAAK,IACL,IAAK,IACGlJ,IAEAiI,EAAckB,QAAU,EAAS,QAAU,GAAKC,WAAWh6C,GAAM44C,GAIjEC,EAAckB,QAAUvB,EAAWI,WAAW,GAAKqB,MAAMnC,GAAY,GAAKkC,WAAWh6C,IAEzF,MACJ,IAAK,IACL,IAAK,IACG4wC,IAEAiI,EAAc9C,MAAQ,EAAS,UAAY,GAAKiE,WAAWh6C,GAAM44C,GAIjEC,EAAc9C,MAAQyC,EAAWI,WAAW,GAAK7C,OAAO+B,GAAY,GAAKkC,WAAWh6C,IAExF,MACJ,IAAK,IACD64C,EAAcqB,WAAatJ,IACvB,EAAS,aAAcgI,GAAc,EAAS,yBAA0BA,GAC5E,MACJ,IAAK,IAED,IAAIuB,EAASn6C,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAChE64C,EAAcuB,IAAMxJ,IAAa,EAAS,OAAQgI,GAAc,EAAS,QAAUuB,EAAO3B,EAAWI,YACrG,MACJ,IAAK,IACDC,EAAcwB,SAAW,EAAS,sBAAuB7B,EAAWmB,cACpE,MAEZ,CACJ,CACA,OAAO,SAAUl4C,GACb,OAAIgF,MAAMhF,EAAMq0C,WACL,KAEJ3hC,EAAMmmC,iBAAiB74C,EAAOo3C,EACzC,CACJ,EAQAV,EAAWmC,iBAAmB,SAAU74C,EAAOuhB,GAK3C,IAJA,IAAIy2B,EAAUz2B,EAAQy2B,QAClBxoC,EAAM,GACNtG,EAAU8uC,EAAQpwC,MAAM,GAAKkxC,gBAC7BC,EAAU50C,KAAK60C,oBAAoBh5C,EAAOuhB,EAAQ81B,WAC7C5vB,EAAK,EAAGwxB,EAAY/vC,EAASue,EAAKwxB,EAAUz6C,OAAQipB,IAAM,CAC/D,IAAI7f,EAAQqxC,EAAUxxB,GAClByxB,EAAWtxC,EAAMpJ,OACjB65C,EAAOzwC,EAAM,GACJ,MAATywC,IACAA,EAAO,KAEX,IAAIc,OAAS,EACTC,EAAY,GACZ7F,OAAW,EACX8F,OAAgB,EAChBC,EAAS,GACb,OAAQjB,GACJ,IAAK,IACL,IAAK,IACDc,EAASJ,EAAQzE,MACb4E,EAAW,EAEX1pC,GAAO+R,EAAQ+yB,MAAM6E,GAGrB5F,GAAW,EAEf,MACJ,IAAK,IACL,IAAK,IAED/jC,GAAO+R,EAAQ+2B,QAAQhC,EAAWt2C,EAAMu5C,WACxC,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADAhG,GAAW,EACE,MAAT8E,EACAc,EAASJ,EAAQlD,UAEhB,GAAa,MAATwC,EAAc,CACnB9E,GAAW,EACX8F,GAAgB,EAEhBD,EAAYp5C,EAAMu2C,EAAW8B,MAASn5C,WACtCk6C,EAAYA,EAAU7zC,UAAU,EAAG2zC,GACnC,IAAIM,EAAYJ,EAAU56C,OAC1B,GAAI06C,IAAaM,EAAW,CACxB,GAAIN,EAAW,EACX,SAEJ,IAAK,IAAI56C,EAAI,EAAGA,EAAI46C,EAAWM,EAAWl7C,IACtC86C,EAAY,IAAMA,EAAUl6C,UAEpC,CACAo6C,GAAUF,CACd,MAGID,EAASn5C,EAAMu2C,EAAW8B,MAEjB,MAATA,IACAc,EAASA,EAAS,IAAM,IAE5B,MACJ,IAAK,IACDE,GAAgB,EAChBC,GAAUP,EAAQvE,KACD,IAAb0E,IACAI,EAASA,EAAOnpC,OAAOmpC,EAAO96C,OAAS,IAE3C,MACJ,IAAK,IAED,IAAIi7C,EAAQz5C,EAAM05C,WAAa,GAAK,KAAO,KAE3ClqC,GAAO+R,EAAQk3B,WAAWgB,GAC1B,MACJ,IAAK,IAED,IAAIE,EAAM35C,EAAMy0C,cAAgB,EAAI,EAAI,EAEpCmF,EAAOr4B,EAAQo3B,IAAIgB,GACnB,EAAkBC,KAElBA,EAAOr4B,EAAQo3B,IAAIgB,EAAM,EAAI,IAEjCnqC,GAAOoqC,GAAQ,GACf,MACJ,IAAK,IACDpqC,GAAkB,OAAV5H,EAAoB,IAAOA,EAAMU,QAAQ,KAAM,IACvD,MACJ,IAAK,IAED,IAAIuxC,EAAW75C,EAAM85C,oBAEjBC,EAAab,EAAW,EAAK,QAAU33B,EAAQq3B,SAASoB,WAC5DD,EAAYA,EAAUzxC,QAAQ,KAAMiZ,EAAQ02B,UAAUvE,eACrC,IAAbmG,EACArqC,GAAO+R,EAAQq3B,SAASqB,eAGxBZ,GAAgB,EAChBC,EAASn1C,KAAK+1C,iBAAiBL,EAAUE,IAE7CT,EAAS/3B,EAAQq3B,SAASuB,UAAU7xC,QAAQ,QAASgxC,GACrD,MACJ,IAAK,IAED9pC,GAAO+R,EAAQ02B,UAAUxE,cAAcC,GACvC,MACJ,IAAK,IACDlkC,GAAO+R,EAAQs2B,cACf,MACJ,IAAK,IACDtE,GAAW,EACX4F,EAAS,GAAKiB,cAAcp6C,GAC5B,MACJ,QACIwP,GAAO5H,EAEX2rC,IACA8F,GAAgB,EAChBC,EAASn1C,KAAKk2C,oBAAoBlB,EAAQD,IAE1CG,IACA7pC,GAAO,EAAO8iC,kBAAkBgH,EAAQ,GAAKgB,eAAgB/4B,EAAQ02B,UAAUzE,QAEvF,CACA,OAAOhkC,CACX,EACAknC,EAAWsC,oBAAsB,SAAUh5C,EAAOq3C,GAC9C,OAAIA,EACOlG,EAAY+C,aAAal0C,GAE7B,CAAEw0C,KAAMx0C,EAAMy0C,cAAeH,MAAOt0C,EAAMu0C,WAAa,EAAGsB,KAAM71C,EAAMq0C,UACjF,EAQAqC,EAAW2D,oBAAsB,SAAUh8C,EAAKE,GAC5C,IAAIiR,EAAMnR,EAAM,GAChB,OAAY,IAARE,GAA4B,IAAfiR,EAAIhR,OACV,IAAMgR,EAEVA,CACX,EASAknC,EAAWwD,iBAAmB,SAAUK,EAAMvC,GAC1C,IAAItlC,EAAQvO,KACRq2C,EAAOxC,EAAQxvC,MAAM,KACrBiyC,EAAaD,EAAKD,EAAO,EAAI,EAAI,GACjCG,EAAKzpC,KAAK0pC,IAAIJ,GAClB,OAAoBE,EAAWnyC,QAAQ,WAAW,SAAUlD,GACxD,IAAI7G,EAAM6G,EAAI5G,OACVo8C,GAA+B,IAAtBx1C,EAAI8C,QAAQ,KACzB,OAAOwK,EAAM2nC,oBAAoBppC,KAAK4jC,MAAM+F,EAAUF,EAAK,GAAOA,EAAK,IAAMn8C,EACjF,GACJ,EACOm4C,CACX,CA7Q+B,GCrC3BmE,EAAY,CACZ,GAAM,2BACN,GAAM,2BACN,GAAM,wBACN,GAAM,yBAGNC,EAAc,cACdC,EAAY,YAEZvH,EAAS,CAAC,WAAY,MAAO,QAAS,UAAW,eAQjDwH,EAA8B,WAC9B,SAASA,IACT,CAmWA,OA1VAA,EAAaC,gBAAkB,SAAUrE,EAASC,EAAQC,GACtD,IAIIoE,EAJAxoC,EAAQvO,KACRg3C,EAAW,EAAO,CAAC,EAAGtE,GACtBuE,EAAW,CAAC,EACZC,EAAW,CAAC,EAEZtE,EAAa,GAAKC,eAAeF,EAAMF,EAAS,IAAI,GACpDM,EAAYH,EAAWuE,cAC3BD,EAASE,aAAepM,IAAa,EAAO,CAAC,EAAG+H,GAC5C,EAAO5D,gBAAgByD,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IAAO,GACrFuE,EAASG,eAAiBrM,IAAa,EAAS,iBAAkB+H,GAAa,GAAKuE,kBAAkB1E,EAAWuE,cAAeH,EAASO,UAAYC,GAAqB9E,EAAO+E,WAEjLP,EAASQ,cAAgB1M,IAAa,EAAS,4BAA6B+H,GACxEmE,EAASE,aAAa9H,cAAc,GAAKqH,GAC7CO,EAASS,YAAc3M,IAAa,EAAS,0BAA2B+H,GACpEmE,EAASE,aAAa9H,cAAc,GAAKsH,GAC7C,IAAIz1B,EAAU+1B,EAASE,aAAa9H,cACpC,GAAKoD,EAAa,SAAO,GAAKkF,YAAYp5C,KAAKk0C,EAAOa,QAClD0D,EAAW,GAAKY,aAAanF,EAAOa,OAAQ2D,EAAUtE,EAAWuE,mBAEhE,CAkBD,GAjBA,EAAOH,EAAU,GAAKc,yBAAyBpF,EAAOa,QAAU,MAChEyD,EAASe,WAA+B,aAAlBf,EAASn3C,KAC/Bm3C,EAASgB,UAA8B,YAAlBhB,EAASn3C,KACzBmrC,MACD+L,EAAgB,GAAKkB,iBAAiBjB,EAASn3C,KAAMq3C,EAASE,aAAa3I,aAAcmE,EAAWuE,cAAeH,EAASkB,YAEhIlB,EAASmB,SAAWn4C,KAAKo4C,gBAAgBpB,EAASqB,yBAA0BrB,EAASsB,0BAA0B,GAC/Gt4C,KAAKo4C,gBAAgBpB,EAASuB,sBAAuBvB,EAASwB,uBAAuB,GAAO,GACvF,EAAYxB,EAASyB,kBACtBzB,EAASwB,sBAAwBxB,EAASuB,sBAAwBvB,EAASyB,gBAE3E,EAAYzB,EAAS0B,eACrB1B,EAAS0B,aAAc,GAEvB1B,EAASe,aAAe/M,MACxB+L,EAAgBA,EAAc5yC,QAAQ,UAAW,GAAKw0C,kBAErD3N,IAUDiM,EAAS2B,MAAQ,EAAO,CAAC,EAAG,CAAC,EAAG,EAAS5B,EAASn3C,KAAO,QAASkzC,IAClEkE,EAAS4B,MAAQ,EAAO,CAAC,EAAG,CAAC,EAAG,EAAS7B,EAASn3C,KAAO,QAASkzC,IAC5C,aAAlBiE,EAASn3C,MAAuB6yC,EAAO6E,UACvC,GAAKuB,sBAAsB,CAAC7B,EAAS4B,MAAO5B,EAAS2B,OAAQ1B,EAASG,eAAgB3E,EAAO6E,cAbpF,CACb,IAAIlzC,EAAQ0yC,EAAc1yC,MAAM,KAChC4yC,EAAS2B,MAAQ,GAAKG,cAAc10C,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAM6yC,EAASG,gBAC/EJ,EAAS4B,MAAQ,GAAKE,cAAc10C,EAAM,IAAI,EAAO6yC,EAASG,gBAC1DL,EAAS0B,cACT1B,EAASgC,eAAiB73B,EAAQkuB,EAAO,IACzC2H,EAASiC,UAAYj5C,KAAKk5C,mBAAmB70C,EAAM,IAE3D,CAQA,IAAI80C,EAAU,EAAYnC,EAASwB,uBAInC,GAHIW,IACAnC,EAASwB,sBAAwBvB,EAAS2B,MAAMQ,iBAEhD,EAAYpC,EAASuB,uBAAwB,CAC7C,IAAIc,EAAOpC,EAAS2B,MAAMU,gBAC1BtC,EAASuB,sBAAwB,EAAYc,IAASrC,EAASgB,UAAY,EAAIqB,CACnF,CACA,IAAIE,EAAQvC,EAASwB,sBACjBgB,EAAQxC,EAASuB,sBAChB,EAAYgB,IAAW,EAAYC,IAChCD,EAAQC,IACRxC,EAASuB,sBAAwBgB,EAG7C,CAGA,OAFA,EAAOtC,EAAS2B,MAAO5B,GACvB,EAAOC,EAAS4B,MAAO7B,GAChB,SAAUn7C,GACb,OAAIgF,MAAMhF,GACCslB,EAAQkuB,EAAO,IAEhBtuC,SAASlF,GAGZ0S,EAAMkrC,mBAAmB59C,EAAOo7C,EAAUC,EAAUxE,GAFhDvxB,EAAQkuB,EAAO,GAG9B,CACJ,EAOAwH,EAAaqC,mBAAqB,SAAUrF,GACxC,IAAIxoC,EAAM,CAAC,EACP5H,EAAQowC,EAAQpwC,MAAM,GAAKi2C,mBAC/B,GAAIj2C,GAASA,EAAM,GAAI,CACnB,IAAImyC,EAAYnyC,EAAM,GAClB/E,EAAIk3C,EAAU+D,YAAY,KAC9B,IAAW,IAAPj7C,EAAU,CACV,IAAIk7C,EAAOhE,EAAUvxC,MAAM,KAAK,GAChCgH,EAAIwuC,QAAWD,EAAKv/C,OAASqE,EAAK,EAClC,IAAIH,EAAIq3C,EAAU+D,YAAY,IAAKj7C,EAAI,IAC5B,IAAPH,IACA8M,EAAIyuC,UAAYp7C,EAAI,EAAIH,EAEhC,CACJ,CACA,OAAO8M,CACX,EAUAwrC,EAAauB,gBAAkB,SAAU2B,EAAMC,EAAMC,EAAgBC,GACjE,IAAIC,EAASD,EAAa,IAAM,IAC5BE,EAAO,EACPC,EAAO3D,EAAU,IAAMyD,GAEvBG,EAAO5D,EAAU,IAAMyD,GAS3B,GARK,EAAYJ,KACb/5C,KAAKu6C,WAAWR,EAAMM,EAAMH,GAC5BE,KAEC,EAAYJ,KACbh6C,KAAKu6C,WAAWP,EAAMM,EAAMJ,GAC5BE,KAES,IAATA,EAAY,CACZ,KAAIL,EAAOC,GAIP,OAAO,EAHPpO,EAAW0O,EAAO,kCAAoCD,EAK9D,MACSJ,GAA2B,IAATG,GACvBxO,EAAW,OAAS0O,EAAO,MAAQA,EAAO,mBAE9C,OAAO,CACX,EASAzD,EAAa0D,WAAa,SAAUrgD,EAAK4f,EAAMogC,GAC3C,IAAIM,EAAQN,EAAa,CAAC,EAAG,IAAM,CAAC,EAAG,KACnChgD,EAAMsgD,EAAM,IAAMtgD,EAAMsgD,EAAM,KAC9B5O,EAAW9xB,EAAO,iCAAmC0gC,EAAM,GAAK,KAAOA,EAAM,GAErF,EASA3D,EAAa4C,mBAAqB,SAAU59C,EAAOm7C,EAAUE,EAAUxE,GACnE,IAAI+H,EACJ,IAAI,EAAYzD,EAAS4B,MAAM/4C,MAA/B,CAIQhE,EAAQ,GACRA,IAAiB,EACjB4+C,EAAUzD,EAAS4B,OAGnB6B,EADe,IAAV5+C,GACKm7C,EAAS0D,UAGT1D,EAAS6B,MAEvB,IAAI8B,EAAS,GAIb,GAHIF,EAAQzC,YACRn8C,GAAgB,KAEhB4+C,EAAQtC,SACRwC,EAAS36C,KAAK46C,yBAAyB/+C,EAAO4+C,EAAQnC,yBAA0BmC,EAAQpC,+BAOxF,GAJAsC,EAAS36C,KAAK66C,gBAAgBh/C,EAAO4+C,EAAQjC,sBAAuBiC,EAAQlC,sBAAuB7F,GAC/F+H,EAAQK,uBACRH,EAAS36C,KAAK+6C,uBAAuBJ,EAAQF,EAAQK,uBAErD5D,EAAS8D,gBAAkBP,EAAQjC,sBAAwBiC,EAAQlC,uBAChE,WAAW/5C,KAAKm8C,GAAS,CAI5B,IAHA,IAAIf,EAAOe,EAAOt2C,MAAM,KACpB42C,EAAcrB,EAAK,GACnBx/C,EAAM6gD,EAAY5gD,OACbF,EAAIC,EAAM,EAAGD,GAAK,EAAGA,IAAK,CAC/B,KAA4B,MAAxB8gD,EAAY,GAAK9gD,IAAcA,GAAKsgD,EAAQjC,uBAI5C,MAHAyC,EAAcA,EAAYt2C,MAAM,EAAGxK,EAK3C,CACAwgD,EAASf,EAAK,GAAK,IAAMqB,CAC7B,CAaJ,MAXqB,eAAjBR,EAAQ56C,OACR86C,EAAS9+C,EAAMq/C,cAAcT,EAAQlC,uBACrCoC,EAASA,EAAOx2C,QAAQ,IAAK+yC,EAASE,aAAa9H,cAAcD,EAAO,MAE5EsL,EAASA,EAAOx2C,QAAQ,IAAK+yC,EAASE,aAAa9H,cAAcD,EAAO,KACxEsL,EAA4B,sBAAnBF,EAAQlH,OAAiCvzC,KAAKm7C,kBAAkBr/C,SAAS6+C,IAAWA,EACzFF,EAAQ/B,cAERiC,EAAS36C,KAAKo7C,aAAaT,EAAQF,EAAQxB,UAAUY,QAASY,EAAQzB,gBAAkB,IAAK9B,EAASE,aAAa9H,cAAcD,EAAO,KAAO,IAAKoL,EAAQxB,UAAUa,YAE1Ka,EAAS,EAAOxM,kBAAkBwM,EAAQ,GAAKxE,eAAgBe,EAASE,aAAa/H,QAC/D,QAAlBoL,EAAQY,MACDZ,EAAQY,MAGA,MAAXV,GAAkBjI,GAA4B,MAAlBA,EAAOa,OAC5BoH,EAASF,EAAQa,KAErBb,EAAQY,MAAQV,EAASF,EAAQa,IAEhD,CACJ,EASAzE,EAAa+D,yBAA2B,SAAU/+C,EAAOH,EAAKC,GAC1D,IACI4/C,EADA3B,EAAO/9C,EAAQ,GAEfxB,EAASu/C,EAAKv/C,OAClB,OAAIA,EAASqB,EACFG,EAAM2/C,YAAY9/C,IAGzBk+C,EAAO/9C,EAAM2/C,YAAY7/C,GACzB4/C,GAAM3B,EACC2B,EAAK,GAEpB,EAWA1E,EAAauE,aAAe,SAAUlhD,EAAKuhD,EAAQC,EAAKC,EAAeC,GACnE,IAAIC,GAAQ,EAAkBD,IAAsB,IAAXA,EACrCv3C,EAAQnK,EAAImK,MAAMs3C,GAClBruB,EAASjpB,EAAM,GACfhK,EAASizB,EAAOjzB,OAChB4G,EAAM,GACV,MAAO5G,EAASohD,EACZx6C,EAAMqsB,EAAO3oB,MAAMtK,EAASohD,EAAQphD,IAAW4G,EAAI5G,OAC9CqhD,EAAMz6C,EAAO,IAClB5G,GAAUohD,EACNI,IACAJ,EAASG,EACTC,GAAO,GAIf,OADAx3C,EAAM,GAAKipB,EAAO3oB,MAAM,EAAGtK,IAAW4G,EAAI5G,OAASqhD,EAAM,IAAMz6C,EACxDoD,EAAMvG,KAAK69C,EACtB,EASA9E,EAAagE,gBAAkB,SAAUh/C,EAAOH,EAAKC,EAAK+2C,GACtD,IAAIkH,GAAQ/9C,EAAQ,IAAIwI,MAAM,KAAK,GAC/BhK,EAASu/C,EAAOA,EAAKv/C,OAAS,EAClC,GAAIqB,GAAOrB,EAASqB,EAAK,CACrB,IAAI2P,EAAM,GACV,GAAe,IAAXhR,EAGC,CACDgR,GAAOxP,EACP,IAAK,IAAI+G,EAAI,EAAGA,EAAIlH,EAAMrB,EAAQuI,IAC9ByI,GAAO,IAEX,OAAOA,CACX,CACA,OATIA,EAAMxP,EAAMigD,QAAQpgD,GASjBG,EAAMigD,QAAQpgD,EACzB,CACK,IAAK,EAAkBC,KAAStB,EAASsB,GAAe,IAARA,GACjD,OAAOE,EAAMigD,QAAQngD,GAEzB,IAAIsF,EAAMpF,EAAQ,GAIlB,MAHe,MAAXoF,EAAI,IAAcyxC,GAA4B,WAAlBA,EAAOa,SACnCtyC,EAAMA,EAAI0D,MAAM,IAEb1D,CACX,EAQA41C,EAAakE,uBAAyB,SAAUl/C,EAAOH,GACnD,IAAIk+C,EAAO/9C,EAAMwI,MAAM,KACnB03C,EAAOnC,EAAK,GACZx/C,EAAM2hD,EAAK1hD,OACf,GAAID,EAAMsB,EAAK,CACX,IAAK,IAAIvB,EAAI,EAAGA,EAAIuB,EAAMtB,EAAKD,IAC3B4hD,EAAO,IAAMA,EAEjBnC,EAAK,GAAKmC,CACd,CACA,OAAOnC,EAAK97C,KAAK,IACrB,EAMA+4C,EAAasE,kBAAoB,SAAUt/C,GACvC,GAAIA,GAAS,IAAQ,CACjBA,GAAS,IACT,IAAIgxC,EAAKhxC,EAAMd,WAAWsJ,MAAM,KAAuB23C,GAAPnP,EAAG,GAAcA,EAAG,IACpE,OAAOmP,IAAYA,EAAQ56C,UAAU,EAAG,IAAM,EACxC0L,KAAKmvC,KAAKpgD,GAAOd,WACjB+R,KAAK4jC,MAAM70C,GAAOd,UAC5B,CACA,MAAO,EACX,EACO87C,CACX,CAtWiC,GCjB7B,EAAa,cACbqF,EAAY,WACZ,EAAa,CACbC,OAAQ,aACRC,KAAM,WACN5tB,OAAQ,aACRyhB,IAAK,UACLE,MAAO,WACPkM,aAAc,mBAEdlM,EAAQ,SAORmM,EAA4B,WAC5B,SAASA,IACT,CAuYA,OA9XAA,EAAWC,WAAa,SAAU9J,EAASC,EAAQC,GAC/C,IAAIpkC,EAAQvO,KACR4yC,EAAa,GAAKC,eAAeF,EAAMF,EAASC,EAAOI,UACvD0J,EAAa,EAAOjO,yBAAyBqE,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IAAO,EAAO3H,KAC9GyR,EAAe,CAAC,EAChBzR,KAAc0H,EAAOU,mBACrBV,EAAS,GAAKW,yBAAyBX,EAAQD,IAEnD,IAGIiK,EAHApJ,EAAaZ,EAAOa,QACpB,GAAKC,oBAAoBd,EAAOe,SAAUb,EAAWI,WAAYN,EAAO7yC,MAAM,EAAOmrC,IAAayH,EAAU,IAC5GkK,EAAc,GAElB,GAAI,EAAYrJ,GACZ1H,EAAW,oDAEV,CACD0H,EAAa,GAAKM,wBAAwBN,GAC1CmJ,EAAe,CAAEvJ,UAAW,GAAKC,aAAa30C,KAAKk0C,EAAOI,UAAWe,QAASP,EAAYsJ,aAAc,CAAC,EAAGnK,QAASA,GAUrH,IATA,IAAIuB,EAAeV,EAAW7vC,MAAM,GAAKkxC,iBAAmB,GACxDI,EAAWf,EAAa35C,OACxBwiD,EAAgB,EAChBC,EAAe,EACfC,GAAiB,EACjBC,EAAQR,EAAWxN,aAEnB8E,EAAY9I,IAAa4H,EAAWmB,aAAakJ,QACjD,EAAO9N,gBAAgByD,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IACrEx4C,EAAI,EAAGA,EAAI46C,EAAU56C,IAAK,CAC/B,IAAI8G,EAAM+yC,EAAal4C,SAAS3B,EAAEY,WAAY,KAC1CX,EAAM6G,EAAI5G,OACV65C,EAAmB,MAAXjzC,EAAI,GAAc,IAAMA,EAAI,GACpCmuC,OAAW,EACX8N,OAAY,EAEZC,EAAU7K,EAAgB4B,GAC1BkJ,EAAoB,IAARhjD,EAAa,GAAK,IAKlC,OAJI2iD,IACAF,EAAgBC,EAChBC,GAAiB,GAEb7I,GACJ,IAAK,IACL,IAAK,IAED,IAAImJ,OAAW,EAGXA,EAFArS,IAEW,EAAS,QAAU,GAAKoJ,WAAWh6C,GAAMw4C,EAAWI,YAIpDJ,EAAWI,WAAW,GAAKqB,MAAM,GAAY,GAAKD,WAAWh6C,IAG5E,IAAIkjD,EAAa,EAAO7P,cAAc4P,GAEtCV,GAAe,IAAM9hD,OAAOomB,KAAKq8B,GAAYx/C,KAAK,KAAO,IACzD,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADAo/C,GAAY,GACE,MAAThJ,GAAyB,MAATA,IAAiB95C,EAAM,EAAG,CAC3C,IAAImjD,OAAY,EAGZA,EAFAvS,IAEY,EAAS,UAAY,GAAKoJ,WAAWh6C,GAAMw4C,EAAWI,YAItDJ,EAAWI,WAAW7C,GAAO,GAAY,GAAKiE,WAAWh6C,IAGzEqiD,EAAaU,GAAW,EAAO1P,cAAc8P,GAE7CZ,GAAe,IAAM9hD,OAAOomB,KAAKw7B,EAAaU,IAAUr/C,KAAK,KAAO,GACxE,MACK,GAAa,MAATo2C,EAAc,CACnB,GAAI95C,EAAM,EACN,SAEJg1C,GAAW,EACXuN,GAAe,IAAMK,EAAQA,EAAQ,IAAMA,EAA5B,IACnB,MAEI5N,GAAW,EACXuN,GAAe,IAAMK,EAAQA,EAAQI,EAAW,IAEvC,MAATlJ,IACAuI,EAAae,QAAS,GAE1B,MACJ,IAAK,IAED,IAAIC,EAAc,IAARrjD,EAAY,IAAM,GAC5BuiD,GAAe,IAAMK,EAAQS,EAAMT,EAAQ,IAC3C,MACJ,IAAK,IACDE,EAAY9N,GAAW,EAEnBuN,GADQ,IAARviD,EACe,IAAM4iD,EAAQA,EAAQ,IAGtB,IAAMA,EAAQ,IAAM5iD,EAAM,MAE7C,MACJ,IAAK,IACD8iD,GAAY,EAEZ,IAAIQ,EAAc1S,IACd,EAAS,aAAc4H,EAAWI,YAClC,EAAS,yBAA0BJ,EAAWI,YAElDyJ,EAAaU,GAAW,EAAO1P,cAAciQ,GAE7Cf,GAAe,IAAM9hD,OAAOomB,KAAKw7B,EAAaU,IAAUr/C,KAAK,KAAO,IACpE,MACJ,IAAK,IACDo/C,GAAY,EAEZ,IAAI3I,EAASn6C,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAEhEqiD,EAAaU,GAAW,EAAO1P,cAAczC,IACzC,EAAS,OAAQ4H,EAAWI,YAAc,EAAS,QAAUuB,EAAO3B,EAAWI,aAEnF2J,GAAe,IAAM9hD,OAAOomB,KAAKw7B,EAAaU,IAAUr/C,KAAK,KAAO,KACpE,MACJ,IAAK,IAED,IAAI6/C,GAAO,IAAI59C,MAAO41C,oBACtBuH,EAAsB,IAATS,EAEblB,EAAaU,GAAW,EAAS,sBAAuBvK,EAAWmB,cAEnE,IAAI6J,EAAQnB,EAAaU,GACzBT,EAAYtiD,EAAM,EAElB,IAAIyjD,EAAWnB,EAAW,QAAUkB,EAAM/H,WAC1CgI,EAAWA,EAAS15C,QAAQ,KAAM2vC,EAAUvE,eAC5CoN,GAAe,IAAM38C,KAAK89C,kBAAkBD,EAAUD,EAAOZ,GAAS,KACtED,GAAiB,EACjBD,EAAeJ,EAAW,EAAI,GAC9B,MACJ,IAAK,IAED,IAAIqB,EAAU98C,EAAIkD,QAAQ,KAAM,IAChCw4C,GAAe,IAAMoB,EAAU,KAC/B,MACJ,QACIpB,GAAe,UACf,MAKR,GAHIO,IACAT,EAAaG,aAAa,GAAKO,GAAW,CAAE/N,SAAUA,EAAU4O,IAAK7jD,EAAI,EAAI0iD,EAAeH,SAAUA,IAEtGviD,IAAM46C,EAAW,IAAM,EAAkB4H,GAAc,CACvD,IAAI34C,EAASkD,OACbu1C,EAAawB,YAAc,IAAIj6C,EAAO,IAAM24C,EAAc,IAAK,IACnE,CACJ,CACJ,CACA,OAAO,SAAU9gD,GACb,IAAIqiD,EAAkB3vC,EAAM4vC,kBAAkBtiD,EAAO4gD,EAAcD,GACnE,GAAI,EAAkB0B,KAAqBrjD,OAAOomB,KAAKi9B,GAAiB7jD,OACpE,OAAO,KAEX,GAAIoiD,EAAavJ,UAAW,CACxB,IAAIkL,EAAO,CAAC,EACR5N,EAAQ0N,EAAgB7N,KACxBgO,EAAQH,EAAgBjO,IACxBM,EAAS2N,EAAgB/N,MACzBmO,EAAS9N,EAASA,EAAQ,GAAM,GAChC+N,EAAkC,IAAlBD,EAAOjkD,OACtBm2C,GAAUD,GAAW8N,IAASE,IAC/BH,EAAOpR,EAAY+C,aAAa,IAAIhwC,OAEpCw+C,IACA/N,EAAQ10C,UAAUsiD,EAAK/N,KAAO,IAAI1rC,MAAM,EAAG,GAAK25C,EAAQ,KAG5D,IAAItL,EAAahG,EAAY2E,YAAYnB,GAAS4N,EAAK/N,KAAME,GAAU6N,EAAKjO,MAAOkO,GAASD,EAAK1M,MACjGwM,EAAgB7N,KAAO2C,EAAW1C,cAClC4N,EAAgB/N,MAAQ6C,EAAW5C,WAAa,EAChD8N,EAAgBjO,IAAM+C,EAAW9C,SACrC,CACA,OAAO3hC,EAAMiwC,cAAcN,EAC/B,CACJ,EASA5B,EAAWkC,cAAgB,SAAUphC,EAASvhB,GAC1C,IAAI8xC,EAAM9xC,GAAS,IAAIkE,KACvB4tC,EAAI8Q,gBAAgB,GACpB,IAAIC,EAAQ,CAAC,OAAQ,SAAU,SAAU,eAAgB,QAAS,OAC9Dh2B,EAAItL,EAAQizB,KACZiF,EAAQl4B,EAAQk3B,WAChBsJ,EAAQxgC,EAAQq3B,SACpB,IAAK,EAAY/rB,GAAI,CACjB,IAAItuB,GAAOsuB,EAAI,IAAIruB,OACnB,GAAID,GAAO,EAAG,CACV,IAAIukD,EAAgD,IAAtC7xC,KAAK4jC,MAAM/C,EAAI2C,cAAgB,KAC7C5nB,GAAKi2B,CACT,CACAhR,EAAIiR,YAAYl2B,EACpB,CACA,IAAK,IAAIpF,EAAK,EAAGu7B,EAAUH,EAAOp7B,EAAKu7B,EAAQxkD,OAAQipB,IAAM,CACzD,IAAIplB,EAAM2gD,EAAQv7B,GAEdw7B,EAAS1hC,EAAQlf,GAIrB,GAHI,EAAY4gD,IAAmB,QAAR5gD,GACvByvC,EAAIoR,QAAQ,IAEX,EAAYD,GACb,GAAY,UAAR5gD,EAAiB,CAEjB,GADA4gD,GAAU,EACNA,EAAS,GAAKA,EAAS,GACvB,OAAO,IAAI/+C,KAAK,WAEpB,IAAIi/C,EAAQrR,EAAIuC,UAChBvC,EAAIoR,QAAQ,GAEZpR,EAAI,EAAWzvC,IAAM4gD,GACrB,IAAIG,EAAQ,IAAIl/C,KAAK4tC,EAAI2C,cAAewO,EAAS,EAAG,GAAG5O,UACvDvC,EAAIoR,QAAQC,EAAQC,EAAQD,EAAQC,EACxC,KACK,CACD,GAAY,QAAR/gD,EAAe,CACf,IAAIghD,EAAU,IAAIn/C,KAAK4tC,EAAI2C,cAAe3C,EAAIyC,WAAa,EAAG,GAAGF,UACjE,GAAK4O,EAAS,GAAKA,EAASI,EACxB,OAAO,IAEf,CAEAvR,EAAI,EAAWzvC,IAAM4gD,EACzB,CAER,CACA,IAAK,EAAYxJ,GAAQ,CACrB,IAAI8G,EAAOzO,EAAI4H,WACD,OAAVD,EACA3H,EAAIwR,SAAS/C,GAAiB,KAATA,EAAc,EAAI,KAEzB,KAATA,GACLzO,EAAIwR,SAAS,EAErB,CACA,IAAK,EAAYvB,GAAQ,CACrB,IAAIwB,EAAUxB,EAAQjQ,EAAIgI,oBACV,IAAZyJ,GACAzR,EAAI0R,WAAW1R,EAAI2R,aAAeF,EAE1C,CACA,OAAOzR,CACX,EASA2O,EAAW6B,kBAAoB,SAAUtiD,EAAO4gD,EAAc3wC,GAC1D,IAAI/G,EAAUlJ,EAAM4H,MAAMg5C,EAAawB,aACnCsB,EAAa,CAAE,KAAQ,EAAG,OAAU,EAAG,OAAU,GACrD,GAAI,EAAkBx6C,GAClB,OAAO,KAIP,IADA,IAAIrD,EAAQ7G,OAAOomB,KAAKw7B,EAAaG,cAC5Bt5B,EAAK,EAAGk8B,EAAU99C,EAAO4hB,EAAKk8B,EAAQnlD,OAAQipB,IAAM,CACzD,IAAIjoB,EAAOmkD,EAAQl8B,GACfm8B,EAAYhD,EAAaG,aAAa,GAAKvhD,GAC3CqkD,EAAc36C,EAAQ06C,EAAUzB,KACpC,GAAIyB,EAAUrQ,SAEVmQ,EAAWlkD,GAAQ2E,KAAK2/C,qBAAqBD,EAAa5zC,QAG1D,GAAa,aAATzQ,GAAwB,EAAYqkD,GAkBpCA,EAAyB,UAATrkD,GAAuBohD,EAAavJ,WAAwC,OAAzBuJ,EAAahK,SAA6C,UAAzBgK,EAAahK,SAAgD,UAAzBgK,EAAahK,QACvEiN,EAAxEA,EAAY,GAAGv+C,cAAgBu+C,EAAYt+C,UAAU,GAAGi+B,cAE9DkgB,EAAWlkD,GAAQohD,EAAaphD,GAAMqkD,OArBY,CAClD,IAAI1B,EAAMyB,EAAUzB,IAChB9jD,OAAM,EACN0lD,EAAS76C,EAAQi5C,EAAM,GACvBnC,GAAQ,EAAY+D,GACpBH,EAAU/C,SACVxiD,EAA+D,GAAzD8F,KAAK6/C,aAAahE,EAAM+D,EAAQ76C,EAAQi5C,EAAM,GAAIlyC,IAGxD5R,EAA+D,GAAzD8F,KAAK6/C,aAAahE,EAAM+D,EAAQ76C,EAAQi5C,EAAM,GAAIlyC,GACxD5R,GAAO8F,KAAK6/C,aAAahE,EAAM92C,EAAQi5C,EAAM,GAAIj5C,EAAQi5C,EAAM,IAAKlyC,IAEnE,EAAkB5R,KACnBqlD,EAAW,GAAKlkD,GAAQnB,EAEhC,CASR,CAKJ,OAJQuiD,EAAae,SACb+B,EAAW/B,QAAS,GAGrB+B,CACX,EAQAjD,EAAWqD,qBAAuB,SAAU9jD,EAAO62C,GAE/C,OADA72C,EAAQ,EAAOsyC,kBAAkBtyC,EAAO62C,EAAO3D,iBAAkB2D,EAAO5D,aACpEoN,EAAU19C,KAAK3C,IACPA,EAEL,IACX,EASAygD,EAAWwB,kBAAoB,SAAUjI,EAAYiK,EAAOpQ,GACxD,IACIrkC,EAEA00C,EAHAlM,EAAUiM,EAAM9J,UAEhBgK,EAAS,IAAMtQ,EAAN,KAA2BA,EAAS,IAcjD,OAZArkC,EAAMwqC,EAAW1xC,QAAQ,IAAK,OAE1BkH,GAD8B,IAA9BwqC,EAAW9xC,QAAQ,MACbsH,EAAIlH,QAAQ,SAAU,IAAM67C,EAAS,KAGrC30C,EAAIlH,QAAQ,OAAQ,IAAM67C,EAAS,MAG7CD,EAAY10C,EAAIhH,MAAM,KAAKG,KAAI,SAAUvD,GACrC,OAAO4yC,EAAQ1vC,QAAQ,MAAOlD,EAClC,IACAoK,EAAM00C,EAASjiD,KAAK,KAAO,IAAMgiD,EAAMhK,cAChCzqC,CACX,EAUAixC,EAAWuD,aAAe,SAAUhE,EAAM9B,EAAMC,EAAMluC,GAClD,IAAIm0C,EAAOpE,EAAO9B,EAAOC,EACzB,IAAKiG,EACD,OAAO,EAEX,IAAIpkD,EAAQmE,KAAK2/C,qBAAqBM,EAAMn0C,GAC5C,OAAI+vC,GACQhgD,EAELA,CACX,EACOygD,CACX,CA1Y+B,GCnB3Bt4C,EAASkD,OACTg5C,GAAa,IAAIl8C,EAAO,qEACxBm8C,GAAa,KACbl/B,GAAO,CAAC,YAAa,YAMrBm/B,GAA8B,WAC9B,SAASA,IACT,CAwHA,OA/GAA,EAAaC,aAAe,SAAU5N,EAASC,EAAQC,GACnD,IAGI6J,EAHAjuC,EAAQvO,KACR4yC,EAAa,GAAKC,eAAeF,EAAMF,EAAS,IAAI,GACpDgK,EAAe,CAAE6D,QAAQ,GAExB,GAAK1I,YAAYp5C,KAAKk0C,EAAOa,UAAcb,EAAa,QACzD,EAAO+J,EAAc,GAAK3E,yBAAyBpF,EAAOa,QAAU,MACpEkJ,EAAa6D,QAAS,EACjB7D,EAAahE,gBACV/F,EAAO6F,wBACPkE,EAAalE,sBAAwB7F,EAAO6F,wBAKpD,EAAOkE,EAAc,GAAK5E,aAAanF,EAAOa,OAAQ,KAAM,OAEhE,IAMIgN,EANAtD,EAAU,EAAS,UAAWrK,EAAWmB,cAO7C,GALAyI,EAAa,EAAOjO,yBAAyBqE,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IAAO,EAAM3H,KAC7GyR,EAAa+D,YAAc,EAAO3S,eAAehzC,OAAOomB,KAAKu7B,EAAWtN,cAExEuN,EAAagE,SAAWjE,EAAWvN,mBAAmBhuB,GAAK,IAEtD+pB,IAUDyR,EAAa7D,MAAQ,EAAO,CAAC,EAAG,CAAC,EAAG,EAAS6D,EAAa58C,KAAO,QAASo9C,IAC1ER,EAAa5D,MAAQ,EAAO,CAAC,EAAG,CAAC,EAAG,EAAS4D,EAAa58C,KAAO,QAASo9C,IAChD,aAAtBR,EAAa58C,MAAuB6yC,EAAO6E,UAC3C,GAAKuB,sBAAsB,CAAC2D,EAAa5D,MAAO4D,EAAa7D,OAAQ,EAAS,iBAAkBqE,GAAUvK,EAAO6E,eAXrH,GADAgJ,EAAgB,GAAKtI,iBAAiBwE,EAAa58C,KAAM28C,EAAW/N,aAAcmE,EAAWuE,cAAesF,EAAavE,WACrHqI,EAAe,CACfA,EAAgBA,EAAcp8C,QAAQ,UAAW,GAAKw0C,iBACtD,IAAIt0C,EAAQk8C,EAAcl8C,MAAM,KAChCo4C,EAAa7D,MAAQ,GAAKG,cAAc10C,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAM,IAC1Eo4C,EAAa5D,MAAQ,GAAKE,cAAc10C,EAAM,IAAI,EAAM,GAC5D,CASJ,OAAO,SAAUxI,GACb,OAAO0S,EAAMmyC,gBAAgB7kD,EAAO4gD,EAAcD,EACtD,CACJ,EASA4D,EAAaM,gBAAkB,SAAU7kD,EAAOuhB,EAASo/B,GACrD,IAAImE,EACA3I,EACA4I,EACA7E,EACAvjC,EACAnN,EACJ,IAAyC,IAArCxP,EAAMkI,QAAQqZ,EAAQqjC,UACtB,OAAO7kD,IAGPC,EAAQ,EAAOsyC,kBAAkBtyC,EAAOuhB,EAAQojC,YAAahE,EAAWtN,aACxErzC,EAAQ,EAAOsyC,kBAAkBtyC,EAAO2gD,EAAWzN,iBAAkByN,EAAW1N,aAChFjzC,GAAgC,IAAxBA,EAAMkI,QAAQ,KAAclI,EAAMsI,QAAQ,KAAM,OAAStI,EACtC,IAAvBA,EAAMkI,QAAQ,OACdlI,EAAQ,IAAMA,GAElB,IAAIkJ,EAAUlJ,EAAM4H,MAAMy8C,IAC1B,GAAI,EAAkBn7C,GAClB,OAAO87C,IAEX9E,EAAOh3C,EAAQ,GACf67C,EAAY77C,EAAQ,GACpB,IAAI+7C,EAAW/7C,EAAQ,GAyBvB,OAxBAyT,EAAMzT,EAAQ,GACd47C,EAAavjC,EAAQkjC,OAAWvE,IAAS3+B,EAAQw7B,MAAMyC,OAAW7iC,IAAQ4E,EAAQw7B,MAAM0C,MAC3C,IAAvCS,EAAKh4C,QAAQqZ,EAAQw7B,MAAMyC,SAAwD,IAArC7iC,EAAIzU,QAAQqZ,EAAQw7B,MAAM0C,MAC9EtD,EAAY2I,EACRvjC,EAAQw7B,MAAMZ,UACd56B,EAAQy7B,MAAMb,UAClB4I,EAAYA,EAAUz8C,QAAQg8C,GAAY,IACtCW,IACAF,GAAaE,GAEjBz1C,GAAOu1C,GACc,YAAjBxjC,EAAQvd,MAAsBm4C,KAC9B3sC,GAAY,MAEZ+R,EAAQkjC,QAAUljC,EAAQq7B,kBAC1BptC,EAAMvK,WAAWuK,EAAIywC,QAAQ1+B,EAAQkjC,OAChCK,EAAavjC,EAAQw7B,MAAML,sBAAwBn7B,EAAQy7B,MAAMN,sBAAyBn7B,EAAQq7B,kBAEvGr7B,EAAQm7B,wBACRltC,EAAMrL,KAAK+gD,qBAAqBH,EAAWxjC,EAAS/R,EAAKs1C,IAEzDA,IACAt1C,IAAQ,GAELA,CAEf,EACA+0C,EAAaW,qBAAuB,SAAUllD,EAAOuhB,EAAS/R,EAAKs1C,GAC/D,IAAIK,EAAoBnlD,EAAMwI,MAAM,KAKpC,OAJI28C,EAAkB,IAAMA,EAAkB,GAAG3mD,OAAS+iB,EAAQm7B,wBAC9DltC,GAAQA,EAAIywC,QAAQ1+B,EAAQkjC,OACvBK,EAAavjC,EAAQw7B,MAAML,sBAAwBn7B,EAAQy7B,MAAMN,sBAAyBn7B,EAAQm7B,wBAEpGltC,CACX,EACO+0C,CACX,CA3HiC,GCX7Ba,GAA0B,WAC1B,SAASA,EAASjjD,GACdgC,KAAKkhD,SAAW,GAChBlhD,KAAKmhD,cAAgB,CAAC,EAClB,EAAkBnjD,KAGtBgC,KAAKhC,QAAUA,EACnB,CAuLA,OA7KAijD,EAASnmD,UAAUsmD,GAAK,SAAUC,EAAUrhC,EAAShiB,EAASiL,GAC1D,IAAI,EAAkB+W,GAAtB,CAGA,IAAIshC,EAAQtjD,GAAWgC,KAAKhC,QACxBgC,KAAKuhD,SAASF,GACdrhD,KAAKmhD,cAAc,GAAKE,GAAY,CAAC,CAAErhC,QAASA,EAAShiB,QAASsjD,IAGjE,EAAkBr4C,GAMbjJ,KAAKwhD,iBAAiBxhD,KAAKmhD,cAAc,GAAKE,GAAWrhC,IAC/DhgB,KAAKmhD,cAAc,GAAKE,GAAU7lD,KAAK,CAAEwkB,QAASA,EAAShiB,QAASsjD,KANjC,IAA/BthD,KAAKkhD,SAASn9C,QAAQkF,KACtBjJ,KAAKkhD,SAAS1lD,KAAKyN,GACnBjJ,KAAKmhD,cAAc,GAAKE,GAAU7lD,KAAK,CAAEwkB,QAASA,EAAShiB,QAASsjD,EAAOr4C,GAAIA,IATvF,CAeJ,EASAg4C,EAASnmD,UAAU2mD,IAAM,SAAUJ,EAAUrhC,EAAS/W,GAClD,IAAIjJ,KAAKuhD,SAASF,GAAlB,CAGA,IAAI5B,EAAY,EAAS4B,EAAUrhD,KAAKmhD,eACxC,GAAInhC,GACA,IAAK,IAAI7lB,EAAI,EAAGA,EAAIslD,EAAUplD,OAAQF,IAClC,GAAI8O,GACA,GAAIw2C,EAAU3jD,SAAS3B,EAAEY,WAAY,KAAKkO,KAAOA,EAAI,CACjDw2C,EAAUj3B,OAAOruB,EAAG,GACpB,IAAIunD,EAAgB1hD,KAAKkhD,SAASn9C,QAAQkF,IACnB,IAAnBy4C,GACA1hD,KAAKkhD,SAAS14B,OAAOk5B,EAAe,GAExC,KACJ,OAEC,GAAI1hC,IAAYy/B,EAAU3jD,SAAS3B,EAAEY,WAAY,KAAKilB,QAAS,CAChEy/B,EAAUj3B,OAAOruB,EAAG,GACpB,KACJ,cAIG6F,KAAKmhD,cAAc,GAAKE,EArBnC,CAuBJ,EAUAJ,EAASnmD,UAAUyC,OAAS,SAAU8jD,EAAUM,EAAUC,EAAgB7hC,GACtE,GAAI/f,KAAKuhD,SAASF,GACVO,GACAA,EAAe5mD,KAAKgF,KAAM2hD,OAFlC,CAMIA,IACAA,EAASxhD,KAAOkhD,GAEpB,IAAIQ,EAAS,SACTpC,EAAY,EAAS4B,EAAUrhD,KAAKmhD,eAAex8C,MAAM,GAC7D,GAAIzF,OAAO,GAAK2iD,GACZ,OAAO7hD,KAAK8hD,eAAerC,EAAWkC,EAAUC,EAAgB7hC,EAAc,GAG9E,IAAK,IAAIuD,EAAK,EAAGy+B,EAActC,EAAWn8B,EAAKy+B,EAAY1nD,OAAQipB,IAAM,CACrE,IAAIsrB,EAAMmT,EAAYz+B,GACtBsrB,EAAI5uB,QAAQhlB,KAAK4zC,EAAI5wC,QAAS2jD,EAClC,CACIC,GACAA,EAAe5mD,KAAKgF,KAAM2hD,EAflC,CAkBJ,EACAV,EAASnmD,UAAUgnD,eAAiB,SAAUnc,EAAMgc,EAAUC,EAAgB7hC,EAAchV,GACxF,IAAIwD,EAAQvO,KACRgiD,EAAYj3C,IAAU46B,EAAKtrC,OAAS,EACxC,GAAI0Q,EAAQ46B,EAAKtrC,OAAQ,CACrB,IAAI4nD,EAAQtc,EAAK7pC,SAASiP,EAAMhQ,WAAY,KACxCkkB,EAAUgjC,EAAMjiC,QAAQhlB,KAAKinD,EAAMjkD,QAAS2jD,GAChD,GAAI1iC,GAAmC,oBAAjBA,EAAQ3T,KAAqB,CAC/C,IAAKs2C,EACD,OAAO3iC,EAEXA,EAAQ3T,MAAK,SAAUsG,GAGnB,GAFAA,EAAuB,kBAATA,GAAqBrD,EAAM2zC,OAAOtwC,GAAQlJ,KAAKtF,MAAMwO,EAAMrD,EAAM4zC,aAAevwC,EAC9F,EAAO+vC,EAAUA,EAAU/vC,GAAM,IAC7BgwC,IAAkBI,EAIlB,OAAOzzC,EAAMuzC,eAAenc,EAAMgc,EAAUC,EAAgB7hC,EAAchV,EAAQ,GAHlF62C,EAAe5mD,KAAKinD,EAAMjkD,QAAS2jD,EAK3C,IAAG1lB,OAAM,SAAUrqB,GACXmO,GACAA,EAAa/kB,KAAKinD,EAAMjkD,QAAyB,kBAAT4T,GACpCrD,EAAM2zC,OAAOtwC,GAAQlJ,KAAKtF,MAAMwO,EAAMrD,EAAM4zC,aAAevwC,EAEvE,GACJ,KACK,KAAIgwC,IAAkBI,EAIvB,OAAOhiD,KAAK8hD,eAAenc,EAAMgc,EAAUC,EAAgB7hC,EAAchV,EAAQ,GAHjF62C,EAAe5mD,KAAKinD,EAAMjkD,QAAS2jD,EAIvC,CACJ,CACJ,EAEAV,EAASnmD,UAAUqnD,YAAc,SAAUjkD,EAAKrC,GAC5C,IAAIumD,EAAW,uCACf,OAAIpX,GAA6B,kBAAVnvC,GAAgD,OAA1BA,EAAM4H,MAAM2+C,GAC9C,IAAKriD,KAAKlE,GAEd,CACX,EACAolD,EAASnmD,UAAUonD,OAAS,SAAUrmD,GAClC,IACI6M,KAAKtF,MAAMvH,EACf,CACA,MAAOmJ,GACH,OAAO,CACX,CACA,OAAO,CACX,EAMAi8C,EAASnmD,UAAUunD,QAAU,WACzBriD,KAAKmhD,cAAgBnhD,KAAKhC,aAAUrB,CACxC,EAOAskD,EAASnmD,UAAUymD,SAAW,SAAUlmD,GAEpC,OAAmD,IAA5C2E,KAAKmhD,cAAc5lD,eAAeF,IAAmB2E,KAAKmhD,cAAc9lD,GAAMhB,QAAU,CACnG,EAQA4mD,EAASnmD,UAAU0mD,iBAAmB,SAAUL,EAAenhC,GAC3D,IAAK,IAAIsD,EAAK,EAAGg/B,EAAkBnB,EAAe79B,EAAKg/B,EAAgBjoD,OAAQipB,IAAM,CACjF,IAAIsrB,EAAM0T,EAAgBh/B,GAC1B,GAAIsrB,EAAI5uB,UAAYA,EAChB,OAAO,CAEf,CACA,OAAO,CACX,EACOihC,CACX,CAhM6B,GCSlBsB,GAAe,IAAItB,GAInBuB,IAAc,EAMdC,GAAW,CAAC,EAMZC,GAAiB,QAMjBlL,GAAsB,MAC7B,GAAS,CAAC,gBAAiB,cAoC3BmL,GAAsC,WACtC,SAASA,EAAqBC,GACtBA,IACA5iD,KAAKyyC,QAAUmQ,EAEvB,CA4HA,OArHAD,EAAqB7nD,UAAU+nD,cAAgB,SAAUzlC,GACrD,OAAOm1B,EAAWC,WAAWxyC,KAAK8iD,aAAc1lC,GAAW,CAAEvd,KAAM,OAAQ4zC,SAAU,SAAWgP,GACpG,EAOAE,EAAqB7nD,UAAUioD,gBAAkB,SAAU3lC,GAOvD,OANIA,IAAYA,EAAQm6B,WACpBn6B,EAAQm6B,SAAWC,IAEnBxM,KAAc5tB,IAAYA,EAAQm2B,SAClCn2B,EAAQo7B,sBAAwB,GAE7B3B,EAAaC,gBAAgB92C,KAAK8iD,aAAc1lC,GAAW,CAAC,EAAGqlC,GAC1E,EAOAE,EAAqB7nD,UAAUkoD,cAAgB,SAAU5lC,GACrD,OAAOk/B,EAAWC,WAAWv8C,KAAK8iD,aAAc1lC,GAAW,CAAEq2B,SAAU,QAAS5zC,KAAM,QAAU4iD,GACpG,EAOAE,EAAqB7nD,UAAUmoD,gBAAkB,SAAU7lC,GAIvD,OAHI4tB,KAAc5tB,IAAYA,EAAQm2B,SAClCn2B,EAAQo7B,sBAAwB,GAE7B4H,GAAaC,aAAargD,KAAK8iD,aAAc1lC,GAAW,CAAEm2B,OAAQ,KAAOkP,GACpF,EAQAE,EAAqB7nD,UAAUooD,aAAe,SAAUrnD,EAAO62C,GAC3D,OAAO1yC,KAAK+iD,gBAAgBrQ,EAArB1yC,CAA6BnE,EACxC,EAQA8mD,EAAqB7nD,UAAUqoD,WAAa,SAAUtnD,EAAO62C,GACzD,OAAO1yC,KAAK6iD,cAAcnQ,EAAnB1yC,CAA2BnE,EACtC,EAQA8mD,EAAqB7nD,UAAUsoD,UAAY,SAAUvnD,EAAO62C,GACxD,OAAO1yC,KAAKgjD,cAActQ,EAAnB1yC,CAA2BnE,EACtC,EAQA8mD,EAAqB7nD,UAAUuoD,YAAc,SAAUxnD,EAAO62C,GAC1D,OAAO1yC,KAAKijD,gBAAgBvQ,EAArB1yC,CAA6BnE,EACxC,EASA8mD,EAAqB7nD,UAAUwoD,eAAiB,SAAU5Q,EAAQ6Q,GAC9D,OAAO,GAASC,wBAAwBxjD,KAAK8iD,aAAcpQ,EAAQ+P,GAAUc,EACjF,EASAZ,EAAqB7nD,UAAU2oD,iBAAmB,SAAU/Q,EAAQgR,GAChE,OAAO,GAASC,sBAAsB3jD,KAAK8iD,aAAcpQ,EAAQ+P,GAAUiB,EAC/E,EAMAf,EAAqB7nD,UAAU8oD,kBAAoB,WAC/C,OAAO,GAASC,YAAY7jD,KAAK8iD,aAAcL,GACnD,EAMAE,EAAqB7nD,UAAUgoD,WAAa,WACxC,OAAO9iD,KAAKyyC,SAAWiQ,EAC3B,EACOC,CACX,CAlIyC,GA0IlC,SAASmB,GAAWlB,GACvBF,GAAiBE,EACjBL,GAAahlD,OAAO,uBAAwB,CAAE,OAAUmlD,IAC5D,CA+CO,SAASqB,GAAiBvuC,EAAQ3V,GAErC,IAAIkzC,EAAY,GAASF,eAAe4P,GAAUjtC,EAAQ,IAAI,GAAM,GAAO,IAEvEw9B,EAAa,GAASH,eAAe4P,GAAUjtC,EAAQ,IAAI,GAAO,IAClEwuC,EAAY,EAAS,yBAA0BjR,GAC/CkR,EAAcjZ,IAAa,EAAS,gBAAiB+H,GAAa,EAAS,wBAA0BiR,EAAWjR,GAChHc,EAAU,GAASoE,iBAAiBp4C,GAAQ,UAAWmkD,EAAWjR,GAAW,GACjF,OAAO,EAAOkR,EAAa,GAASlL,cAAclF,GAAS,EAAM,IAAI,GAAO,CAAE,cAAiB,GAASF,iBAAiBX,IAC7H,CAwBO,SAASkR,GAAqBC,GAEjC,OAAO,GAAStR,eAAe4P,GAAU,GAAI0B,GAAM,GAAO,GAAO,GACrE,CC/RA,IA0BW,GA1BP,GAASj9C,OACFk9C,GAAuB,CAC9B,QAAS,CACL,EAAK,QACL,EAAK,kBACL,EAAK,yBACL,EAAK,2BACL,EAAK,eACL,EAAK,sBACL,EAAK,SACL,EAAK,SACL,EAAK,sCACL,EAAK,sCACL,EAAK,gCACL,EAAK,UACL,EAAK,WACL,EAAK,iCACL,EAAK,gCACL,EAAK,YACL,EAAK,eAQb,SAAWC,GAGPA,EAAS3K,kBAAoB,qHAC7B2K,EAASC,YAAc,0HACvBD,EAASlO,eAAiB,uBAC1B,IAAIoO,EAAgB,SACpBF,EAAS1L,gBAAkB,IAC3B,IAAItJ,EAAS,CAAC,WAAY,MAAO,QAAS,WACtCmV,EAAe,8BACfxQ,EAAe,CACf,EAAK,GACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,IAAM,IACN,KAAM,SACN,GAAM,KACN,EAAK,OACL,KAAQ,OACR,EAAK,OAETqQ,EAASI,oBAAsB,aAC/B,IAAIC,EAAkB,MACtBL,EAASlR,aAAe,WACxB,IAAIwR,EAAiB,CACjB,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,GAEXN,EAASzM,YAAc,IAAI,GAAO,kCAAmC,KACrEyM,EAASO,oBAAsB,IAAI,GAAO,+BAAgC,KAC1EP,EAASQ,sBAAwB,WACjC,IAAIC,EAAa,CACb,EAAK,aACL,IAAK,YACL,IAAK,aACL,EAAG,QACH,EAAG,QA4kBP,SAAStR,EAAoBC,EAAUT,EAAYnzC,EAAMqzC,EAAW6R,GAChE,IAAIzR,EACA0R,EAAQnlD,GAAQ,OACpB,GAAIklD,EACAzR,EAAaD,EAAyB,CAAEI,SAAUA,GAAYsR,GAAexR,QACzEF,EAAyB,CAAEI,SAAU,KAAO,SAASF,WAExD,CACD,IAAkD,IAA9C8Q,EAASY,cAAclhD,QAAQ0vC,IAE/B,GADAH,EAAa,EAAS0R,EAAQ,WAAavR,EAAUT,GACvC,aAAVgS,EAAsB,CACtB,IAAI5C,EAAW,EAAS,eAAiB3O,EAAUT,GAC/CkS,EAAW,EAAS,eAAiBzR,EAAUT,GACnDM,EAAaA,EAAWnvC,QAAQ,MAAOi+C,GAAUj+C,QAAQ,MAAO+gD,EACpE,OAGA5R,EAAa,EAAS,oCAAsCG,EAAUT,GAEtE,EAAYM,IAA4B,QAAbG,IAC3BH,EAAa,QAErB,CACA,OAAOA,CACX,CAYA,SAAST,EAAeF,EAAMF,EAAS0R,EAAM/U,GACzC,IAAI/jC,EAAM,CAAC,EACP85C,EAAehB,GAAQ,YAE3B,GADA94C,EAAI0oC,aAAe,EAAO1G,cAAcsF,EAAMF,KAAazH,IAAaqZ,EAASe,oBAAsBf,EAASgB,eAC5GjW,EACA/jC,EAAI8rC,cAAgB,EAAS,UAAW9rC,EAAI0oC,kBAE3C,CACD,IAAIuR,EAAata,IAAa,QAAW,mBAAqBma,EAC9D95C,EAAI2nC,WAAa,EAASsS,EAAYj6C,EAAI0oC,aAC9C,CACA,OAAO1oC,CACX,CAYA,SAAS4sC,EAAiBp4C,EAAMmkD,EAAWppD,EAAKs9C,GAC5C,OAAO,EAASr4C,EAAO,wBACnBmkD,GAAa9L,EAAY,cAAgB,aAAct9C,KAASs9C,EAAY,EAASr4C,EAAO,wBAC5FmkD,EAAY,YAAappD,GAAO,GACxC,CAOA,SAASg5C,EAAwBL,GAC7B,IAAIgS,EAAgBhS,EAAO9vC,MAAM4gD,EAASI,qBAC1C,GAAIc,GAAiBva,IAAY,CAC7B,IAAIwa,EAAyC,IAA5BD,EAAc,GAAGlrD,OAAe,MAAQ,OACzD,OAAOk5C,EAAOpvC,QAAQkgD,EAASI,oBAAqBe,EACxD,CACA,OAAOjS,CACX,CAQA,SAASF,EAAyBJ,EAAeR,GAC7C,IAAIc,EAASN,EAAcM,QAAUN,EAAcQ,SAC/CgS,EAAkB,GAAUhT,GAAW,SAAW,IAAMc,EAAQ6Q,IAQpE,OAPKqB,IACDA,EAAkB,EAAS,SAAWlS,EAAQ6Q,KAE9CqB,IACAA,EAAkB7R,EAAwB6R,GAC1CxS,EAAcM,OAASkS,EAAgBthD,QAAQ,KAAM,MAElD8uC,CACX,CASA,SAAS6E,EAAyBrE,GAC9B,IAAI1uC,EAAU0uC,EAAShwC,MAAM4gD,EAASzM,aAClCvsC,EAAM,CAAC,EACPwoC,EAAU9uC,EAAQ,GAAG5D,cAOzB,OANAkK,EAAI6sC,UAAyB,MAAZrE,EAEjBxoC,EAAIxL,KAAOwkD,EAASqB,eAAe7R,GAC/BJ,EAASp5C,OAAS,IAClBgR,EAAIotC,eAAiB38C,SAASiJ,EAAQ,GAAI,KAEvCsG,CACX,CAYA,SAAS0tC,EAAclF,EAAS8R,EAAcC,EAASC,GACnD,IAAIjN,EAAQiN,EAAe,CAAC,EAAI,CAAExK,MAAO,GAAIC,KAAM,IAC/C73C,EAAQowC,EAAQpwC,MAAM4gD,EAASC,aACnC,GAAI7gD,EAAO,CACFoiD,IACDjN,EAAMyC,MAAQyK,EAAqBriD,EAAM,GAAImiD,GAC7ChN,EAAM0C,KAAOwK,EAAqBriD,EAAM,IAAKmiD,GAC7ChN,EAAMmN,aAAetiD,EAAM,IAE/B,IAAIuiD,EAAWviD,EAAM,GACrB,GAAIuiD,GAAYL,EAAc,CAC1B,IAAIM,EAASD,EAASviD,MAAM8gD,GACvB,EAAkB0B,GAInBrN,EAAMQ,gBAAkB,EAHxBR,EAAMQ,gBAAkB6M,EAAO5rD,OAKnCu+C,EAAMU,gBAAkB0M,EAAS3rD,OAAS,CAC9C,CACJ,CACA,OAAOu+C,CACX,CAUA,SAASkN,EAAqB5rD,EAAKknB,GAC/B,OAAIlnB,EACOA,EAAIiK,QAAQkgD,EAAS1L,gBAAiBv3B,GAE1C,EACX,CAWA,SAASk2B,EAAkBH,EAAetH,EAAc4H,GACpD,IAAIziB,EAASyiB,EAAa,IAAMA,EAAa,UACzCyO,EAAc,EAAS,cAAgBrW,EAAe7a,EAAQmiB,IAC9D,EAAS,cAAgBtH,EAAe,qBAAsBsH,IAAkB,IACpF,OAAO+O,CACX,CAWA,SAASrO,EAAatE,EAAQ2D,EAAUt8C,GAIpC,IAHA,IAAIwiB,EAAU,CAAC,EACX+oC,EAAc5S,EAAOlvC,MAAM,KAC3BuN,EAAO,CAAC,QAAS,QAAS,YACrBzX,EAAI,EAAGA,EAAIgsD,EAAY9rD,OAAQF,IAEpCijB,EAAQxL,EAAKzX,IAAMisD,EAAmBD,EAAYhsD,GAAI+8C,EAAUt8C,GAMpE,OAJI,EAAkBwiB,EAAQw7B,SAC1Bx7B,EAAQw7B,MAAQ,EAAO,CAAC,EAAGx7B,EAAQy7B,OACnCz7B,EAAQw7B,MAAMyC,MAAQ,EAAkBnE,GAAY,IAAM95B,EAAQw7B,MAAMyC,MAAQnE,EAASS,YAAcv6B,EAAQw7B,MAAMyC,OAElHj+B,CACX,CAWA,SAASgpC,EAAmB7S,EAAQ2D,EAAUnE,GAC1C,IAAIkE,EAAW,CAAEp3C,KAAM,UAAW24C,sBAAuB,EAAGD,sBAAuB,GAC/E1E,EAAUN,EAAO9vC,MAAM4gD,EAASC,aACpC,GAAI,EAAkBzQ,IAA4B,KAAfA,EAAQ,IAAwB,QAAXN,EAEpD,OADA0D,EAASp3C,UAAOlD,EACTs6C,EAEXA,EAASoE,MAAQxH,EAAQ,GACzBoD,EAASqE,KAAOzH,EAAQ,IACxB,IAAIwS,EAAcxS,EAAQ,GACtByS,IAAeD,EAAY5iD,MAAM,QACjC8iD,GAAkE,IAAlDF,EAAYliD,QAAQ,OAAQ,IAAIJ,QAAQ,KAC5DkzC,EAASyB,aAA4C,IAA9B2N,EAAYtiD,QAAQ,MAAewiD,EAC1DF,EAAcA,EAAYliD,QAAQ,KAAM,IACxC,IAAIqiD,EAAe3S,EAAQ,GAwB3B,IAvBkC,IAA9BwS,EAAYtiD,QAAQ,OACpBkzC,EAAS6D,qBAAuBuL,EAAYhsD,OAASgsD,EAAYtiD,QAAQ,MAExE,EAAkByiD,KACnBvP,EAASuB,sBAAwBgO,EAAa7M,YAAY,KAC1D1C,EAASsB,sBAAwBiO,EAAa7M,YAAY,MAClB,IAApC1C,EAASuB,wBACTvB,EAASuB,sBAAwB,KAEG,IAApCvB,EAASsB,uBAAgCtB,EAASsB,sBAAwBtB,EAASuB,yBACnFvB,EAASsB,sBAAwBtB,EAASuB,wBAG7C,EAAkBtB,GAQnB,EAAOD,EAAUwP,EAAkB,CAACxP,EAASoE,MAAOpE,EAASqE,MAAO,IAAK,OAPzEpE,EAAS8D,gBAAiB,EAC1B,EAAO/D,EAAUwP,EAAkB,CAACxP,EAASoE,MAAOpE,EAASqE,MAAO,IAAKpE,EAASG,iBAC7EJ,EAASc,YACV,EAAOd,EAAUwP,EAAkB,CAACxP,EAASoE,MAAOpE,EAASqE,MAAO,IAAKpE,EAASQ,kBAMrF,EAAkB3E,GAAY,CAC/B,IAAIgE,EAAgBkB,EAAiBhB,EAASp3C,KAAMq3C,EAASE,aAAa3I,aAAcsE,GAAW,GAC/FkE,EAASyB,cAETzB,EAAS+B,eAAiBuN,EAAgB,IAAMrP,EAASE,aAAa9H,cAAcD,EAAO,IAC3F4H,EAASgC,UAAYpC,EAAaqC,mBAAmBnC,EAAc1yC,MAAM,KAAK,KAElF4yC,EAASoE,MAAQpE,EAASoE,MAAMl3C,QAAQ,KAAM,IAC9C8yC,EAASqE,KAAOgL,EAAe,IAAMrP,EAASqE,KAAKn3C,QAAQ,KAAM,IAAM8yC,EAASqE,KAAKn3C,QAAQ,KAAM,GACvG,CACA,OAAO8yC,CACX,CAWA,SAASwP,EAAkBxiD,EAAOyiD,EAAQ1xB,GAEtC,IADA,IAAI5X,EAAU,CAAEi+B,MAAOp3C,EAAM,GAAIq3C,KAAMr3C,EAAM,IACpC9J,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIwsD,EAAO1iD,EAAMnI,SAAS3B,EAAEY,WAAY,KACpC6rD,EAAMD,EAAK5iD,QAAQ2iD,GACvB,IAAc,IAATE,IAAiBA,EAAMD,EAAK5iD,QAAQ,MAAW6iD,EAAMD,EAAKhN,YAAY,MAAS,CAEhFv8B,EAAQ0nC,EAAW3qD,IAAMwsD,EAAK36C,OAAO,EAAG46C,GAAO5xB,EAAS2xB,EAAK36C,OAAO46C,EAAM,GAE1ExpC,EAAQ0nC,EAAW4B,KAAW,EAC9BtpC,EAAQvd,KAAOud,EAAQ26B,WAAa,WAAa,UACjD,KACJ,CACJ,CACA,OAAO36B,CACX,CASA,SAASu2B,EAAiBkT,GACtB,IAAIhrD,GAAS,EAAS,oBAAqBgrD,IAAY,IAAIpjD,MAAM,yBACjE,OAAO5H,EAAQA,EAAM,GAAK,GAC9B,CAYA,SAAS2nD,EAAwB/Q,EAASr1B,EAASu1B,EAAM4Q,GACrD,IAAI3Q,EAAaC,EAAeF,EAAMF,EAASr1B,EAAQ01B,UACnD9H,MACA5tB,EAAUi2B,EAAyBj2B,EAASq1B,IAEhD,IAAIqU,EAAgB1pC,EAAQm2B,QAAUC,EAAoBp2B,EAAQq2B,SAAUb,EAAWI,WAAY51B,EAAQvd,MAC3G,GAAI0jD,EAAe,CAKf,GAJAuD,EAAgBA,EAAc3iD,QAAQqgD,GAAc,SAAU3Q,GAE1D,OAAOG,EAAaH,EACxB,KACoC,IAAhCiT,EAAc/iD,QAAQ,KAAa,CACnC,IAAIgjD,EAAUD,EAAcrjD,MAAM,MAAMpJ,OACpC2sD,OAAkB,EAClBC,EAAY,CAAE,SAAY,CAAC,GAC/BA,EAAUnT,UAAY,EAAO3E,gBAAgByD,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IAChGsU,EAAUxS,SAAW,EAAS,sBAAuB7B,EAAWmB,cAChE,IAAIl4C,EAAQ,IAAIkE,KACZ21C,EAAW75C,EAAM85C,oBACjB9B,EAAWkT,EAAU,EAAK,QAAUE,EAAUxS,SAASoB,WAC3DhC,EAAUA,EAAQ1vC,QAAQ,KAAM8iD,EAAUnT,UAAUvE,eACnC,IAAbmG,EACAsR,EAAkBC,EAAUxS,SAASqB,eAGrCkR,EAAkBzU,EAAWwD,iBAAiBL,EAAU7B,GACxDmT,EAAkBC,EAAUxS,SAASuB,UAAU7xC,QAAQ,QAAS6iD,IAEpEF,EAAgBA,EAAc3iD,QAAQ,OAAQ,IAAM6iD,EAAkB,IAC1E,CACAF,EAAgBA,EAAc3iD,QAAQ,KAAM,GAChD,CACA,OAAO2iD,CACX,CASA,SAASI,EAAcR,EAAQhU,GAC3B,IAA6B,IAAzBgU,EAAO3iD,QAAQ,KAAa,CAE5B,IAAIM,EAAQqiD,EAAOriD,MAAM,KACzBqiD,EAAUriD,EAAM,GAAK,EAAS,mCAAoCquC,GAC9DruC,EAAM,GAAGF,QAAQ,IAAK,EAAS,qCAAsCuuC,GAC7E,MAEIgU,EAASA,EAAOviD,QAAQ,IAAK,EAAS,qCAAsCuuC,IAEhF,OAAOgU,CACX,CAWA,SAAS/C,EAAsBlR,EAASr1B,EAASu1B,EAAM+Q,GACnD,IAGIvK,EAuBA2N,EA1BAlU,EAAaC,EAAeF,EAAMF,EAAS,IAAI,GAC/CgK,EAAe,CAAE6D,QAAQ,GACzB6G,EAAiBvU,EAAWuE,cAE5B3I,EAAS,CAAC,EACV4Y,GAAYhqC,EAAQm2B,QAAU,IAAI9vC,MAAM4gD,EAASO,qBACjD/kD,EAAOwkD,EAASzM,YAAYp5C,KAAK4e,EAAQm2B,QAAUuE,EAAyB16B,EAAQm2B,QAAU,KAAO,CAAC,EACtG2D,EAAW,CAAC,EAChB,GAAIkQ,EAAU,CACVlQ,EAASE,aAAepM,IACpB,EAAO,CAAC,EAAG4H,EAAWuE,eACtB,EAAOhI,gBAAgByD,EAAWmB,aAAc,EAAOxG,mBAAmBoF,IAAO,GACrF,IAAI0U,EAAUrc,IAAa,EAAS,iBAAkB4H,EAAWuE,eAC7DG,EAAkB1E,EAAWuE,cAAe/5B,EAAQm6B,UAAYC,GAAqBp6B,EAAQq6B,WAC7FV,EAAgBkB,EAAiB,WAAYf,EAASE,aAAa3I,aAAcmE,EAAWuE,cAAe,KAAO34C,KAAK4e,EAAQm2B,SACnIwD,EAAgBA,EAAc5yC,QAAQ,UAAWkjD,GACjD,IAAIhjD,EAAQ0yC,EAAc1yC,MAAM,KAChCmqC,EAAO8Y,qBAAqBtc,KAAqB3mC,EAAMhK,OAAS,EAChEm0C,EAAOoK,MAAQ5N,IAAa,EAASnrC,EAAKA,KAAO,QAASsnD,GACtDpO,EAAc10C,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMgjD,GACpD7Y,EAAOqK,MAAQ7N,IAAa,EAASnrC,EAAKA,KAAO,QAASsnD,GACtDpO,EAAc10C,EAAM,IAAI,EAAOgjD,GAC9BD,EAAS,IAAOhqC,EAAQo7B,uBAA0Bp7B,EAAQm7B,wBAC3DY,EAAUJ,EAAchC,EAAc1yC,MAAM,KAAK,IAAI,EAAM,IAAI,GAAM+0C,gBAE7E,CAEA,GAAKiL,EAASzM,YAAYp5C,KAAK4e,EAAQm2B,UAAcn2B,EAAc,OAAG,CAIlE,GAHA,EAAOq/B,EAAc3E,EAAyB16B,EAAQm2B,QAAU,MAChEkJ,EAAa6D,QAAS,EACtBwG,EAAgB,OACZrK,EAAahE,gBAAkBr7B,EAAQo7B,uBAAyBp7B,EAAQm7B,uBAAyBY,EAAS,CAC1G,IAAIoO,EAAiB,EACjB9K,EAAahE,iBACbr7B,EAAQo7B,sBAAwBp7B,EAAQm7B,sBAAwBkE,EAAahE,gBAEjFqO,EAAgBU,EAAsBV,EAAe3N,GAAWsD,EAAahE,gBACzEr7B,EAAQo7B,uBAAyB+O,EAAgBnqC,EAAQm7B,uBAAyBgP,EAC1F,CAOA,GANInqC,EAAQ09B,uBACRgM,EAAgBW,EAAsBX,EAAe1pC,EAAQ09B,uBAE7D19B,EAAQs7B,cACRoO,EAAgBY,EAAgBZ,IAEV,aAAtBrK,EAAa58C,MAAwB48C,EAAa58C,MAAQmrC,IAAa,CACnEA,KAAoC,aAAtByR,EAAa58C,OAC3B2uC,EAAOqK,MAAQ,EAAS4D,EAAa58C,KAAO,QAASsnD,GACrD3Y,EAAOoK,MAAQ,EAAS6D,EAAa58C,KAAO,QAASsnD,IAEzD,IAAIQ,EAAWb,EACfA,EAAgBtY,EAAOqK,MAAMwC,MAAQsM,EAAWnZ,EAAOqK,MAAMyC,MACzD9M,EAAO8Y,oBAAsBtc,OAC7B8b,GAAiB,IAAMtY,EAAOoK,MAAMyC,MAAQsM,EAAWnZ,EAAOoK,MAAM0C,KAE5E,CAC0B,YAAtBmB,EAAa58C,MAAuBmrC,MACpC8b,GAAiB,KAEzB,MAEIA,EAAgB1pC,EAAQm2B,OAAOpvC,QAAQ,KAAM,KAKjD,OAHItJ,OAAOomB,KAAKi2B,GAAU78C,OAAS,IAC/BysD,EAAiBpD,EAAmDoD,EAAzCI,EAAcJ,EAAe5P,IAErD4P,CACX,CASA,SAASU,EAAsB3T,EAAS+T,EAAWC,GAC/ChU,GAAW,IACX,IAAK,IAAIz4B,EAAI,EAAGA,EAAIwsC,EAAWxsC,IAC3By4B,GAAW,IAEf,GAAI+T,EAAYC,EAEZ,IADA,IAAIC,EAAOD,EAAYD,EACdv4C,EAAI,EAAGA,EAAIy4C,EAAMz4C,IACtBwkC,GAAW,IAGnB,OAAOA,CACX,CAQA,SAAS4T,EAAsB5T,EAAShF,GAGpC,IAFA,IAAI+K,EAAO/F,EAAQxvC,MAAM,KACrB0jD,EAAU,GACLrtD,EAAI,EAAGA,EAAIm0C,EAAQn0C,IACxBqtD,GAAW,IAEf,OAAOnO,EAAK,GAAMmO,EAAU,IAAMnO,EAAK,GAAMmO,CACjD,CAOA,SAASL,EAAgB7T,GACrB,IAAI+F,EAAO/F,EAAQxvC,MAAM,KACrB0jD,EAAUnO,EAAK,GACfrD,EAAK,EAAIwR,EAAQ1tD,OAAS,EAC1BkhB,EAAQg7B,GAAa,IAAPA,EAAY,IAAc,IAAPA,EAAW,KAAO,GACvDwR,EAAUxsC,EAAOwsC,EACjBlU,EAAU,GACV,IAAK,IAAIn5C,EAAIqtD,EAAQ1tD,OAAS,EAAGK,EAAI,EAAGA,GAAQ,EAC5Cm5C,EAAU,IAAMkU,EAAQrtD,EAAI,GAAKqtD,EAAQrtD,EAAI,GAAKqtD,EAAQjsD,SAASpB,EAAEK,WAAY,KAAO84C,EAG5F,OADAA,EAAUA,EAAQlvC,MAAM,GACjBi1C,EAAK,GAAM/F,EAAU,IAAM+F,EAAK,GAAM/F,CACjD,CAQA,SAASgQ,EAAYpR,EAASE,GAC1B,IAAIqV,EAAWtD,EACXrV,EAAS,EAAS,iCAAkCsD,GACpDsV,EAAWxV,EAQf,MAPI,MAAQj0C,KAAKypD,KACbA,EAAWA,EAAStjD,MAAM,IAE9BsjD,EAAWA,EAAStjD,MAAM,EAAG,GAAGxD,cAAgB8mD,EAASj8C,OAAO,GAC5DqjC,IACA2Y,EAAW3Y,EAAO,GAAK4Y,IAAa5Y,EAAO4Y,EAAStjD,MAAM,EAAG,KAAO+/C,GAEjEC,EAAe,GAAKqD,EAC/B,CASA,SAASlP,EAAsBD,EAAOqP,EAAWC,GAC7C,IAAIC,EAAYxY,EAAwBuY,GACxC,GAAID,IAAcE,EACd,IAAK,IAAI9kC,EAAK,EAAG+kC,EAAUxP,EAAOv1B,EAAK+kC,EAAQhuD,OAAQipB,IAAM,CACzD,IAAI1R,EAAOy2C,EAAQ/kC,GACnB1R,EAAK0pC,KAAO1pC,EAAK0pC,KAAKn3C,QAAQ+jD,EAAWE,GACzCx2C,EAAKypC,MAAQzpC,EAAKypC,MAAMl3C,QAAQ+jD,EAAWE,EAC/C,CAER,CAOA,SAASnS,EAAcvE,GACnB,IAEI4W,EAFAC,EAAU,IAAIxoD,KAAK2xC,EAAKpB,cAAe,EAAG,GAC1CL,EAAMsY,EAAQnT,SAElBnF,EAAOA,GAAO,EAAIA,EAAMA,EAAM,EAC9B,IAAIuY,EAAS17C,KAAK4jC,OAAOgB,EAAKrkC,UAAYk7C,EAAQl7C,UACa,KAA1DqkC,EAAKiE,oBAAsB4S,EAAQ5S,sBAAgC,OAAY,EACpF,GAAI1F,EAAM,GAEN,GADAqY,EAAUx7C,KAAK4jC,OAAO8X,EAASvY,EAAM,GAAK,GAAK,EAC3CqY,EAAU,GAAI,CACd,IAAIG,EAAQ,IAAI1oD,KAAK2xC,EAAKpB,cAAgB,EAAG,EAAG,GAC5CoY,EAAOD,EAAMrT,SACjBsT,EAAOA,GAAQ,EAAIA,EAAOA,EAAO,EACjCJ,EAAUI,EAAO,EAAI,EAAI,EAC7B,OAGAJ,EAAUx7C,KAAK4jC,OAAO8X,EAASvY,EAAM,GAAK,GAE9C,OAAOqY,CACX,CAloCAjE,EAAS1P,eAAiB,iCAC1B0P,EAASY,cAAgB,CAAC,QAAS,SAAU,OAAQ,QAErDZ,EAASgB,cAAgB,CACrB,MAAS,CACL,UAAa,CACT,UAAa,CACT,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,KAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,cAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,gBACL,gBAAiB,oBACjB,EAAK,cACL,gBAAiB,cAErB,QAAW,CACP,EAAK,KACL,gBAAiB,MACjB,EAAK,KACL,gBAAiB,MAErB,UAAa,CACT,EAAK,IACL,gBAAiB,MACjB,EAAK,IACL,gBAAiB,OAGzB,YAAe,CACX,KAAQ,kBACR,KAAQ,YACR,OAAU,WACV,MAAS,UAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,KAAQ,cACR,KAAQ,aACR,IAAO,WACP,IAAO,UACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,IACL,GAAM,MACN,IAAO,QACP,KAAQ,WACR,KAAQ,QACR,MAAS,WACT,OAAU,cACV,MAAS,YAIrB,QAAW,CACP,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,OACL,EAAK,OACL,EAAK,OACL,GAAM,QACN,GAAM,WACN,GAAM,YAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,KACN,GAAM,KACN,GAAM,MAEV,KAAQ,CACJ,EAAK,WACL,EAAK,QACL,EAAK,UACL,EAAK,WACL,EAAK,WACL,EAAK,YACL,EAAK,QACL,EAAK,UACL,EAAK,UACL,GAAM,UACN,GAAM,eACN,GAAM,kBAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,MAET,QAAW,CACP,EAAK,MAET,UAAa,CACT,EAAK,OAGb,YAAe,CACX,KAAQ,oBACR,KAAQ,cACR,OAAU,aACV,MAAS,eAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,MACL,KAAQ,MACR,MAAS,YACT,OAAU,cACV,QAAW,iBACX,QAAW,UACX,SAAY,aACZ,UAAa,gBACb,SAAY,WACZ,QAAW,UACX,SAAY,eAK5B,cAAiB,CACb,WAAc,gBACd,UAAa,SACb,cAAiB,QAGzB,QAAW,CACP,WAAc,CACV,IAAO,CACH,YAAe,YACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,OACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,gBACf,oBAAqB,MAG7B,uBAA0B,OAC1B,sBAAyB,IACzB,4BAA6B,CACzB,QAAW,IACX,MAAS,IACT,KAAQ,IACR,YAAe,IACf,SAAY,IACZ,UAAa,IACb,YAAe,IACf,uBAA0B,IAC1B,SAAY,IACZ,SAAY,IACZ,IAAO,MACP,cAAiB,KAErB,mCAAoC,CAChC,SAAY,aAEhB,mCAAoC,CAChC,SAAY,UAEhB,oCAAqC,CACjC,SAAY,YACZ,WAAc,yBAElB,sCAAuC,CACnC,SAAY,SAIxBhB,EAASe,oBAAsB,CAC3B,QAAW,CACP,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KAET,aAAgB,aAChB,cAAiB,CACb,QAAW,IACX,MAAS,IACT,SAAY,IACZ,UAAa,IACb,YAAe,IACf,IAAO,MACP,cAAiB,IACjB,SAAY,KAEhB,cAAiB,IACjB,eAAkB,IAClB,cAAiB,CACb,MAAS,IACT,KAAQ,GACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,cAAiB,CACb,MAAS,KACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,IAG3B,MAAS,CACL,WAAc,CACV,GAAM,KACN,GAAM,MAEV,cAAiB,IACjB,KAAQ,CACJ,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,aAGf,OAAU,CACN,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,aAGd,KAAQ,CACJ,EAAK,QAKjBf,EAASjQ,WAAa,CAClB,EAAG,cACH,EAAG,OACH,EAAG,SACH,EAAG,eAKPiQ,EAASlU,MAAQ,SACjBkU,EAAShQ,KAAO,OAIhBgQ,EAASqB,eAAiB,CACtBiD,EAAG,WACHC,EAAG,UACHC,EAAG,UACHC,EAAG,WACHC,EAAG,cAsCP1E,EAAS7Q,oBAAsBA,EAwB/B6Q,EAASxR,eAAiBA,EAgB1BwR,EAASpM,iBAAmBA,EAc5BoM,EAASzQ,wBAA0BA,EAmBnCyQ,EAAShR,yBAA2BA,EAoBpCgR,EAASvM,yBAA2BA,EAkCpCuM,EAAStL,cAAgBA,EAezBsL,EAASyB,qBAAuBA,EAgBhCzB,EAAS/M,kBAAoBA,EAwB7B+M,EAASxM,aAAeA,EA4DxBwM,EAAS+B,mBAAqBA,EA0B9B/B,EAASoC,kBAAoBA,EAY7BpC,EAAS1Q,iBAAmBA,EA6C5B0Q,EAASb,wBAA0BA,EAmGnCa,EAASV,sBAAwBA,EAqBjCU,EAASmD,sBAAwBA,EAejCnD,EAASoD,sBAAwBA,EAmBjCpD,EAASqD,gBAAkBA,EAoB3BrD,EAASR,YAAcA,EAkBvBQ,EAASvL,sBAAwBA,EA2BjCuL,EAASpO,cAAgBA,CAC5B,EAjrCD,CAirCG,KAAa,GAAW,CAAC,ICjtC5B,IAAI+S,GAAc,6BACdC,GAAc,MAcdC,GAAsB,WAStB,SAASA,EAAK9rC,EAASvd,EAAMspD,EAAOC,GAMhCppD,KAAKmkD,MAAO,EAOZnkD,KAAKqpD,WAAY,EACjBrpD,KAAKod,QAAU,CAAC,EACO,kBAAZA,GACPpd,KAAK+T,IAAMqJ,EACXpd,KAAKH,KAAOA,EAAOA,EAAKsB,cAAgB8nD,GACxCjpD,KAAKmkD,OAAQ,EAAkBgF,IAASA,GAEhB,kBAAZ/rC,IACZpd,KAAKod,QAAUA,EACf,EAAMpd,KAAMA,KAAKod,UAErBpd,KAAKH,KAAOG,KAAKH,KAAOG,KAAKH,KAAKsB,cAAgB8nD,GAClDjpD,KAAKopD,iBAAoCzsD,IAArBqD,KAAKopD,YAA6BppD,KAAKopD,YAAcA,CAC7E,CAmHA,OA3GAF,EAAKpuD,UAAUuZ,KAAO,SAAUzC,GAC5B,IAAIrD,EAAQvO,KACZA,KAAK4R,KAAO,EAAkBA,GAAQ5R,KAAK4R,KAAOA,EAClD,IAAI03C,EAAY,CACZC,QAAQ,EACRC,YAAa,MAEbvqC,EAAU,IAAI5B,SAAQ,SAAUC,EAASC,GACzChP,EAAMi7C,YAAc,IAAI10C,eACxBvG,EAAMi7C,YAAYz0C,mBAAqB,WAAcxG,EAAMk7C,YAAYnsC,EAASC,EAAS,EACpF,EAAkBhP,EAAMm7C,UACzBn7C,EAAMi7C,YAAYr1C,OAAS5F,EAAMm7C,QAEhC,EAAkBn7C,EAAMo7C,cACzBp7C,EAAMi7C,YAAYI,WAAar7C,EAAMo7C,YAGpC,EAAkBp7C,EAAMs7C,WACzBt7C,EAAMi7C,YAAYM,QAAUv7C,EAAMs7C,SAGjC,EAAkBt7C,EAAMpR,WACzBoR,EAAMi7C,YAAYxrC,QAAUzP,EAAMpR,SAIjC,EAAkBoR,EAAMw7C,oBACzBx7C,EAAMi7C,YAAYQ,OAAOJ,WAAar7C,EAAMw7C,kBAGhDx7C,EAAMi7C,YAAYp1C,KAAK7F,EAAM1O,KAAM0O,EAAMwF,IAAKxF,EAAM41C,MAE/C,EAAkB51C,EAAMqD,OAA+B,OAAtBrD,EAAM66C,aACxC76C,EAAMi7C,YAAYt0C,iBAAiB,eAAgB3G,EAAM66C,aAAe,mCAExE76C,EAAM07C,aACNX,EAAUE,YAAcj7C,EAAMi7C,YAC9Bj7C,EAAM07C,WAAWX,IAEhBA,EAAUC,QACXh7C,EAAMi7C,YAAYn1C,KAAM,EAAkB9F,EAAMqD,MAAqB,KAAbrD,EAAMqD,KAEtE,IACA,OAAOqN,CACX,EACAiqC,EAAKpuD,UAAU8mD,eAAiB,SAAUhwC,GAItC,OAHI5R,KAAKkqD,WACLlqD,KAAKkqD,UAAUt4C,EAAM5R,MAElB4R,CACX,EACAs3C,EAAKpuD,UAAUqvD,eAAiB,SAAU1/C,GAItC,OAHIzK,KAAKoqD,WACLpqD,KAAKoqD,UAAUpqD,KAAKwpD,aAEjB/+C,CACX,EACAy+C,EAAKpuD,UAAU2uD,YAAc,SAAUnsC,EAASC,GAC5C,IAAI3L,EAAO5R,KAAKwpD,YAAYa,aAC5B,GAAIrqD,KAAKsqD,UAA4C,SAAhCtqD,KAAKsqD,SAASjrB,cAC/B,GAAa,KAATztB,EACAA,OAAOjV,OAGP,IACIiV,EAAOlJ,KAAKtF,MAAMwO,EACtB,CACA,MAAOvO,GAEP,CAG4B,IAAhCrD,KAAKwpD,YAAYx0C,aAEZhV,KAAKwpD,YAAY/sC,QAAU,KAAOzc,KAAKwpD,YAAY/sC,QAAU,KAAoC,MAA5Bzc,KAAKwpD,YAAY/sC,OACvFa,EAAQtd,KAAK4hD,eAAehwC,IAGxB5R,KAAKqpD,UACL9rC,EAAO,IAAI3Z,MAAM5D,KAAKmqD,eAAenqD,KAAKwpD,YAAYe,cAGtDjtC,IAIhB,EAOA4rC,EAAKpuD,UAAU0vD,kBAAoB,SAAUtsD,GACzC,IAAIusD,EACAC,EAEJD,EAAkB,CAAC,EACnB,IAAIE,EAAU3B,GAAY9kD,KAAKlE,KAAKwpD,YAAYoB,yBAChD,MAAOD,EACHF,EAAgBE,EAAQ,GAAGtrB,eAAiBsrB,EAAQ,GACpDA,EAAU3B,GAAY9kD,KAAKlE,KAAKwpD,YAAYoB,yBAIhD,OADAF,EAASD,EAAgBvsD,EAAImhC,eACtB,EAAkBqrB,GAAU,KAAOA,CAC9C,EACOxB,CACX,CAvJyB,GCfrB2B,ICYuB,WAQvB,SAASC,EAAM1tC,EAASvd,EAAMupD,GAM1BppD,KAAKH,KAAO,MAOZG,KAAKqpD,WAAY,EACM,kBAAZjsC,GACPpd,KAAK+T,IAAMqJ,EACXpd,KAAKH,KAAQ,EAAMA,GAA6BG,KAAKH,KAA1BA,EAAKsB,cAChCnB,KAAKopD,YAAcA,GAEd,EAAShsC,IAAYviB,OAAOomB,KAAK7D,GAAS/iB,OAAS,GACxD,EAAM2F,KAAMod,GAEhBpd,KAAKopD,YAAe,EAAMppD,KAAKopD,aAAkC,kCAAnBppD,KAAKopD,WACvD,CAOA0B,EAAMhwD,UAAUuZ,KAAO,SAAUzC,GAC7B,IAAIrD,EAAQvO,KACR+qD,EAAe,CACf,mBAAoB,OACpB,sBAAuB,WACvB,2BAA4B,OAC5B,oCAAqC,YAEzC,IACQ,EAAM/qD,KAAKgrD,eAA+B,QAAdhrD,KAAKH,KACjCG,KAAKgrD,aAAe,IAAIC,QAAQjrD,KAAK+T,IAAK,CAAE1V,OAAQ2B,KAAKH,OAEpD,EAAMG,KAAKgrD,gBAChBhrD,KAAK4R,KAAQ,EAAMA,GAAe5R,KAAK4R,KAAZA,EAC3B5R,KAAKgrD,aAAe,IAAIC,QAAQjrD,KAAK+T,IAAK,CACtC1V,OAAQ2B,KAAKH,KACb8qD,QAAS,CAAE,eAAgB3qD,KAAKopD,aAChC8B,KAAMlrD,KAAK4R,QAGnB,IAAI03C,EAAY,CAAEC,QAAQ,EAAOyB,aAAchrD,KAAKgrD,cAEpD,OADAhrD,KAAKmrD,aAAanrD,KAAK,cAAespD,GAClCA,EAAUC,OACH,MAEXvpD,KAAKorD,cAAgBruC,MAAM/c,KAAKgrD,cACzBhrD,KAAKorD,cAAc9/C,MAAK,SAAUkR,GAErC,GADAjO,EAAM48C,aAAa58C,EAAM,UAAWiO,IAC/BA,EAAS6uC,GACV,MAAM,IAAIznD,MAAM4Y,EAAS+tC,YAG7B,IADA,IAAIe,EAAe,OACVhoC,EAAK,EAAGupB,EAAKhyC,OAAOomB,KAAK8pC,GAAeznC,EAAKupB,EAAGxyC,OAAQipB,IAAM,CACnE,IAAIplB,EAAM2uC,EAAGvpB,IAC8C,IAAvD9G,EAASmuC,QAAQnkD,IAAI,gBAAgBzC,QAAQ7F,KAC7CotD,EAAeP,EAAa7sD,GAEpC,CACA,OAAOse,EAAS8uC,IAEpB,IAAGhgD,MAAK,SAAUsG,GAEd,OADArD,EAAM48C,aAAa58C,EAAM,aAAcqD,EAAMrD,GACtCqD,CAEX,IAAGqqB,OAAM,SAAU54B,GACf,IAAIkoD,EAAY,CAAC,EAKjB,OAJIh9C,EAAM86C,YACN96C,EAAM48C,aAAa58C,EAAM,aAAclL,GACvCkoD,EAAYluC,QAAQE,OAAOla,IAExBkoD,CACX,IACJ,CACA,MAAOloD,GACH,OAAOA,CACX,CACJ,EACAynD,EAAMhwD,UAAUqwD,aAAe,SAAUryB,EAAUlnB,EAAMqQ,GAChD,EAAM6W,IAAiC,oBAAbA,GAC3BA,EAASlnB,EAAMqQ,EAEvB,CAEJ,CArG0B,GDZR,yEACdupC,GAAU,gBACVC,GAAY,eACZC,GAAW,4BACXC,GAAY,yEACZC,GAAe,WACfC,GAAe,8BACfC,GAAe,yBACfC,GAAe,CACfC,MAAO,yCACPC,KAAM,oCACNC,OAAQ,8BACRC,WAAY,2BACZC,OAAQ,wBACRC,OAAQ,wBACRC,KAAM,2BACNC,QAAS,kCAGS,qBAAXrtD,SACPA,OAAOstD,eAAiBttD,OAAOstD,gBAAkB,CAAC,GAOtD,IAAIC,GAAyB,WACzB,SAASA,IACT,CA6VA,OA5VAA,EAAQC,qBAAuB,WAI3B,IAHA,IAAIC,EAAc,CAAEla,QAAS,CAAC,GAC1BxxB,EAAOpmB,OAAOomB,KAAK8qC,IACnBa,EAAa,GACRtpC,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACtD,IAAIplB,EAAMmsC,EAAO/mB,GAEjB,GADAspC,EAAaH,EAAQjgD,UAAU/I,MAAMsoD,GAAa,GAAK7tD,IACnD0uD,EAAY,CAMZ,GALAD,EAAYxsD,KAAwC,QAAhCysD,EAAW,GAAGvtB,cAA0B,QAAUutB,EAAW,GAAGvtB,cACpFstB,EAAYxsD,KAAwC,UAAhCysD,EAAW,GAAGvtB,cAA4B,SAAWstB,EAAYxsD,KACrFwsD,EAAYp8C,QAAUq8C,EAAW,GACjCD,EAAYla,QAAQtyC,KAAOwsD,EAAYla,QAAQ78B,SAAWvJ,UAAUuJ,SAE9D62C,EAAQjgD,UAAU/I,MAAMgoD,IAAY,CACtCkB,EAAYxsD,KAAO,OACnB,KACJ,CACA,IAAIoQ,EAAUk8C,EAAQjgD,UAAU/I,MAAMqoD,IACb,WAArBa,EAAYxsD,MAAqBoQ,IACjCo8C,EAAYp8C,QAAUA,EAAQ,IAElC,KACJ,CACJ,CACA,OAAOo8C,CACX,EAOAF,EAAQI,SAAW,SAAU1iD,GAEzB,IAAI2D,EAAS,CACTyK,MAAO,CACHu0C,UAAW,cAAeC,QAAS,aAAcC,SAAU,aAE/DC,KAAM,CACFH,UAAW,cAAeC,QAAS,YAAaC,SAAU,aAE9Dx0C,IAAK,CACDs0C,UAAW,YAAaC,QAAS,WAAYC,SAAU,WAE3DzD,OAAQ,CACJuD,UAAW,gBAAiBC,QAAS,cAAeC,SAAU,eAGtE,OAAQP,EAAQK,UAAYh/C,EAAO,GAAK3D,GAAO2iD,UAC1CL,EAAQM,QAAUj/C,EAAO,GAAK3D,GAAO4iD,SAAYN,EAAQO,SAA+C,GAApC,IAAMl/C,EAAO,GAAK3D,GAAO6iD,UACxFl/C,EAAO,GAAK3D,GAAO6iD,QACjC,EAMAP,EAAQS,mBAAqB,WACzB,OAAOT,EAAQI,SAAS,QAC5B,EAMAJ,EAAQU,iBAAmB,WACvB,OAAOV,EAAQI,SAAS,MAC5B,EAMAJ,EAAQW,kBAAoB,WACxB,OAAOX,EAAQI,SAAS,OAC5B,EAMAJ,EAAQY,oBAAsB,WAC1B,OAAOZ,EAAQI,SAAS,SAC5B,EAMAJ,EAAQa,SAAW,WACf,OAAQb,EAAQO,UAAYP,EAAQc,OAASd,EAAQM,SAA6B,qBAAX7tD,SACA,IAAhEA,OAAOmN,UAAUG,UAAU6yB,cAAct7B,QAAQ,WACjD7E,OAAOmN,UAAUG,UAAU6yB,cAAct7B,QAAQ,WAAa,CACzE,EAQA0oD,EAAQe,SAAW,SAAUtvD,EAAKuvD,GAC9B,IAAIjB,EAAmC,qBAAXttD,OAAyBA,OAAOstD,eAAiB,CAAC,EAO9E,MANyB,qBAAdngD,WAAoD,aAAvBA,UAAUqhD,UAA2BrhD,UAAUshD,eAAiB,IAAyB,IAApBlB,EAAQM,UAAqBhB,GAAaG,OAAO1tD,KAAK6N,UAAUG,aACzKggD,EAAe,UAAW,EAC1BA,EAAe,aAAc,EAC7BA,EAAe,YAAa,EAC5BA,EAAe,cAAe,GAE9B,qBAAuBA,EAAe,GAAKtuD,GACpCsuD,EAAe,GAAKtuD,GAAOuvD,EAAKjvD,KAAKiuD,EAAQjgD,WAEjDggD,EAAe,GAAKtuD,EAC/B,EACArD,OAAO+mB,eAAe6qC,EAAS,YAAa,CACxCjmD,IAAK,WACD,OAAOimD,EAAQmB,EACnB,EAQAvlC,IAAK,SAAUulC,GACXnB,EAAQmB,GAAKA,EACb1uD,OAAOstD,eAAiB,CAAC,CAC7B,EACAlrC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,OAAQ,CAOnCjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAez9C,MAC3B7P,OAAOstD,eAAez9C,KAAO09C,EAAQC,uBAEzCxtD,OAAOstD,eAAez9C,IACjC,EACAuS,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,OAAQ,CAMnCjmD,IAAK,WACD,OAAOimD,EAAQe,SAAS,OAAQhC,GACpC,EACAlqC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,UAAW,CAMtCjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAeO,SAC1B7tD,OAAOstD,eAAeO,QACzB,iBAAkB7tD,OAAOmN,WACrBnN,QACGA,OAAOmN,WACNnN,OAAOmN,UAAUshD,eAAiB,GAAQ,iBAAkBzuD,OAEtEA,OAAOstD,eAAeO,OACjC,EACAzrC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,YAAa,CAMxCjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAeM,WAC3B5tD,OAAOstD,eAAeM,UAAa,mBAAoB5tD,OAAOmN,UAElEnN,OAAOstD,eAAeM,SACjC,EACAxrC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,cAAe,CAM1CjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAeqB,aAC3B3uD,OAAOstD,eAAeqB,YAAe,qBAAsB3uD,OAAOmN,UAEtEnN,OAAOstD,eAAeqB,WACjC,EACAvsC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,WAAY,CAMvCjmD,IAAK,WACD,OAAOimD,EAAQe,SAAS,WAAY3C,GACxC,EACAvpC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,QAAS,CAMpCjmD,IAAK,WACD,OAAOimD,EAAQe,SAAS,QAAS9B,GACrC,EACApqC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,SAAU,CAMrCjmD,IAAK,WACD,OAAOimD,EAAQe,SAAS,SAAU7B,GACtC,EACArqC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,YAAa,CAMxCjmD,IAAK,WACD,OAAOimD,EAAQe,SAAS,YAAa5B,GACzC,EACAtqC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,YAAa,CAMxCjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAesB,YAClC5uD,OAAOstD,eAAesB,YAAc,EAAY5uD,OAAO6uD,UAAY,EAAY7uD,OAAO8uD,WAC/E,EAAY9uD,OAAO+uD,WAA8B,WAAjB/uD,OAAOgvD,OACvChvD,OAAOstD,eAAesB,WAE1B5uD,OAAOstD,eAAesB,SACjC,EACAxsC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,YAAa,CAMxCjmD,IAAK,WACD,OAAOimD,EAAQe,SAAS,YAAa3B,GACzC,EACAvqC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,kBAAmB,CAM9CjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAe2B,iBAC3BjvD,OAAOstD,eAAe2B,gBAAkB1B,EAAQS,qBAEpDhuD,OAAOstD,eAAe2B,eACjC,EACA7sC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,iBAAkB,CAM7CjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAe4B,gBAC3BlvD,OAAOstD,eAAe4B,eAAiB3B,EAAQW,oBAEnDluD,OAAOstD,eAAe4B,cACjC,EACA9sC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,gBAAiB,CAM5CjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAe6B,eAC3BnvD,OAAOstD,eAAe6B,cAAgB5B,EAAQU,mBAElDjuD,OAAOstD,eAAe6B,aACjC,EACA/sC,YAAY,EACZe,cAAc,IAElBxnB,OAAO+mB,eAAe6qC,EAAS,mBAAoB,CAM/CjmD,IAAK,WACD,OAAI,EAAYtH,OAAOstD,eAAe8B,kBAC3BpvD,OAAOstD,eAAe8B,iBAAmB7B,EAAQY,sBAErDnuD,OAAOstD,eAAe8B,gBACjC,EACAhtC,YAAY,EACZe,cAAc,IAGlBoqC,EAAQmB,GAA0B,qBAAdvhD,UAA4BA,UAAUG,UAAY,GAC/DigD,CACX,CAhW4B,GEPxB8B,GAA8B,WAC9B,SAASA,IACT,CAoHA,OAlHAA,EAAaC,kBAAoB,SAAUtnC,GACvC,MAAI,gBAAiBA,EACVA,EAAQunC,YAAY3gD,QAG3BoZ,EAAQunC,YAAc,CAAC,EAChBvnC,EAAQunC,YAAY3gD,OAAS,GAE5C,EAWAygD,EAAavoD,IAAM,SAAUkhB,EAASwnC,EAAW/vC,EAAUgwC,EAAQC,GAC/D,IACIC,EADAC,EAAYP,EAAaC,kBAAkBtnC,GAG3C2nC,EADAD,EACmBzjB,EAASxsB,EAAUiwC,GAGnBjwC,EAEnBgwC,IACAE,EAAmBA,EAAiBlvD,KAAKgvD,IAG7C,IADA,IAAIxkD,EAAQukD,EAAUrqD,MAAM,KACnBlK,EAAI,EAAGA,EAAIgQ,EAAM9P,OAAQF,IAC9B20D,EAAUtzD,KAAK,CACX2E,KAAMgK,EAAMrO,SAAS3B,EAAEY,WAAY,KACnC4jB,SAAUA,EACVwsB,SAAU0jB,IAEVpC,GAAQsC,KACR7nC,EAAQ1N,iBAAiBrP,EAAMrO,SAAS3B,EAAEY,WAAY,KAAM8zD,GAG5D3nC,EAAQ1N,iBAAiBrP,EAAMrO,SAAS3B,EAAEY,WAAY,KAAM8zD,EAAkB,CAAEG,SAAS,IAGjG,OAAOH,CACX,EASAN,EAAar2B,OAAS,SAAUhR,EAASwnC,EAAW/vC,GAmBhD,IAlBA,IAAImwC,EAAYP,EAAaC,kBAAkBtnC,GAC3C/c,EAAQukD,EAAUrqD,MAAM,KACxBmmC,EAAU,SAAU5nC,GACpB,IACIisD,EADA9jD,GAAS,EAET+jD,GAAkC,IAArBA,EAAUz0D,QACvBy0D,EAAUG,MAAK,SAAUv0D,EAAGP,GACxB,OAAOO,EAAEyF,OAASgK,EAAMrO,SAAS8G,EAAE7H,WAAY,MAAQL,EAAEikB,WAAaA,IACjE5T,EAAQ5Q,EAAG00D,EAAmBn0D,EAAEywC,UAAU,EACnD,KAEW,IAAXpgC,GACA+jD,EAAUtmC,OAAOzd,EAAO,GAExB8jD,GACA3nC,EAAQtK,oBAAoBzS,EAAMrO,SAAS8G,EAAE7H,WAAY,KAAM8zD,EAEvE,EACSjsD,EAAI,EAAGA,EAAIuH,EAAM9P,OAAQuI,IAC9B4nC,EAAQ5nC,EAEhB,EAOA2rD,EAAaW,YAAc,SAAUhoC,GACjC,IAAI4nC,EACAK,EAEJL,EAAYP,EAAaC,kBAAkBtnC,GAE3CioC,EAAW,EAAO,GAAIA,EAAUL,GAChC,IAAK,IAAI30D,EAAI,EAAGA,EAAIg1D,EAAS90D,OAAQF,IACjC+sB,EAAQtK,oBAAoBuyC,EAASrzD,SAAS3B,EAAEY,WAAY,KAAKoF,KAAMgvD,EAASrzD,SAAS3B,EAAEY,WAAY,KAAKowC,UAC5G2jB,EAAUtpD,OAElB,EAUA+oD,EAAaa,QAAU,SAAUloC,EAASwnC,EAAWW,GAEjD,IADA,IAAIP,EAAYP,EAAaC,kBAAkBtnC,GACtC5D,EAAK,EAAGgsC,EAAcR,EAAWxrC,EAAKgsC,EAAYj1D,OAAQipB,IAAM,CACrE,IAAIisC,EAAUD,EAAYhsC,GACtBisC,EAAQpvD,OAASuuD,GACjBa,EAAQpkB,SAASnwC,KAAKgF,KAAMqvD,EAEpC,CACJ,EACOd,CACX,CAvHiC,GChB7BiB,GAAU,gBAcP,SAASn0C,GAAcnB,EAASu1C,GACnC,IAAIvoC,EAAWsoC,GAAQhxD,KAAK0b,GAAW9C,SAASkgB,gBAAgB,6BAA8Bpd,GAAW9C,SAASiE,cAAcnB,GAChI,MAA4B,qBAAjB,IAGXgN,EAAQxO,UAAa+2C,EAAW/2C,UAAY+2C,EAAW/2C,UAAY,QACtC/b,IAAzB8yD,EAAWt1C,YACX+M,EAAQ/M,UAAYs1C,EAAWt1C,gBAEbxd,IAAlB8yD,EAAWxmD,KACXie,EAAQje,GAAKwmD,EAAWxmD,SAEFtM,IAAtB8yD,EAAWplC,QACXnD,EAAQ+B,aAAa,QAASwmC,EAAWplC,aAEpB1tB,IAArB8yD,EAAWnoC,OACXyC,GAAW7C,EAASuoC,EAAWnoC,QAbxBJ,CAgBf,CASO,SAASwoC,GAASC,EAAUl6B,GAG/B,IAFA,IAAI7L,EAAYgmC,GAAan6B,GACzBzxB,EAASkD,OACJoc,EAAK,EAAGupB,EAAK8iB,EAAUrsC,EAAKupB,EAAGxyC,OAAQipB,IAE5C,IADA,IAAIusC,EAAMhjB,EAAGvpB,GACJwsC,EAAK,EAAGC,EAAcnmC,EAAWkmC,EAAKC,EAAY11D,OAAQy1D,IAAM,CACrE,IAAI31C,EAAY41C,EAAYD,GAC5B,GAAI,EAASD,GAAM,CACf,IAAIG,EAAW,EAAS,uBAAwBH,GAC5C,EAAkBG,GAClBvmB,EAAS,uBAAwBtvB,EAAW01C,GAEtC,IAAI7rD,EAAO,MAAQmW,EAAY,MAAO,KAAK3b,KAAKwxD,IACtDvmB,EAAS,uBAAwBumB,EAAW,IAAM71C,EAAW01C,EAErE,MAESA,EAAIjmC,UAAUsN,SAAS/c,IACxB01C,EAAIjmC,UAAU5jB,IAAImU,EAG9B,CAEJ,OAAOw1C,CACX,CASO,SAASM,GAAYN,EAAUl6B,GAElC,IADA,IAAI7L,EAAYgmC,GAAan6B,GACpBnS,EAAK,EAAGupB,EAAK8iB,EAAUrsC,EAAKupB,EAAGxyC,OAAQipB,IAAM,CAClD,IAAIusC,EAAMhjB,EAAGvpB,GACTu4B,EAAO,EAASgU,GAChBK,EAAYrU,EAAO,EAAS,uBAAwBgU,GAAyB,KAAlBA,EAAI11C,UACnE,GAAI+1C,EACA,IAAK,IAAIJ,EAAK,EAAGK,EAAcvmC,EAAWkmC,EAAKK,EAAY91D,OAAQy1D,IAAM,CACrE,IAAI31C,EAAYg2C,EAAYL,GAC5B,GAAIjU,EAAM,CACN,IAAIuU,EAAY,EAAS,uBAAwBP,GAC7CQ,EAAWD,EAAU/rD,MAAM,KAC3B0G,EAAQslD,EAAStsD,QAAQoW,IACd,IAAXpP,GACAslD,EAAS7nC,OAAOzd,EAAO,GAE3B0+B,EAAS,uBAAwB4mB,EAASvyD,KAAK,KAAM+xD,EACzD,MAEIA,EAAIjmC,UAAUsO,OAAO/d,EAE7B,CAER,CACA,OAAOw1C,CACX,CAQA,SAASC,GAAan6B,GAClB,IAAI7L,EAAY,GAOhB,MANuB,kBAAZ6L,EACP7L,EAAUpuB,KAAKi6B,GAGf7L,EAAY6L,EAET7L,CACX,CAQO,SAAS0mC,GAAUppC,GACtB,IAAI2oC,EAAM3oC,EACV,MAAiC,KAAzB2oC,EAAI7mC,MAAMunC,YAAqBV,EAAIW,YAAc,CAC7D,CAUO,SAASC,GAAQC,EAAcC,EAAWC,GAE7C,IADA,IAAIC,EAAUz5C,SAAS05C,yBACdxtC,EAAK,EAAGupB,EAAK6jB,EAAcptC,EAAKupB,EAAGxyC,OAAQipB,IAAM,CACtD,IAAIusC,EAAMhjB,EAAGvpB,GACbutC,EAAQj5B,YAAYi4B,EACxB,CAKA,OAJAc,EAAUtnC,aAAawnC,EAASF,EAAUI,mBACtCH,GACAI,GAAcL,GAEXD,CACX,CAUO,SAASO,GAAOP,EAAcC,EAAWC,GAC5C,IAAIC,EAAUz5C,SAAS05C,yBACvB,GAAIJ,aAAwBQ,SACxB,MAAOR,EAAar2D,OAAS,EACzBw2D,EAAQj5B,YAAY84B,EAAa,SAIrC,IAAK,IAAIptC,EAAK,EAAGupB,EAAK6jB,EAAcptC,EAAKupB,EAAGxyC,OAAQipB,IAAM,CACtD,IAAIusC,EAAMhjB,EAAGvpB,GACbutC,EAAQj5B,YAAYi4B,EACxB,CAMJ,OAJAc,EAAU/4B,YAAYi5B,GAClBD,GACAI,GAAcL,GAEXD,CACX,CAOA,SAASM,GAAcnB,GACnB,IAAIsB,EAAWtB,EAAIz1C,iBAAiB,UACpC+2C,EAAS3vC,SAAQ,SAAU0F,GACvB,IAAInP,EAASX,SAASiE,cAAc,UACpCtD,EAAO+B,KAAOoN,EAAQxO,UACtBtB,SAAS0N,KAAK8S,YAAY7f,GAC1Bq5C,GAAOr5C,EACX,GACJ,CASO,SAASq5C,GAAOlqC,GACnB,IAAI7M,EAAa6M,EAAQ7M,WACzB,GAAIA,EACA,OAAOA,EAAW8kB,YAAYjY,EAEtC,CAQO,SAASgR,GAAOhR,GACnB,IAAI7M,EAAa6M,EAAQ7M,WACzBk0C,GAAaW,YAAYhoC,GACzB7M,EAAW8kB,YAAYjY,EAC3B,CAUO,SAAS6C,GAAW7C,EAAS6C,GAGhC,IAFA,IAAI9I,EAAOpmB,OAAOomB,KAAK8I,GACnB8lC,EAAM3oC,EACD5D,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACtD,IAAIplB,EAAMmsC,EAAO/mB,GACjB,GAAI,EAASusC,GAAM,CACf,IAAIwB,EAAOnzD,EACC,aAARA,IACAmzD,EAAO,YAEXxB,EAAI9lC,WAAW,GAAKsnC,GAAQtnC,EAAW,GAAK7rB,EAChD,MAEI2xD,EAAI5mC,aAAa/qB,EAAK6rB,EAAW,GAAK7rB,GAE9C,CACA,OAAO2xD,CACX,CAWO,SAAS,GAAOyB,EAAUtzD,EAASuzD,GAGtC,YAFgB,IAAZvzD,IAAsBA,EAAUoZ,UACpCk6C,EAAWE,GAAcF,GAClBtzD,EAAQmpB,cAAcmqC,EACjC,CAWO,SAASG,GAAUH,EAAUtzD,EAASuzD,QACzB,IAAZvzD,IAAsBA,EAAUoZ,UACpCk6C,EAAWE,GAAcF,GACzB,IAAII,EAAW1zD,EAAQoc,iBAAiBk3C,GACxC,OAAOI,CACX,CAQA,SAASF,GAAcF,GACnB,IAAIK,EAAY,+DAChB,GAAIL,EAAS7tD,MAAM,YAAc6tD,EAAS7tD,MAAMkuD,GAAY,CAExD,IADA,IAAIC,EAASN,EAASjtD,MAAM,KACnBlK,EAAI,EAAGA,EAAIy3D,EAAOv3D,OAAQF,IAAK,CAEpC,IADA,IAAI03D,EAAOD,EAAO91D,SAAS3B,EAAEY,WAAY,KAAKsJ,MAAM,KAC3CzB,EAAI,EAAGA,EAAIivD,EAAKx3D,OAAQuI,IAC7B,GAAIivD,EAAK/1D,SAAS8G,EAAE7H,WAAY,KAAKgJ,QAAQ,MAAQ,IAC5C8tD,EAAK/1D,SAAS8G,EAAE7H,WAAY,KAAK0I,MAAM,UAAW,CACnD,IAAIquD,EAAUD,EAAK/1D,SAAS8G,EAAE7H,WAAY,KAAKsJ,MAAM,KACrD,GAAIytD,EAAQ,GAAGruD,MAAM,QAAUquD,EAAQ,GAAGruD,MAAMkuD,GAAY,CACxD,IAAII,EAAQF,EAAK/1D,SAAS8G,EAAE7H,WAAY,KAAKsJ,MAAM,KACnD0tD,EAAM,GAAKA,EAAM,GAAG5tD,QAAQ,IAAK,SAAY,KAC7C0tD,EAAK/1D,SAAS8G,EAAE7H,WAAY,KAAOg3D,EAAMj0D,KAAK,IAClD,CACJ,CAGR8zD,EAAO91D,SAAS3B,EAAEY,WAAY,KAAO82D,EAAK/zD,KAAK,IACnD,CACA,OAAO8zD,EAAO9zD,KAAK,IACvB,CACA,OAAOwzD,CACX,CASO,SAASU,GAAQ9qC,EAASoqC,GAC7B,IAAIz3C,EAAKqN,EACT,GAA0B,oBAAfrN,EAAGm4C,QACV,OAAOn4C,EAAGm4C,QAAQV,GAEtB,MAAOz3C,GAAsB,IAAhBA,EAAGo4C,SAAgB,CAC5B,GAAIltD,GAAQ8U,EAAIy3C,GACZ,OAAOz3C,EAEXA,EAAKA,EAAGQ,UACZ,CACA,OAAO,IACX,CAwDO,SAAS63C,GAAkBhrC,EAASI,QACzB3qB,IAAV2qB,GACAzsB,OAAOomB,KAAKqG,GAAO9F,SAAQ,SAAUtjB,GAEjCgpB,EAAQ8B,MAAM9qB,GAAOopB,EAAMppB,EAC/B,GAER,CAUO,SAAS0rB,GAAU1C,EAASirC,EAAYC,GAC3C1C,GAAS,CAACxoC,GAAUirC,GACpBlC,GAAY,CAAC/oC,GAAUkrC,EAC3B,CASO,SAASrtD,GAAQmiB,EAASoqC,GAE7B,IAAIvsD,EAAUmiB,EAAQniB,SAAWmiB,EAAQmrC,mBAAqBnrC,EAAQorC,sBACtE,OAAIvtD,EACOA,EAAQ/J,KAAKksB,EAASoqC,IAG6C,IAAnE,GAAGvtD,QAAQ/I,KAAKoc,SAASgD,iBAAiBk3C,GAAWpqC,EAEpE,CCxaA,IAAIqrC,GAAa,IAAIrrD,OAAO,KAOxBsrD,GAAsB,WAOtB,SAASA,EAAKp1C,EAAS8J,GACnBlnB,KAAKyyD,YAAa,EAClBzyD,KAAK0yD,sBAAuB,EAC5B1yD,KAAKozC,kBAAmB,EACxBpzC,KAAK2yD,wBAAyB,EAC9B3yD,KAAK4yD,qBAAsB,EAC3B5yD,KAAKyvD,WAAa,CAAC,EACnBzvD,KAAK6yD,kBAAoB,CAAC,EAC1B7yD,KAAK8yD,cAAgB,CAAC,EACtB9yD,KAAK+yD,YAAc,CAAC,EACpB/yD,KAAKgzD,YAAa,EAClBhzD,KAAKizD,uBAAwB,EAE7BjzD,KAAKkzD,YAAc,WAAc,EACjClzD,KAAKmzD,uBAAyB,CAAC,EAC/BnzD,KAAKozD,cAAgB,IAAInS,GAASjhD,MAC7B,EAAYknB,KAETlnB,KAAKknB,QADL,kBAAoB,EACL9P,SAAS+P,cAAcD,GAGvBA,EAEd,EAAkBlnB,KAAKknB,WACxBlnB,KAAK4yD,qBAAsB,EAC3B5yD,KAAKqzD,gBAGR,EAAYj2C,IACbpd,KAAKszD,cAAcl2C,GAAS,GAEhCpd,KAAKuzD,aAAc,CACvB,CA4NA,OAlNAf,EAAK13D,UAAUw4D,cAAgB,SAAUj4D,EAAMm4D,GAC3C,IAAIC,EAAgBzzD,KAAK4yD,oBACzB5yD,KAAK4yD,sBAAwBY,EAC7B,EAAMxzD,KAAM3E,IACS,IAAjBm4D,GACA,EAAMxzD,KAAK6yD,kBAAmBx3D,GAC9B2E,KAAK0zD,YAEA1oB,KAAchrC,KAAKyyD,YACxBzyD,KAAK2zD,eAAet4D,GAExB2E,KAAKkzD,cACLlzD,KAAK6yD,kBAAoB,CAAC,EAC1B7yD,KAAK8yD,cAAgB,CAAC,EACtB9yD,KAAK4yD,oBAAsBa,CAC/B,EASAjB,EAAKoB,kBAAoB,SAAUh5D,EAAK+wC,GAEpC,IADA,IAAI1qB,EAAOpmB,OAAOomB,KAAKrmB,GACd0oB,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACtD,IAAIplB,EAAMmsC,EAAO/mB,GACjB,GAAIqoB,EAAO,GAAKztC,aAAgB+I,MAC5B,IAAK,IAAI4lC,EAAK,EAAGijB,EAAKnkB,EAAO,GAAKztC,GAAM2uC,EAAKijB,EAAGz1D,OAAQwyC,IAAM,CAC1D,IAAIoV,EAAQ6N,EAAGjjB,QACQlwC,IAAnBslD,EAAMyR,UACNzR,EAAMyR,UAEd,MAGA/nB,EAAO,GAAKztC,GAAKw1D,UAEzB,CACJ,EACAlB,EAAK13D,UAAU+4D,aAAe,WAC1B7zD,KAAKkzD,cACLlzD,KAAK6yD,kBAAoB,CAAC,EAC1B7yD,KAAK8yD,cAAgB,CAAC,EACtB9yD,KAAKmzD,uBAAyB,CAAC,CACnC,EAMAX,EAAK13D,UAAU44D,SAAW,WAEtB,GADAlB,EAAKoB,kBAAkB5zD,KAAKmzD,uBAAwBnzD,MAChDnF,OAAOi5D,oBAAoB9zD,KAAK6yD,mBAAmBx4D,OAAQ,CAC3D,IAAIo5D,EAAgBzzD,KAAK4yD,oBACrBmB,EAAa/zD,KAAK6yD,kBAClBmB,EAAah0D,KAAK8yD,cACtB9yD,KAAK6zD,eACL7zD,KAAK4yD,qBAAsB,EAC3B5yD,KAAKi0D,kBAAkBF,EAAYC,GACnCh0D,KAAK4yD,oBAAsBa,CAC/B,CACJ,EAEAjB,EAAK13D,UAAU64D,eAAiB,SAAUI,GACtC,GAAK/oB,IAAL,CAGA+oB,EAAaA,GAA0B,CAAC,EACxC,EAAO/zD,KAAK+yD,YAAa,CAAC,EAAGgB,GAAY,GACzC,IAAIG,EAAW,WACXl0D,KAAK2yD,wBAA0BzzD,OAAO,GAAKg1D,GAAUC,cACrDj1D,OAAO,GAAKg1D,GAAUC,YAAYn0D,MAClCA,KAAK+yD,YAAc,CAAC,EANxB,CAQJ,EAEAP,EAAK13D,UAAUs5D,YAAc,SAAUl2D,EAAKm2D,EAAUC,GAClD,GAAItpB,IAAY,CAEZ,IAAI+oB,EAAa,CAAC,EAClBA,EAAW,GAAK71D,GAAOm2D,EACvBr0D,KAAK2zD,eAAeI,EACxB,CACI/zD,KAAK4yD,sBAGT5yD,KAAK8yD,cAAc,GAAK50D,GAAOo2D,EAC/Bt0D,KAAK6yD,kBAAkB,GAAK30D,GAAOm2D,EACnCr0D,KAAKkzD,cACLlzD,KAAKkzD,YAActqB,EAAa5oC,KAAK0zD,SAAS/zD,KAAKK,OACvD,EASAwyD,EAAK13D,UAAU0e,iBAAmB,SAAUk1C,EAAW1uC,GACnDhgB,KAAKozD,cAAchS,GAAGsN,EAAW1uC,EACrC,EAQAwyC,EAAK13D,UAAU8hB,oBAAsB,SAAU8xC,EAAW1uC,GACtDhgB,KAAKozD,cAAc3R,IAAIiN,EAAW1uC,EACtC,EAYAwyC,EAAK13D,UAAUs0D,QAAU,SAAUV,EAAWW,EAAWzN,EAAgB7hC,GACrE,IAAIxR,EAAQvO,KACZ,IAAyB,IAArBA,KAAKuzD,YAAsB,CAC3B,IAAIE,EAAgBzzD,KAAK4yD,oBACzB5yD,KAAK4yD,qBAAsB,EAC3B,IAAIhhD,EAAO5R,KAAKozD,cAAc71D,OAAOmxD,EAAWW,EAAWzN,EAAgB7hC,GAC3E,GAAIwyC,GAAW/zD,KAAKkwD,GAAY,CAC5B,IAAI1uC,EAAU,EAAS0uC,EAAW1uD,MAClC,GAAIggB,EAAS,CACT,IAAI6hC,EAAS,SACb,GAAI3iD,OAAO,GAAK2iD,GAAS,CACrB,IAAI5iC,EAAUe,EAAQhlB,KAAKgF,KAAMqvD,GAC7BpwC,GAAmC,oBAAjBA,EAAQ3T,KACrBs2C,EAID3iC,EAAQ3T,MAAK,SAAUsG,GACfgwC,IACAhwC,EAAuB,kBAATA,GAAqBrD,EAAM6kD,cAAclR,OAAOtwC,GAC1DlJ,KAAKtF,MAAMwO,GAAQA,EACvBgwC,EAAe5mD,KAAKuT,EAAOqD,GAEnC,IAAGqqB,OAAM,SAAUrqB,GACXmO,IACAnO,EAAuB,kBAATA,GAAqBrD,EAAM6kD,cAAclR,OAAOtwC,GAAQlJ,KAAKtF,MAAMwO,GAAQA,EACzFmO,EAAa/kB,KAAKuT,EAAOqD,GAEjC,IAdAA,EAAOqN,EAiBN2iC,GACLA,EAAe5mD,KAAKgF,KAAMqvD,EAElC,MAEIrvC,EAAQhlB,KAAKgF,KAAMqvD,GACfzN,GACAA,EAAe5mD,KAAKgF,KAAMqvD,EAGtC,MACSzN,GACLA,EAAe5mD,KAAKgF,KAAMqvD,EAElC,CAEA,OADArvD,KAAK4yD,oBAAsBa,EACpB7hD,CACX,CACJ,EAMA4gD,EAAK13D,UAAUu4D,YAAc,WAEzB,IAAIkB,EAAc,KAAOv0D,KAAKw0D,gBAAgBn1B,cAC9CqwB,GAAS,CAAC1vD,KAAKknB,SAAU,CAAC,QAASqtC,IAC9B,EAAkBv0D,KAAKknB,QAAQutC,eAIhChrB,EAAS,gBAAiB,CAACzpC,MAAOA,KAAKknB,SAHvClnB,KAAKknB,QAAQutC,cAAcj5D,KAAKwE,KAKxC,EAMAwyD,EAAK13D,UAAUunD,QAAU,WACrB,IAAI9zC,EAAQvO,KAEZA,KAAKknB,QAAQutC,cACTz0D,KAAKknB,QAAQutC,cAAcnwD,QAAO,SAAUnK,GAAK,OAAOA,IAAMoU,CAAO,IACzE0hD,GAAY,CAACjwD,KAAKknB,SAAU,CAAC,KAAOlnB,KAAKw0D,kBACC,IAAtCx0D,KAAKknB,QAAQutC,cAAcp6D,QAE3B41D,GAAY,CAACjwD,KAAKknB,SAAU,CAAC,UAEjClnB,KAAK6zD,eACL7zD,KAAKozD,cAAc/Q,UACnBriD,KAAKuzD,aAAc,CACvB,EACOf,CACX,CApQyB,GA8QlB,SAASkC,GAAa9nB,EAAM+nB,GAC/B,IAAI1yC,EACA9nB,EACA01D,EAAsB,kBAATjjB,EAAoBx1B,SAASw9C,eAAehoB,GAAQA,EACrE,IAAKzyC,EAAI,EAAGA,EAAI01D,EAAI4E,cAAcp6D,OAAQF,IAEtC,GADA8nB,EAAW4tC,EAAI4E,cAAc34D,SAAS3B,EAAEY,WAAY,KAChC,kBAAT45D,EAAmB,CAC1B,IAAIE,EAAW5yC,EAASuyC,gBACxB,GAAIG,IAASE,EACT,OAAO5yC,CAEf,MAGI,GAAIA,aAAoB0yC,EACpB,OAAO1yC,CAKvB,CCjSA,SAAS6yC,GAAU7yC,EAAU8yC,EAAQx4D,EAAcsD,GAK/C,OAHKoiB,EAASwtC,WAAWl0D,eAAew5D,IAAa9yC,EAASwtC,WAAWsF,aAAmBl1D,IACxFoiB,EAASwtC,WAAW,GAAKsF,GAAUxsB,EAAe1oC,EAAM,CAACoiB,EAAU8yC,EAAQx4D,KAExE0lB,EAASwtC,WAAW,GAAKsF,EACpC,CAaA,SAASC,GAAe/yC,EAAU8yC,EAAQx4D,EAAcsD,EAAMo1D,EAAUC,GAGpE,IAFA,IAAI55D,EAAS,GACTlB,EAAMmC,EAAeA,EAAalC,OAAS,EACtCF,EAAI,EAAGA,EAAIC,EAAKD,IAAK,CAC1B,IAAIg7D,EAAUt1D,EAId,GAHIq1D,IACAC,EAAUt1D,EAAKtD,EAAaT,SAAS3B,EAAEY,WAAY,KAAMknB,IAEzDgzC,EAAU,CACV,IAAInoB,EAAOvE,EAAe4sB,EAAS,CAAClzC,EAAU8yC,EAAQ,CAAC,GAAG,IAC1DjoB,EAAKwmB,cAAc/2D,EAAaT,SAAS3B,EAAEY,WAAY,MAAM,GAC7DO,EAAOE,KAAKsxC,EAChB,MAEIxxC,EAAOE,KAAK+sC,EAAe4sB,EAAS,CAAClzC,EAAU8yC,EAAQx4D,EAAaT,SAAS3B,EAAEY,WAAY,MAAM,IAEzG,CACA,OAAOO,CACX,CAQA,SAAS85D,GAAe74D,EAAcw4D,GAClC,OAAO,WAKH,OAHK/0D,KAAKyvD,WAAWl0D,eAAew5D,KAChC/0D,KAAKyvD,WAAW,GAAKsF,GAAUx4D,GAE5ByD,KAAKyvD,WAAW,GAAKsF,EAChC,CACJ,CAQA,SAASM,GAAe94D,EAAcw4D,GAClC,OAAO,SAAUV,GACb,GAAIr0D,KAAKyvD,WAAW,GAAKsF,KAAYV,EAAU,CAE3C,IAAIiB,EAASt1D,KAAKyvD,WAAWl0D,eAAew5D,GAAU/0D,KAAKyvD,WAAWsF,GAAUx4D,EAChFyD,KAAKo0D,YAAYW,EAAQV,EAAUiB,GACnCt1D,KAAKyvD,WAAW,GAAKsF,GAAUV,CACnC,CACJ,CACJ,CAUA,SAASkB,GAAch5D,EAAcw4D,EAAQl1D,GACzC,OAAO,WACH,OAAOi1D,GAAU90D,KAAM+0D,EAAQx4D,EAAcsD,EACjD,CACJ,CASA,SAAS21D,GAAcj5D,EAAcw4D,EAAQl1D,GACzC,OAAO,SAAUw0D,GACbS,GAAU90D,KAAM+0D,EAAQx4D,EAAcsD,GAAMyzD,cAAce,EAC9D,CACJ,CAyCA,SAASoB,GAAmBl5D,EAAcw4D,EAAQl1D,GAC9C,OAAO,WACH,IAAI0O,EAAQvO,KAEZ,IAAKA,KAAKyvD,WAAWl0D,eAAew5D,GAAS,CACzC,IAAIW,EAAgBV,GAAeh1D,KAAM+0D,EAAQx4D,EAAcsD,GAAM,GACrEG,KAAKyvD,WAAW,GAAKsF,GAAUW,CACnC,CACA,IAAI/pD,OAAkChP,IAAvBqD,KAAK21D,eAA+B31D,KAAK21D,cAAc1C,uBAC/DjzD,KAAKizD,sBAeZ,OAbKjzD,KAAKyvD,WAAWsF,GAAQx5D,eAAe,SAAYoQ,GACpD,CAAC,OAAQ,OAAO6V,SAAQ,SAAUo0C,GAC9B,IAAIxzC,EAAa,CACbvmB,MAAOg6D,GAA4BD,EAAYb,EAAQl1D,EAAM0O,EAAMkhD,WAAW,GAAKsF,IAASp1D,KAAK4O,GACjG8T,cAAc,GAElBxnB,OAAO+mB,eAAerT,EAAMkhD,WAAW,GAAKsF,GAASa,EAAYxzC,EACrE,IAGCpiB,KAAKyvD,WAAWsF,GAAQx5D,eAAe,mBACxCV,OAAO+mB,eAAe5hB,KAAKyvD,WAAW,GAAKsF,GAAS,iBAAkB,CAAEl5D,OAAO,IAE5EmE,KAAKyvD,WAAW,GAAKsF,EAChC,CACJ,CAQA,SAASe,GAAmBv5D,EAAcw4D,EAAQl1D,GAC9C,OAAO,SAAUw0D,GACbr0D,KAAK0yD,sBAAuB,EAC5B,IAAIqD,EAAqBf,GAAeh1D,KAAM+0D,EAAQx4D,EAAcsD,GAAM,GACtEm2D,EAAmBhB,GAAeh1D,KAAM+0D,EAAQV,EAAUx0D,GAAM,GACpEG,KAAK0yD,sBAAuB,EAC5B1yD,KAAKo0D,YAAYW,EAAQiB,EAAkBD,GAC3C/1D,KAAKyvD,WAAW,GAAKsF,GAAUiB,CACnC,CACJ,CA2CA,SAASH,GAA4BI,EAAOlB,EAAQl1D,EAAMxE,GAEtD,OAAO,WAEH,IADA,IAAIg5D,EAAW,GACN/wC,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC+wC,EAAS/wC,GAAMxkB,UAAUwkB,GAE7B,IAAI4yC,EAAYl2D,KAAKm2D,SAAWn2D,KAAKo2D,eAAiB,IAAMrB,EAAS,IAAMA,EAAS,IACpF,OAAQkB,GACJ,IAAK,OACD,IAAK,IAAI97D,EAAI,EAAGA,EAAIk6D,EAASh6D,OAAQF,IAAK,CACtC8M,MAAMnM,UAAU,GAAKm7D,GAAOvmD,MAAMrU,EAAM,CAACg5D,EAASv4D,SAAS3B,EAAEY,WAAY,OACzE,IAAIs7D,EAAUC,GAAcJ,GAAa76D,EAAKhB,OAAS,GAAIg6D,EAASv4D,SAAS3B,EAAEY,WAAY,MAAOiF,KAAK21D,cAAeM,GACtHj2D,KAAK2zD,eAAe0C,EAAShC,EAASv4D,SAAS3B,EAAEY,WAAY,MAAM,EAAOk7D,EAC9E,CACA,MACJ,IAAK,MACDhvD,MAAMnM,UAAU,GAAKm7D,GAAOvmD,MAAMrU,GAElC,IAAIk7D,EAAQD,GAAcJ,EAAY76D,EAAKhB,OAAQ,MAAO2F,KAAK21D,cAAeM,GAC9Ej2D,KAAK2zD,eAAe4C,EAAO,CAAEC,UAAW,QAAS,EAAOP,GACxD,MAER,OAAO56D,CACX,CACJ,CASA,SAASi7D,GAAcJ,EAAWr6D,EAAO46D,EAAiBC,GACtD,IAAIC,EAAcT,EAClB,GAAIO,IACAE,EAAc,CAAC,EACfA,EAAY,GAAKT,GAAar6D,EAC1BA,GAA0B,kBAAVA,GAAoB,CACpC,IAAI+6D,EAAS,YACbD,EAAY,GAAKT,GAAW,GAAKU,GAAUF,CAC/C,CAEJ,OAAOC,CACX,CAaO,SAASE,GAASt6D,GACrB,OAAO,SAAUsC,EAAQX,GACrB,IAAI44D,EAAqB,CACrBzuC,IAAKgtC,GAAe94D,EAAc2B,GAClCsI,IAAK4uD,GAAe74D,EAAc2B,GAClCojB,YAAY,EACZe,cAAc,GAGlBxnB,OAAO+mB,eAAe/iB,EAAQX,EAAK44D,GACnCC,GAAsBl4D,EAAQX,EAAK,OAAQ3B,EAC/C,CACJ,CAaO,SAASy6D,GAAQz6D,EAAcsD,GAClC,OAAO,SAAUhB,EAAQX,GACrB,IAAI44D,EAAqB,CACrBzuC,IAAKmtC,GAAcj5D,EAAc2B,EAAK2B,GACtC2G,IAAK+uD,GAAch5D,EAAc2B,EAAK2B,GACtCyhB,YAAY,EACZe,cAAc,GAGlBxnB,OAAO+mB,eAAe/iB,EAAQX,EAAK44D,GACnCC,GAAsBl4D,EAAQX,EAAK,cAAe3B,EAAcsD,EACpE,CACJ,CAqCO,SAASo3D,GAAW16D,EAAcsD,GACrC,OAAO,SAAUhB,EAAQX,GACrB,IAAI44D,EAAqB,CACrBzuC,IAAKytC,GAAmBv5D,EAAc2B,EAAK2B,GAC3C2G,IAAKivD,GAAmBl5D,EAAc2B,EAAK2B,GAC3CyhB,YAAY,EACZe,cAAc,GAGlBxnB,OAAO+mB,eAAe/iB,EAAQX,EAAK44D,GACnCC,GAAsBl4D,EAAQX,EAAK,UAAW3B,EAAcsD,EAChE,CACJ,CAkCO,SAAS,KACZ,OAAO,SAAUhB,EAAQX,GACrB,IAAIg5D,EAAkB,CAClB7uC,IAAK,SAAUgsC,GACX,IAAIC,EAAWt0D,KAAKyvD,WAAW,GAAKvxD,GACpC,GAAIo2D,IAAaD,EAAU,CACvB,IAAI8C,EAAeC,GAAiBp3D,KAAM9B,IACZ,IAA1B,EAAYo2D,IACZ6C,EAAan5D,QAAQ4e,oBAAoBu6C,EAAa7pC,OAAQgnC,GAElE6C,EAAan5D,QAAQwb,iBAAiB29C,EAAa7pC,OAAQ+mC,GAC3Dr0D,KAAKyvD,WAAW,GAAKvxD,GAAOm2D,CAChC,CACJ,EACA7tD,IAAK4uD,QAAez4D,EAAWuB,GAC/BojB,YAAY,EACZe,cAAc,GAElBxnB,OAAO+mB,eAAe/iB,EAAQX,EAAKg5D,GACnCH,GAAsBl4D,EAAQX,EAAK,QACvC,CACJ,CAyBO,SAASm5D,GAAsBC,GAEtC,CAYA,SAASP,GAAsBl4D,EAAQX,EAAKq5D,EAAch7D,EAAcsD,GAChE,EAAYhB,EAAO24D,YACnB34D,EAAO24D,SAAW,CACd91D,MAAO,GACP+1D,aAAc,GACdC,SAAU,GACV5pD,OAAQ,GACR6pD,UAAW,GACXC,iBAAkB,GAClBC,aAAc,GACdC,WAAY,KAIpBj5D,EAAO24D,SAASD,EAAe,KAAK/7D,KAAK,CACrCu8D,aAAc75D,EACd3B,aAAcA,EACdsD,KAAMA,IAGVhB,EAAO24D,SAASD,EAAe,SAAS/7D,KAAK0C,EACjD,CAwFA,SAASk5D,GAAiBp5D,EAASsvB,GAE/B,IAA4C,IAAxCtvB,EAAQzC,eAAe,aACvB,MAAO,CAAEyC,QAASA,EAASsvB,OAAQA,GAGnC,IAAI0qC,EAAU,EAAS,WAAYh6D,GAInC,OAHIg6D,IACA1qC,EAAS0qC,EAAU,IAAM1qC,GAEtB8pC,GAAiB,EAAS,YAAap5D,GAAUsvB,EAEhE,CCllBA,IAAI2qC,GAAwC,WACxC,IAAIC,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxCC,GAA0C,SAAUC,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,EAiBI41B,GAA2B,SAAUC,GAErC,SAASD,EAAUv7C,GACf,IAAI7O,EAAQqqD,EAAO59D,KAAKgF,KAAMod,OAASzgB,IAAcqD,KAcrD,OAVAuO,EAAMsqD,OAAS,CACXC,KAAM,2CACNC,OAAQ,2CACRC,OAAQ,2CACRC,QAAS,2CACTC,UAAW,2CACXC,aAAc,oCACdC,UAAW,oCACXC,WAAY,qCAET9qD,CACX,CAqLA,IAAI+qD,EA4BJ,OAlOArB,GAAUU,EAAWC,GAkBrBU,EAAcX,EAQdA,EAAU79D,UAAUy+D,QAAU,SAAUryC,EAAS9J,GAC7CA,EAAWA,GAAU,CAAC,EACtB,IAAIm5C,EAAQv2D,KAAKw5D,SAASp8C,GAC1B,GAAuB,kBAAZ8J,EAEP,IADA,IAAIyoC,EAAW1oD,MAAMnM,UAAU6J,MAAM3J,KAAKy2D,GAAUvqC,EAAS9P,WACpDkM,EAAK,EAAGm2C,EAAa9J,EAAUrsC,EAAKm2C,EAAWp/D,OAAQipB,IAAM,CAClE,IAAIo2C,EAAYD,EAAWn2C,GAC3BizC,EAAMrvC,QAAUwyC,EAChBJ,EAAYK,eAAepD,EAC/B,MAGAA,EAAMrvC,QAAUA,EAChBoyC,EAAYK,eAAepD,EAEnC,EAQAoC,EAAUiB,KAAO,SAAU1yC,EAASqvC,GAChCrvC,EAAQ8B,MAAM6wC,UAAY,GAC1B3yC,EAAQsR,gBAAgB,aACxB,IAAIshC,EAAc5yC,EAAQE,aAAa,kBACvC,GAAI0yC,EAAa,CACb,IAAIC,EAAUj+D,SAASg+D,EAAa,IACpCE,qBAAqBD,GACrB7yC,EAAQsR,gBAAgB,iBAC5B,CACI+9B,GAASA,EAAM/9C,KACf+9C,EAAM/9C,IAAIxd,KAAKgF,KAAMu2D,EAE7B,EAOAoC,EAAUgB,eAAiB,SAAUpD,GACX,YAAlB0D,IACI1D,EAAM3/B,OACN2/B,EAAM3/B,MAAM57B,KAAKgF,KAAMu2D,GAEvBA,EAAM/9C,KACN+9C,EAAM/9C,IAAIxd,KAAKgF,KAAMu2D,IAIrBA,EAAMlrB,MACN9/B,YAAW,WAAc+tD,EAAYY,eAAe3D,EAAQ,GAAGA,EAAMlrB,OAGrEiuB,EAAYY,eAAe3D,EAGvC,EAOAoC,EAAUuB,eAAiB,SAAU3D,GACjC,IAAIhoD,EAAQvO,KACZu2D,EAAM4D,UAAY,EAClB,IAAIC,EAAO,EACPC,EAAU,EACVC,EAAgB,EAChBC,EAAWhE,EAAMgE,SACrBhE,EAAMrvC,QAAQ+B,aAAa,YAAa,QACxC,IAAIuxC,EAAiB,SAAUL,GAC3B,IACI,GAAIA,EAAW,CAGXG,EAAkC,IAAlBA,EAAsBH,EAAYG,EAClD/D,EAAM4D,UAAaA,EAAY5D,EAAM4D,UAAaG,EAClDA,EAAgBH,GAGXC,GAAQ7D,EAAM3/B,OACf2/B,EAAM3/B,MAAM57B,KAAKuT,EAAOgoD,GAE5B6D,GAAc,EACd,IAAIK,EAAMlE,EAAM4D,UAAYC,EACxB7D,EAAM4D,UAAYI,GAAYhE,EAAM4D,UAAYM,EAAMF,GAAYhE,EAAMrvC,QAAQE,aAAa,cAE7FmvC,EAAMrvC,QAAQ8B,MAAM6wC,UAAYtD,EAAMp2D,KAAO,IAAMo2D,EAAMgE,SAAW,MAAQhE,EAAMmE,eAC9EnE,EAAMoE,UACNpE,EAAMoE,SAAS3/D,KAAKuT,EAAOgoD,GAG/Bv9B,sBAAsBwhC,KAItBR,qBAAqBK,GACrB9D,EAAMrvC,QAAQsR,gBAAgB,kBAC9B+9B,EAAMrvC,QAAQsR,gBAAgB,aAC9B+9B,EAAMrvC,QAAQ8B,MAAM6wC,UAAY,GAC5BtD,EAAM/9C,KACN+9C,EAAM/9C,IAAIxd,KAAKuT,EAAOgoD,GAGlC,MAII8D,EAAUrhC,sBAAsBwhC,GAChCjE,EAAMrvC,QAAQ+B,aAAa,iBAAkBoxC,EAAQt/D,WAE7D,CACA,MAAOiK,GACHg1D,qBAAqBK,GACrB9D,EAAMrvC,QAAQsR,gBAAgB,kBAC1B+9B,EAAMqE,MACNrE,EAAMqE,KAAK5/D,KAAKuT,EAAOvJ,EAE/B,CACJ,EACAw1D,GACJ,EAOA7B,EAAU79D,UAAU0+D,SAAW,SAAUp8C,GACrC,MAAO,CACHjd,KAAMid,EAAQjd,MAAQH,KAAKG,KAC3BkrC,MAAOjuB,EAAQiuB,OAASrrC,KAAKqrC,MAC7BkvB,cAAgC59D,IAArBygB,EAAQm9C,SAAyBn9C,EAAQm9C,SAAWv6D,KAAKu6D,SACpE3jC,MAAOxZ,EAAQwZ,OAAS52B,KAAK42B,MAC7Bpe,IAAK4E,EAAQ5E,KAAOxY,KAAKwY,IACzBoiD,KAAMx9C,EAAQw9C,MAAQ56D,KAAK46D,KAC3BD,SAAUv9C,EAAQu9C,UAAY36D,KAAK26D,SACnCD,eAAgB16D,KAAK64D,OAAOz7C,EAAQs9C,gBAAkB16D,KAAK64D,OAAOz7C,EAAQs9C,gBACrEt9C,EAAQs9C,gBAAkB16D,KAAK64D,OAAO74D,KAAK06D,gBAExD,EAQA/B,EAAU79D,UAAUm5D,kBAAoB,SAAU4G,EAASC,GAE3D,EAOAnC,EAAU79D,UAAU05D,cAAgB,WAChC,MAAO,WACX,EAMAmE,EAAU79D,UAAUunD,QAAU,WAE9B,EAEAiW,GAAW,CACPzB,GAAS,WACV8B,EAAU79D,UAAW,YAAQ,GAChCw9D,GAAW,CACPzB,GAAS,MACV8B,EAAU79D,UAAW,gBAAY,GACpCw9D,GAAW,CACPzB,GAAS,SACV8B,EAAU79D,UAAW,sBAAkB,GAC1Cw9D,GAAW,CACPzB,GAAS,IACV8B,EAAU79D,UAAW,aAAS,GACjCw9D,GAAW,CACP,MACDK,EAAU79D,UAAW,gBAAY,GACpCw9D,GAAW,CACP,MACDK,EAAU79D,UAAW,aAAS,GACjCw9D,GAAW,CACP,MACDK,EAAU79D,UAAW,WAAO,GAC/Bw9D,GAAW,CACP,MACDK,EAAU79D,UAAW,YAAQ,GAChC69D,EAAYW,EAAchB,GAAW,CACjCjB,IACDsB,GACIA,CACX,CApO8B,CAoO5BnG,IAiBK,SAASuI,GAAa7zC,EAAS8zC,EAAep3C,GACjD,IAAIq3C,EAAcC,GAAeF,GACjC,OAA+B,IAA3BC,EAAYE,iBAAoDx+D,IAA3Bs+D,EAAYE,aAA6BC,GACvE,WAEN,GAELl0C,EAAQ+B,aAAa,cAAe,QACpCslC,GAAavoD,IAAIkhB,EAAS,YAAam0C,GAAe,CAAE1vB,OAAQzkB,EAAS8zC,cAAeC,IACxF1M,GAAavoD,IAAIkhB,EAAS,UAAWo0C,GAAiB,CAAE3vB,OAAQzkB,EAAS8zC,cAAeC,EAAar3C,KAAMA,IAC3G2qC,GAAavoD,IAAIkhB,EAAS,aAAcq0C,GAAoB,CAAE5vB,OAAQzkB,EAAS8zC,cAAeC,IAC1FxO,GAAQK,WACRyB,GAAavoD,IAAIkhB,EAAS,gBAAiBq0C,GAAoB,CAAE5vB,OAAQzkB,EAAS8zC,cAAeC,IAE9F,WACH/zC,EAAQsR,gBAAgB,eACxB+1B,GAAar2B,OAAOhR,EAAS,YAAam0C,IAC1C9M,GAAar2B,OAAOhR,EAAS,UAAWo0C,IACxC/M,GAAar2B,OAAOhR,EAAS,aAAcq0C,IAC3ChN,GAAar2B,OAAOhR,EAAS,gBAAiBq0C,GACjD,EACL,CAOA,SAASL,GAAeF,GACpB,IAAIC,EAAc,CACd3J,SAAU0J,GAAiBA,EAAc1J,SAAW0J,EAAc1J,SAAW,KAC7E3lD,OAAQqvD,GAAiBA,EAAcrvD,OAASqvD,EAAcrvD,OAAS,KACvEwvD,WAAYH,GAAiBA,EAAcG,WAC3CK,eAAgBR,GAAiBA,EAAcQ,eAC/CjB,SAAUS,GAAiBA,EAAcT,SAAWS,EAAcT,SAAW,KAEjF,OAAOU,CACX,CAQA,SAASI,GAAcr2D,GACnB,IAAInG,EAAUmG,EAAQ,OAClBssD,EAAWtxD,KAAKg7D,cAAc1J,SAC9BpqC,EAAUoqC,EAAWU,GAAQnzD,EAAQyyD,GAAYzyD,EACrD,MAAKqoB,GAAYlnB,KAAKg7D,eAAiBhJ,GAAQnzD,EAAQmB,KAAKg7D,cAAcrvD,SAA1E,CAGA,IAAImpB,EAAS5N,EAAQiX,wBACjBs9B,EAAUz2D,EAAE02D,MAAQtkD,SAAS8zC,KAAKyQ,WAClCC,EAAU52D,EAAE62D,QAAWzkD,SAAS8zC,KAAK4Q,WAAa1kD,SAASM,gBAC3DN,SAASM,gBAAgBokD,UAAY1kD,SAAS8zC,KAAK4Q,WACnDJ,EAAQ5uD,KAAKnR,IAAImR,KAAK0pC,IAAIilB,EAAU3mC,EAAOinC,MAAOjvD,KAAK0pC,IAAIilB,EAAU3mC,EAAOknC,QAC5EH,EAAQ/uD,KAAKnR,IAAImR,KAAK0pC,IAAIolB,EAAU9mC,EAAOmnC,KAAMnvD,KAAK0pC,IAAIolB,EAAU9mC,EAAOonC,SAC3EC,EAASrvD,KAAKsvD,KAAKV,EAAQA,EAAQG,EAAQA,GAC3CQ,EAAoB,EAATF,EAAa,KACxBzhE,EAAI+gE,EAAU3mC,EAAOinC,KAAOI,EAC5BzzC,EAAIkzC,EAAU9mC,EAAOmnC,IAAME,EAC3Bn8D,KAAKg7D,eAAiBh7D,KAAKg7D,cAAcQ,iBACzC9gE,EAAI,EACJguB,EAAI,EACJ2zC,EAAW,QAEfn1C,EAAQ0C,UAAU5jB,IAAI,YACtB,IAAIu0D,EAAWv6D,KAAKg7D,cAAcT,SAASx/D,WACvCsvB,EAAS,UAAYgyC,EAAW,YAAcA,EAAW,UAAY3hE,EAAI,WAAaguB,EAA7E,2BACiB6xC,EAAW,MACrC+B,EAAgBjhD,GAAc,MAAO,CAAElB,UAAW,mBAAoBkQ,OAAQA,IAClFnD,EAAQ0Q,YAAY0kC,GACpBp9D,OAAO8+B,iBAAiBs+B,GAAer9B,iBAAiB,WACxDq9B,EAActzC,MAAMwB,UAAY,WAC5BtD,IAAYlnB,KAAK2rC,QACjB4iB,GAAavoD,IAAIkhB,EAAS,aAAcq0C,GAAoB,CAAE5vB,OAAQ3rC,KAAK2rC,OAAQqvB,cAAeh7D,KAAKg7D,eAzB3G,CA2BJ,CAQA,SAASM,GAAgBt2D,GACrBu3D,GAAav3D,EAAGhF,KACpB,CAQA,SAASu7D,GAAmBv2D,GACxBu3D,GAAav3D,EAAGhF,KACpB,CASA,SAASu8D,GAAav3D,EAAGskD,GACrB,IAAIiR,EAAWjR,EAAU0R,cAAcT,SACnC17D,EAAUmG,EAAQ,OAClBssD,EAAWhI,EAAU0R,cAAc1J,SACnCpqC,EAAUoqC,EAAWU,GAAQnzD,EAAQyyD,GAAYzyD,EACrD,GAAKqoB,KAAYA,IAAsD,IAA3CA,EAAQ/M,UAAUpW,QAAQ,aAAtD,CAGA,IAAIy4D,EAAiB/K,GAAU,oBAAqBvqC,GAChDo1C,EAAgBE,EAAeA,EAAeniE,OAAS,GACvDiiE,IACAA,EAActzC,MAAMga,QAAU,OAE9BsmB,EAAU3d,SAAWzkB,GACrBqnC,GAAar2B,OAAOhR,EAAS,aAAcq0C,IAG/ChwD,YAAW,WACH+wD,GAAiBA,EAAcjiD,YAC/BiiD,EAAcjiD,WAAW8kB,YAAYm9B,GAEpCp1C,EAAQu1C,uBAAuB,oBAAoBpiE,QACpD6sB,EAAQ0C,UAAUsO,OAAO,YAEzBoxB,EAAU1lC,MACV0lC,EAAU1lC,KAAK5e,EAEvB,GAAGu1D,EApBH,CAqBJ,CACO,IAAIa,IAAkB,EAgBtB,IAAInB,GAAgB,GC5a3B,ICEIyC,GDFAC,GAAgB,SAChBC,GAA8B,WAC9B,SAASA,EAAajxB,GAClB3rC,KAAK68D,cAAgB,GACrB78D,KAAK2rC,OAASA,CAClB,CAiGA,OAzFAixB,EAAa9hE,UAAUgiE,OAAS,SAAUC,EAAiBC,GACvD,IAAIC,EAAYF,EAAgB1iE,OAChC,GAAkB,IAAd4iE,EAAJ,CAIIj9D,KAAK68D,cAAcxiE,QACnB2F,KAAKk9D,kBAAkBH,GAE3B,IAAK,IAAI5iE,EAAI,EAAGA,EAAI8iE,EAAW9iE,IAE3B,IADA,IAAIgjE,EAAOJ,EAAgBjhE,SAAS3B,EAAEY,WAAY,KACzCuoB,EAAK,EAAG85C,EAAeJ,EAAY15C,EAAK85C,EAAa/iE,OAAQipB,IAAM,CACxE,IAAI5pB,EAAS0jE,EAAa95C,GACtB+5C,EAAUF,EAAKG,OACnB,GAAI5jE,GAAUA,EAAOoB,UAAU05D,kBAAoB2I,EAAKG,SAAWt9D,KAAKu9D,eAAeF,GAAU,CAC7F,IAAIG,EAAej1B,EAAe7uC,EAAQyjE,EAAKv7D,MAC3C67D,EAAaz9D,KAAK09D,cAAcL,GAChCF,EAAKQ,WACLl0B,EAASg0B,EAAY/jE,EAAQsG,KAAK2rC,QAGlClC,EAASg0B,EAAYD,EAAcx9D,KAAK2rC,QAE5C,IAAIiyB,EAAeT,EACnBS,EAAaN,OAASG,EACtBz9D,KAAK68D,cAAcrhE,KAAKoiE,EAC5B,CACJ,CAtBJ,MAFI59D,KAAK69D,OA0Bb,EAMAjB,EAAa9hE,UAAU+iE,MAAQ,WAC3B,IAAK,IAAIv6C,EAAK,EAAGupB,EAAK7sC,KAAK68D,cAAev5C,EAAKupB,EAAGxyC,OAAQipB,IAAM,CAC5D,IAAIw6C,EAAUjxB,EAAGvpB,GACZw6C,EAAQH,YACT,EAASG,EAAQR,OAAQt9D,KAAK2rC,QAAQ0W,SAE9C,CACAriD,KAAK68D,cAAgB,EACzB,EAOAD,EAAa9hE,UAAUoiE,kBAAoB,SAAUF,GAMjD,IALA,IAAIzuD,EAAQvO,KACR+9D,EAAcf,EAAWx4D,KAAI,SAAUqS,GAAO,OAAOtI,EAAMmvD,cAAc7mD,EAAIymD,OAAS,IACtFU,EAAkBh+D,KAAK68D,cAAcv4D,QAAO,SAAU5K,GACtD,OAA+C,IAAxCqkE,EAAYh6D,QAAQrK,EAAO4jE,OACtC,IACSh6C,EAAK,EAAG26C,EAAoBD,EAAiB16C,EAAK26C,EAAkB5jE,OAAQipB,IAAM,CACvF,IAAI46C,EAAMD,EAAkB36C,GACvB46C,EAAIP,YACL,EAASO,EAAIZ,OAAQt9D,KAAK2rC,QAAQ0W,UAEtCriD,KAAK68D,cAAcr0C,OAAOxoB,KAAK68D,cAAc94D,QAAQm6D,GAAM,GAC3Dv0B,EAAa3pC,KAAK2rC,OAAQuyB,EAAIZ,OAClC,CACJ,EAOAV,EAAa9hE,UAAU4iE,cAAgB,SAAUv9D,GAC7C,OAAOA,EAAK,GAAGk/B,cAAgBl/B,EAAKiB,UAAU,GAAKu7D,EACvD,EAOAC,EAAa9hE,UAAUyiE,eAAiB,SAAUF,GAC9C,IAAK,IAAI/5C,EAAK,EAAGupB,EAAK7sC,KAAK68D,cAAev5C,EAAKupB,EAAGxyC,OAAQipB,IAAM,CAC5D,IAAI46C,EAAMrxB,EAAGvpB,GACb,GAAI46C,EAAIZ,SAAWt9D,KAAK09D,cAAcL,GAClC,OAAO,CAEf,CACA,OAAO,CACX,EACOT,CACX,CAtGiC,GEE7BuB,GAA+B,WAC/B,SAASA,EAAcxyB,EAAQwqB,EAAU55D,EAAc4mB,GACnDnjB,KAAK0yD,sBAAuB,EAC5B1yD,KAAKyvD,WAAa,CAAC,EACnBzvD,KAAK6yD,kBAAoB,CAAC,EAC1B7yD,KAAKmzD,uBAAyB,CAAC,EAC/BnzD,KAAK8yD,cAAgB,CAAC,EAEtB9yD,KAAKkzD,YAAc,WAAc,EACjClzD,KAAK4zD,kBAAoB,EAAS,oBAAqBpB,IACvDxyD,KAAKo+D,UAAYzyB,EACjB3rC,KAAK21D,cAAgB31D,KAAKo+D,UAAUzI,eAAiB31D,KAAKo+D,UAC1Dp+D,KAAKm2D,SAAWA,EAChBn2D,KAAKq+D,cAAgBl7C,EACrBnjB,KAAKszD,cAAc/2D,GAAc,EACrC,CAwJA,OAhJA4hE,EAAcrjE,UAAUwjE,aAAe,SAAUpkE,EAAKi8D,IACtC,IAARj8D,EACA8F,KAAKo+D,UAAUjL,uBAAuB,GAAKgD,GAAYj8D,SAGhD8F,KAAKo+D,UAAUjL,uBAAuB,GAAKgD,GAElDn2D,KAAKo+D,UAAUE,cACft+D,KAAKo+D,UAAUE,aAAapkE,EAAK8F,KAAKo+D,UAAUjI,SAExD,EAMAgI,EAAcrjE,UAAUyjE,cAAgB,WACpC,GAAIv+D,KAAKo+D,UAAUG,cACfv+D,KAAKo+D,UAAUlL,cACflzD,KAAKo+D,UAAUG,oBAEd,CACD,IAAIC,EAAejzD,WAAWvL,KAAKo+D,UAAU1K,SAAS/zD,KAAKK,KAAKo+D,YAC5DK,EAAc,WACdjzB,aAAagzB,EACjB,EACAx+D,KAAKkzD,YAAcuL,CACvB,CACJ,EAMAN,EAAcrjE,UAAU+4D,aAAe,WACnC7zD,KAAKkzD,cACLlzD,KAAKs+D,cAAa,EAAOt+D,KAAKm2D,UAC9Bn2D,KAAK8yD,cAAgB,CAAC,EACtB9yD,KAAK6yD,kBAAoB,CAAC,CAC9B,EAQAsL,EAAcrjE,UAAUw4D,cAAgB,SAAUj4D,EAAMm4D,IAC/B,IAAjBA,GACA,EAAMxzD,KAAM3E,GACZ2E,KAAKs+D,cAAa,EAAOt+D,KAAKm2D,UAC9Bn2D,KAAK6zD,gBAGL,EAAM7zD,KAAM3E,EAEpB,EAMA8iE,EAAcrjE,UAAU44D,SAAW,WAE/B,GADA1zD,KAAK4zD,kBAAkB5zD,KAAKmzD,uBAAwBnzD,MAChDA,KAAKq+D,cAAe,CACpB,IAAIK,EAAW1+D,KAAKo+D,UAAUp+D,KAAKm2D,UAAUpyD,QAAQ/D,MACjDnF,OAAOomB,KAAKjhB,KAAK6yD,mBAAmBx4D,SACpCovC,EAASzpC,KAAKm2D,SAAW,IAAMuI,EAAU1+D,KAAK6yD,kBAAmB7yD,KAAKo+D,UAAUvL,mBAChFppB,EAASzpC,KAAKm2D,SAAW,IAAMuI,EAAU1+D,KAAK8yD,cAAe9yD,KAAKo+D,UAAUtL,eAEpF,MAEI9yD,KAAKo+D,UAAUvL,kBAAkB7yD,KAAKm2D,UAAYn2D,KAAK6yD,kBACvD7yD,KAAKo+D,UAAUtL,cAAc9yD,KAAKm2D,UAAYn2D,KAAK8yD,cAEvD9yD,KAAK6zD,cACT,EAUAsK,EAAcrjE,UAAUs5D,YAAc,SAAUl2D,EAAKm2D,EAAUC,EAAUqK,GACjE3+D,KAAK21D,cAAc/C,sBAGlB+L,GACD3+D,KAAK2zD,eAAez1D,EAAKm2D,GAAU,GAEvCr0D,KAAK8yD,cAAc,GAAK50D,GAAOo2D,EAC/Bt0D,KAAK6yD,kBAAkB,GAAK30D,GAAOm2D,EACnCr0D,KAAKs+D,cAAa,EAAMt+D,KAAKm2D,UAC7Bn2D,KAAKkzD,cACLlzD,KAAKu+D,gBACT,EACAJ,EAAcrjE,UAAU64D,eAAiB,SAAUz1D,EAAKrC,EAAO+iE,EAAehI,GAC1E,GAAI5rB,MAAehrC,KAAKo+D,UAAU1L,qBAAsB,CACpD,IAAImM,EACA9K,EAAa,CAAC,EACd+K,EAAYF,EAAgB5+D,KAAKo2D,cAAa,GAAQ,IAAMl4D,EAAMA,EAEtE,IAAgC,IAA5B4gE,EAAU/6D,QAAQ,KAAa,CAC/B,IAAIg7D,EAAcD,EAAUz6D,MAAM,KAClCw6D,EAAW9K,EACX,IAAK,IAAI55D,EAAI,EAAGA,EAAI4kE,EAAY1kE,OAAQF,IAAK,CACzC,IAAI6kE,EAAU7kE,IAAM4kE,EAAY1kE,OAAS,EACzCwkE,EAASE,EAAYjjE,SAAS3B,EAAEY,WAAY,MAAQikE,EAAUnjE,EAAQ,CAAC,EACvEgjE,EAAWG,EAAUH,EAAWA,EAASE,EAAYjjE,SAAS3B,EAAEY,WAAY,KAChF,CACJ,MAEIg5D,EAAW,GAAK+K,GAAa,CAAC,EAC9BD,EAAW9K,EAAW,GAAK+K,GAC3B/K,EAAW,GAAK+K,GAAW,GAAK5gE,GAAOrC,EAG3C,GAAImE,KAAKq+D,cAAe,CACpB,IAAIY,EAAiB,YACrBJ,EAAS,GAAKI,GAAkBrI,GAAkB,MACtD,CACA52D,KAAK21D,cAAchC,eAAeI,EACtC,CACJ,EACAoK,EAAcrjE,UAAUs7D,aAAe,SAAUwI,GAE7C,IAAI7zD,EAAQ,GACRorD,EAAWn2D,KAAKm2D,SAEpB,GAAIn2D,KAAKq+D,cAAe,CACpBtzD,EAAQ/K,KAAKo+D,UAAUp+D,KAAKm2D,UAAUpyD,QAAQ/D,MAC9C,IAAIk/D,EAAcl/D,KAAKo+D,UAAUp+D,KAAKm2D,UAAU97D,OAChD6kE,EAAcN,EAAgBM,EAAeA,EAAc,EAAIA,EAAc,EAAI,EACjFn0D,GAAmB,IAAXA,EAAe,IAAMA,EAAQ,IAAMm0D,EAC3C/I,GAAsBprD,CAC1B,CAIA,OAHI/K,KAAK21D,gBAAkB31D,KAAKo+D,YAC5BjI,EAAWn2D,KAAKo+D,UAAUhI,eAAiB,IAAMp2D,KAAKm2D,SAAWprD,GAE9DorD,CACX,EACOgI,CACX,CAxKkC,GDLvBgB,GAAgB,CAAC,OAAQ,YAAa,WAAY,cAAe,iBAAkB,iBAAkB,UAAW,gBAAiB,YAAa,iBAAkB,kBAAmB,QAAS,aAAc,gBAAiB,UAAW,UAAW,cAAe,OAAQ,SAAU,aAAc,UAAW,YAAa,UAAW,cAAe,SAAU,kBAAmB,WAAY,QAAS,YAAa,gBAAiB,iBAAkB,WAAY,cAAe,WAAY,YAAa,MAAO,YACtfC,GAAY,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC/C,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAC7C,IAAK,IAAK,GAAI,IAAK,IAAK,KAOxBC,GAAkC,WAClC,SAASA,EAAiBnhE,GACtB8B,KAAKs/D,aAAc,EACnBt/D,KAAKu/D,YAAa,EAClBv/D,KAAKuQ,QAAU,KACfvQ,KAAK0tD,SAAW,sEAChB1tD,KAAKsI,OAAS,CACVk3D,UAAW,4LAEXC,aAAc,4LAEdC,kBAAmB,+DACnBC,mBAAoB,+DACpBC,WAAY,gEAKhB5/D,KAAK6/D,QAAU,WACX,IAAIC,EAAS,KAOb,SAASz3C,EAAInqB,GAAO4hE,EAAS5hE,CAAK,CAMlC,SAASsI,IAAQ,OAAOs5D,CAAQ,CAChC,MAAO,CACHC,OAAQ13C,EACR23C,OAAQx5D,EAEf,CAnBc,GAuBfxG,KAAKigE,WAAa,WACd,IAAIC,EAAY,gBAMhB,SAAS15D,IAAQ,OAAO05D,CAAW,CACnC,MAAO,CACHF,OAAQx5D,EAEf,CAXiB,GAYlBxG,KAAK6/D,QAAQE,OAAO7hE,EACxB,CAoJA,OAhJAmhE,EAAiBvkE,UAAU2B,SAAW,WAClC,IAAI0jE,EAAa,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC/D,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/DC,EAAS,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3D,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IACnE,IAAKpgE,KAAKs/D,aAAgB11B,IAAoB,EAASy2B,GAAcjB,IAAYx1B,KAAqB,EAAS,SAAUA,GAAmB,CACxI,IAAI02B,OAAc,EACdC,OAAc,EAClB,GAAKvgE,KAAK6/D,SAAW7/D,KAAK6/D,QAAQG,UAAchgE,KAAKigE,YAA2C,kBAA7BjgE,KAAKigE,WAAWD,SAA+B,CAC9G,IAAI1kE,EAAS0E,KAAKwgE,iBAClB,GAAIllE,GAAUA,EAAOjB,OACjB,IAAK,IAAIipB,EAAK,EAAGm9C,EAAWnlE,EAAQgoB,EAAKm9C,EAASpmE,OAAQipB,IAAM,CAC5D,IAAIqqB,EAAM8yB,EAASn9C,GACnB,IAAKtjB,KAAK0tD,SAASlvD,KAAKmvC,EAAI+f,WAAa/f,EAAI+yB,gBACzCJ,EAActgE,KAAKsI,OAAOq3D,wBAEzB,IAA2C,IAAvChyB,EAAIp9B,QAAQxM,QAAQ/D,KAAKuQ,SAC9B+vD,EAActgE,KAAKsI,OAAOo3D,kBAC1BY,EAAcA,EAAYn8D,QAAQ,mBAAoBwpC,EAAIp9B,SAC1D+vD,EAAcA,EAAYn8D,QAAQ,mBAAoBnE,KAAKuQ,QAAU,WAEpE,GAAIo9B,EAAIgzB,WAAY,CACrB,IAAIC,EAAU,IAAI7gE,KAAK4tC,EAAIgzB,YACvBE,EAAW,IAAI9gE,KACnB,KAAI6gE,IAAYC,GAAYD,EAAUC,GAIlC,MAHAP,EAActgE,KAAKsI,OAAOm3D,YAKlC,CACJ,MAGAa,EAActgE,KAAKsI,OAAOs3D,UAElC,KACK,CACD,IAAIkB,EAAiB,EAAST,GAAcF,GAAav2B,GACzD22B,EAAc,EAASF,GAAcD,GAASx2B,GAE1C02B,EADAQ,GAAqC,KAAnBA,EACJA,EAGA9gE,KAAKsI,OAAOk3D,SAElC,CACA,GAAIc,GAAmC,qBAAblpD,WAA6B,EAAkBA,UAAW,CAChFslD,GAAc6D,GAA+B,KAAhBA,EAAsBA,EAAc,0JACjE,IAAIQ,EAAW1lD,GAAc,MAAO,CAChC3C,UAAW,qxCAAuxC4nD,EAAvxC,2EAAu3C5D,GAAa,iCAEn5CqE,EAAS93C,aAAa,QAAS,4dAC/B7R,SAAS8zC,KAAKtzB,YAAYmpC,GAC1B/gE,KAAKu/D,YAAa,CACtB,CACAv/D,KAAKs/D,aAAc,EACnB71B,EAAS42B,GAAcjB,IAAYp/D,KAAKs/D,YAAa11B,EACzD,CACA,OAAO5pC,KAAKu/D,UAChB,EACAF,EAAiBvkE,UAAUkmE,iBAAmB,SAAU9iE,GACpD,IACI,OAAO+iE,KAAK/iE,EAChB,CACA,MAAOmF,GACH,MAAO,EACX,CACJ,EAMAg8D,EAAiBvkE,UAAU0lE,eAAiB,WACxC,IACI,IAAIV,EAAS,GACToB,EAAO,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAC9D,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QACxE,QAAS,QAAS,QAAS,QAAS,QAAS,SAC7CC,EAAe,GACfC,EAAc,GACdV,GAAkB,EAClBW,GAAW,EACXrhE,KAAK6/D,QAAQG,SACbF,EAAS9/D,KAAK6/D,QAAQG,UAGtBqB,GAAW,EACXvB,EAAS9/D,KAAKigE,WAAWD,SAAS37D,MAAM,iBAAiB,IAG7D,IADA,IAAIi9D,EAAcxB,EAAOz7D,MAAM,KACtBif,EAAK,EAAGi+C,EAAgBD,EAAah+C,EAAKi+C,EAAclnE,OAAQipB,IAAM,CAC3E,IAAIk+C,EAAOD,EAAcj+C,GACrBm+C,EAAYzhE,KAAKghE,iBAAiBQ,GACtC,GAAKC,EAAL,CAGA,IAAIvkE,EAAI,EACJwkE,EAAQ,GACZ,GAAKL,EASA,CACD,IAAIlkB,EAAUskB,EAAUA,EAAUpnE,OAAS,GACvCsnE,EAAe,GACnB,IAASxnE,EAAI,EAAGA,EAAIsnE,EAAUpnE,OAAQF,IAClCwnE,EAAa7lE,SAAS3B,EAAEY,WAAY,KAAO0mE,EAAU3lE,SAAS3B,EAAEY,WAAY,KAAKmzB,WAAW,GAAKivB,EAAQjvB,WAAW,GAExH,IAAS/zB,EAAI,EAAGA,EAAIwnE,EAAatnE,OAAQF,IACrCunE,GAAS5+D,OAAO8+D,aAAaD,EAAa7lE,SAAS3B,EAAEY,WAAY,KAEzE,MAjBI,IAAK,IAAIZ,EAAI,EAAGA,EAAIsnE,EAAUpnE,OAAQF,IAAK+C,IAAK,CACxCA,IAAMgkE,EAAK7mE,SACX6C,EAAI,GAER,IAAIwP,EAAI+0D,EAAUvzC,WAAW/zB,GAC7BunE,GAAS5+D,OAAO8+D,aAAal1D,EAAKw0D,EAAKplE,SAASoB,EAAEnC,WAAY,MAAQ,GAC1E,CAYAiF,KAAK0tD,SAASlvD,KAAKkjE,IACnBP,EAAeO,EAAMr9D,MAAM,KAC3Bq8D,GAAkB,EAEdS,EAAa9mE,OAAS,GACtB+mE,EAAY5lE,KAAK,CAAEkyD,SAAUyT,EAAa,GACtC5wD,QAAS4wD,EAAa,GACtBR,WAAYQ,EAAa,MAG5BO,GAASA,EAAMr9D,MAAM,KAAKhK,OAAS,IACxCqmE,GAAkB,EAjCtB,CAmCJ,CACA,OAAIA,IAAoBU,EAAY/mE,OACzB,CAAC,CAAEqmE,gBAAiBA,IAGpBU,EAAY/mE,OAAS+mE,EAAc,IAElD,CACA,MAAO/9D,GACH,OAAO,IACX,CACJ,EACOg8D,CACX,CA3MqC,GA4MjCwC,GAAmB,IAAIxC,GAO3B,SAASgB,GAAcyB,GAEnB,IADA,IAAIz2D,EAAM,GACDiY,EAAK,EAAGy+C,EAASD,EAAMx+C,EAAKy+C,EAAO1nE,OAAQipB,IAAM,CACtD,IAAIvpB,EAAMgoE,EAAOz+C,GACjBjY,GAAOvI,OAAO8+D,aAAa7nE,EAC/B,CACA,OAAOsR,CACX,CAOO,SAAS22D,GAAgB9jE,GAC5B2jE,GAAmB,IAAIxC,GAAiBnhE,EAC5C,CACO,IEnNH+jE,GFmNOC,GAAkB,SAAUhkE,GAInC,OAHIA,GACA8jE,GAAgB9jE,GAEb2jE,GAAiBplE,UAC5B,EAKW0lE,GAAuB,WAC9B,IAAIC,EAAiB,mvuDAAqyuD1F,GAAa,kzBACv0uD,GAAwB,qBAAbtlD,WAA6B,EAAkBA,UAAW,CACjE,IAAIirD,EAAkBhnD,GAAc,MAAO,CACvC3C,UAAW0pD,IAEfhrD,SAAS8zC,KAAKtzB,YAAYyqC,EAC9B,CACJ,EElQI,GAAwC,WACxC,IAAInK,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxC,GAA0C,SAAUE,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,EAUIu/B,GAAiB,EAEjBC,GAAiB,EAEjBC,GAAgB,EAEhBC,IAAU,EAEVC,IAAgB,EACTC,IAA+B,EAa1C,IAAIC,GAA2B,SAAUhK,GAQrC,SAASgK,EAAUxlD,EAASk0C,GACxB,IAAI/iD,EAAQqqD,EAAO59D,KAAKgF,KAAMod,EAASk0C,IAAatxD,KAgCpD,OA/BAuO,EAAMs0D,SAAW91B,IAMjBx+B,EAAMu0D,kBAAmB,EACzBv0D,EAAMw0D,SAAU,EAChBx0D,EAAMy0D,eAAgB,EAClB,EAAkBz0D,EAAM00D,YACxB10D,EAAM+kD,cAAc,CAAE,UAAa9Q,KAAe,GAElD,EAAkBj0C,EAAMiH,SACxBjH,EAAM+kD,cAAc,CAAE,OAAU5Q,KAAkB,GAEtDn0C,EAAM20D,aAAe,IAAItG,GAAaruD,GACtCA,EAAM40D,cAAgB,IAAIliB,GAAS1yC,GAEnCg0C,GAAanB,GAAG,uBAAwB7yC,EAAM60D,eAAgB70D,EAAOA,EAAMs0D,UAErD,qBAAX3jE,QAA8C,qBAAbkY,UAA6B8qD,OACf,IAAlD/C,GAAcp7D,QAAQwK,EAAMimD,mBAC5BgO,IAAgC,EAC5BA,GAAgB,IAChBC,IAAU,IAIjB,EAAYnR,IACb/iD,EAAM80D,WAEH90D,CACX,CAmYA,OA5aA,GAAUq0D,EAAWhK,GA0CrBgK,EAAU9nE,UAAUiiE,gBAAkB,WAClC,MAAO,EACX,EAMA6F,EAAU9nE,UAAUunD,QAAU,WACtBriD,KAAKuzD,cAGLvzD,KAAKsjE,mBACLtjE,KAAKujE,iBAETvjE,KAAKmjE,cAAc9gB,UACfriD,KAAKgzD,aAGT/C,GAAY,CAACjwD,KAAKknB,SAAU,CAAC,cAC7BlnB,KAAKovD,QAAQ,YAAa,CAAE7F,QAAQ,IACpCqP,EAAO99D,UAAUunD,QAAQrnD,KAAKgF,MAC9BA,KAAKkjE,aAAarF,QAClBtb,GAAad,IAAI,uBAAwBzhD,KAAKojE,eAAgBpjE,KAAK6iE,WACvE,EAMAD,EAAU9nE,UAAU0oE,QAAU,WAC1BxjE,KAAKgzD,YAAa,EAClBhzD,KAAKkjE,aAAarF,QAClB79D,KAAKqiD,UACLriD,KAAK6zD,eACL7zD,KAAKmjE,cAAgB,IAAIliB,GAASjhD,MAClCA,KAAKyjE,YACLzjE,KAAK0jE,gBACL1jE,KAAKs8B,SACLt8B,KAAKgzD,YAAa,CACtB,EACA4P,EAAU9nE,UAAU6oE,YAAc,WAC1B3jE,KAAK4jE,QAAU5jE,KAAKgjE,eACpBhjE,KAAK4jE,OAEb,EAMAhB,EAAU9nE,UAAU+oE,eAAiB,WACjC,OAAI7jE,KAAKgjE,cAEEhjE,KAAK8jE,cAGL9jE,KAAKknB,OAEpB,EAOA07C,EAAU9nE,UAAUipE,aAAe,WAC/B,IAAIC,EAAQhkE,KAAKw0D,gBAAkBx0D,KAAKknB,QAAQje,GAChD,OAAI05D,GACOzjE,OAAO+kE,aAAaC,QAAQF,EAAQhkE,KAAKmkE,4BAGzCjlE,OAAO+kE,aAAaC,QAAQF,EAE3C,EAOApB,EAAU9nE,UAAUuoE,SAAW,SAAU/R,GAOrC,GANK,EAAkBA,IAAmC,kBAAf,EAGjC,EAAkBA,KACxBtxD,KAAKknB,QAAUoqC,GAHftxD,KAAKknB,QAAU,GAAOoqC,EAAUl6C,WAK/B,EAAkBpX,KAAKknB,SAAU,CAClC,IAAIqtC,EAAc,KAAOv0D,KAAKw0D,gBAAgBn1B,cAC9CqwB,GAAS,CAAC1vD,KAAKknB,SAAU,CAAC,YAAaqtC,IACvCv0D,KAAK4yD,qBAAsB,EACvB5yD,KAAK+iE,UAAY/iE,KAAKknB,QAAQje,KAC9BjJ,KAAKknB,QAAQje,GAAKjJ,KAAKirC,YAAYjrC,KAAKw0D,kBAExCx0D,KAAKsjE,oBACLtjE,KAAKokE,mBACLllE,OAAOsa,iBAAiB,SAAUxZ,KAAKujE,eAAe5jE,KAAKK,QAE/D,IAAI8sC,EAAO,EAAS,gBAAiB9sC,KAAKknB,SACrC4lB,IAAgC,IAAxBA,EAAK/oC,QAAQ/D,OACtB44D,EAAO99D,UAAUu4D,YAAYr4D,KAAKgF,MAEtCA,KAAKyjE,YACLzjE,KAAK0jE,gBAEAjB,IAAYC,KACbP,KACAO,IAAgB,GAEpB1iE,KAAKs8B,SACAt8B,KAAK4jE,MAIN5jE,KAAK2jE,cAHL3jE,KAAKovD,QAAQ,UAKrB,CACJ,EAOAwT,EAAU9nE,UAAUupE,eAAiB,SAAUC,GAC3C,GAAIt5B,IAAY,CACZ,IAAIkpB,EAAW,WAEfh1D,OAAOg1D,GAAUmQ,eAAerkE,KAAKknB,QAASo9C,EAClD,CACAtkE,KAAKyyD,YAAa,CACtB,EAMAmQ,EAAU9nE,UAAU44D,SAAW,WAC3B1zD,KAAK0jE,gBACL9K,EAAO99D,UAAU44D,SAAS14D,KAAKgF,KACnC,EAWA4iE,EAAU9nE,UAAUsmD,GAAK,SAAUj3C,EAAO6V,EAAShiB,GAC/C,GAAqB,kBAAVmM,EACPnK,KAAKmjE,cAAc/hB,GAAGj3C,EAAO6V,EAAShiB,QAGtC,IAAK,IAAIslB,EAAK,EAAGisC,EAAUplD,EAAOmZ,EAAKisC,EAAQl1D,OAAQipB,IAAM,CACzD,IAAIzM,EAAM04C,EAAQjsC,GAClBtjB,KAAKmjE,cAAc/hB,GAAGvqC,EAAI1M,MAAO0M,EAAImJ,QAASnJ,EAAI7Y,QACtD,CAER,EASA4kE,EAAU9nE,UAAU2mD,IAAM,SAAUt3C,EAAO6V,GACvC,GAAqB,kBAAV7V,EACPnK,KAAKmjE,cAAc1hB,IAAIt3C,EAAO6V,QAG9B,IAAK,IAAIsD,EAAK,EAAGihD,EAAUp6D,EAAOmZ,EAAKihD,EAAQlqE,OAAQipB,IAAM,CACzD,IAAIzM,EAAM0tD,EAAQjhD,GAClBtjB,KAAKmjE,cAAc1hB,IAAI5qC,EAAI1M,MAAO0M,EAAImJ,QAC1C,CAER,EASA4iD,EAAU9nE,UAAUyC,OAAS,SAAU8jD,EAAUM,IACpB,IAArB3hD,KAAKuzD,aACLvzD,KAAKmjE,cAAc5lE,OAAO8jD,EAAUM,EAE5C,EAOAihB,EAAU9nE,UAAU0pE,mBAAqB,WACrC,OAAOxkE,KAAKykE,eAChB,EAOA7B,EAAU8B,OAAS,WAEf,IADA,IAAI1H,EAAa,GACR15C,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC05C,EAAW15C,GAAMxkB,UAAUwkB,GAE1BtjB,KAAKlF,UAAU2pE,kBAChBzkE,KAAKlF,UAAU2pE,gBAAkB,IAErC,IAAK,IAAItqE,EAAI,EAAGA,EAAI6iE,EAAW3iE,OAAQF,KACqD,IAApF6F,KAAKlF,UAAU2pE,gBAAgB1gE,QAAQi5D,EAAWlhE,SAAS3B,EAAEY,WAAY,OACzEiF,KAAKlF,UAAU2pE,gBAAgBjpE,KAAKwhE,EAAWlhE,SAAS3B,EAAEY,WAAY,KAGlF,EAWA6nE,EAAU9nE,UAAUugB,cAAgB,SAAUnB,EAAS7e,EAAMspE,GACzD,OAAOtpD,GAAcnB,EAAS7e,EAClC,EASAunE,EAAU9nE,UAAU8pE,mBAAqB,SAAU5kD,EAAS2hC,GACpD3hD,KAAKgjE,gBAELhjE,KAAK6kE,WACL7kE,KAAK8kE,eAAiB,CAAEC,MAAO/kD,EAASpe,KAAM+/C,GAEtD,EAEAihB,EAAU9nE,UAAU4oE,cAAgB,WAC5B1jE,KAAKykE,iBAAmBzkE,KAAKykE,gBAAgBpqE,QAC7C2F,KAAKkjE,aAAapG,OAAO98D,KAAK+8D,kBAAmB/8D,KAAKykE,gBAE9D,EACA7B,EAAU9nE,UAAUsoE,eAAiB,SAAUxhE,GAC3C,IAAIvG,EAAOR,OAAOomB,KAAKrf,GACnBvG,EAAKhB,SACL2F,KAAK3E,EAAK,IAAMuG,EAAKvG,EAAK,IAElC,EACAunE,EAAU9nE,UAAUspE,iBAAmB,WACnC,IAAIxyD,EAEAA,EADA+wD,GACOzjE,OAAO+kE,aAAaC,QAAQlkE,KAAKw0D,gBAAkBx0D,KAAKknB,QAAQje,GAAKjJ,KAAKmkE,4BAG1EjlE,OAAO+kE,aAAaC,QAAQlkE,KAAKw0D,gBAAkBx0D,KAAKknB,QAAQje,IAErE,EAAkB2I,IAAmB,KAATA,GAC9B5R,KAAKszD,cAAc5qD,KAAKtF,MAAMwO,IAAO,EAE7C,EACAgxD,EAAU9nE,UAAUyoE,eAAiB,WAC5BvjE,KAAKuzD,cACFoP,GACAzjE,OAAO+kE,aAAae,QAAQhlE,KAAKw0D,gBAC7Bx0D,KAAKknB,QAAQje,GAAKjJ,KAAKmkE,2BAA4BnkE,KAAKilE,kBAG5D/lE,OAAO+kE,aAAae,QAAQhlE,KAAKw0D,gBAAkBx0D,KAAKknB,QAAQje,GAAIjJ,KAAKilE,kBAGrF,EAEArC,EAAU9nE,UAAUoqE,qBAAuB,SAAUpsC,GAC5C,EAAkBA,IACnBA,GAER,EAEA8pC,EAAU9nE,UAAUqqE,cAAgB,SAAUC,EAAcr6D,GAE5D,EACA63D,EAAU9nE,UAAUmwC,YAAc,SAAUC,GAMxC,OALIlrC,KAAKqlE,qBACL/C,GAAiB,GAErBL,GAAajiE,KAAKslE,OAAOnmE,SAAS4W,MAClCwsD,GAAiBvnD,QAAQ3gB,OAClB6wC,EAAc,IAAM+2B,GAAa,IAAMK,IAClD,EACAM,EAAU9nE,UAAUwqE,OAAS,SAAUvxD,GACnC,IAAIwH,EAAO,EACX,GAAmB,IAAfxH,EAAI1Z,OACJ,OAAOkhB,EAEX,IAAK,IAAIphB,EAAI,EAAGA,EAAI4Z,EAAI1Z,OAAQF,IAAK,CACjC,IAAI+5C,EAAOngC,EAAIma,WAAW/zB,GAC1BohB,GAASA,GAAQ,GAAKA,EAAQ24B,EAC9B34B,GAAOA,CACX,CACA,OAAOzO,KAAK0pC,IAAIj7B,EACpB,EACAqnD,EAAU9nE,UAAUuqE,iBAAmB,WACnC,OAAOpD,KAAejiE,KAAKslE,OAAOnmE,SAAS4W,OAASwsD,KAAmBvnD,QAAQ3gB,MACnF,EACAuoE,EAAU9nE,UAAUyqE,aAAe,SAAUnoD,GAGzC,IAFA,IAAI7O,EAAQvO,KACRwlE,EAAa,CAAC,EACTliD,EAAK,EAAG2jC,EAAY7pC,EAASkG,EAAK2jC,EAAU5sD,OAAQipB,IAAM,CAC/D,IAAIplB,EAAM+oD,EAAU3jC,GAChBmiD,OAAW,EAEfA,EAAW,EAASvnE,EAAK8B,MACpB,EAAYylE,IACbh8B,EAASvrC,EAAK8B,KAAK0lE,oBAAoBD,GAAWD,EAE1D,CACA,OAAO98D,KAAKC,UAAU68D,GAAY,SAAUtnE,EAAKrC,GAC7C,OAAO0S,EAAMm3D,oBAAoB7pE,EACrC,GACJ,EACA+mE,EAAU9nE,UAAU4qE,oBAAsB,SAAU9qE,GAChD,OAAIA,aAAeujE,GACR,EAAS,aAAcvjE,GAGvBA,CAEf,EACAgoE,EAAU9nE,UAAU6qE,gBAAkB,SAAUvoD,GAC5C,OAAO1U,KAAKC,UAAU3I,KAAK4lE,sBAAsB5lE,KAAKyvD,WAAYryC,GACtE,EACAwlD,EAAU9nE,UAAU8qE,sBAAwB,SAAUhrE,EAAKirE,GAqBvD,IApBA,IAAIC,EAAS,CAAC,EACVt7B,EAAU,SAAUtsC,GACpB,IAAiC,IAA7B2nE,EAAW9hE,QAAQ7F,GAAa,CAEhC,IAAIrC,EAAQjB,EAAIsD,GAChB,GAAqB,kBAAVrC,GAAwBA,aAAiBoL,MAUhD6+D,EAAO,GAAK5nE,GAAOrC,MAVqC,CACxD,IAAIkqE,EAAUF,EAAWvhE,QAAO,SAAUrD,GACtC,IAAI+C,EAASkD,OACb,OAAO,IAAIlD,EAAO9F,EAAM,KAAKM,KAAKyC,EACtC,IAAGuD,KAAI,SAAUvD,GACb,OAAOA,EAAIkD,QAAQjG,EAAM,IAAK,GAClC,IACA4nE,EAAO,GAAK5nE,GAAO8nE,EAAOJ,sBAAsBI,EAAON,oBAAoB7pE,GAAQkqE,EACvF,CAIJ,CACJ,EACIC,EAAShmE,KACJsjB,EAAK,EAAGupB,EAAKhyC,OAAOomB,KAAKrmB,GAAM0oB,EAAKupB,EAAGxyC,OAAQipB,IAAM,CAC1D,IAAIplB,EAAM2uC,EAAGvpB,GACbknB,EAAQtsC,EACZ,CACA,OAAO4nE,CACX,EACA,GAAW,CACPjP,IAAS,IACV+L,EAAU9nE,UAAW,yBAAqB,GAC7C,GAAW,CACP+7D,MACD+L,EAAU9nE,UAAW,iBAAa,GACrC,GAAW,CACP+7D,MACD+L,EAAU9nE,UAAW,cAAU,GAClC8nE,EAAY,GAAW,CACnBvL,IACDuL,GACIA,CACX,CA9a8B,CA8a5BpQ,KAIF,WAC0B,qBAAXtzD,QACPA,OAAOsa,iBAAiB,YAExB,WACI8oD,GAAiB,CACrB,GAEP,EARD,GCpeA,IAAI,GAAwC,WACxC,IAAIpK,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxC,GAA0C,SAAUE,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,EASIkjC,GAAkB,CAAElK,KAAM,EAAGE,IAAK,EAAGC,OAAQ,EAAGF,MAAO,GAIvDkK,GAAkB,CAAEC,WAAW,GAI/BC,GAA0B,SAAUxN,GAEpC,SAASwN,IACL,OAAkB,OAAXxN,GAAmBA,EAAOlpD,MAAM1P,KAAMlB,YAAckB,IAC/D,CAOA,OAVA,GAAUomE,EAAUxN,GAIpB,GAAW,CACP/B,GAAS,IACVuP,EAAStrE,UAAW,YAAQ,GAC/B,GAAW,CACP+7D,GAAS,IACVuP,EAAStrE,UAAW,WAAO,GACvBsrE,CACX,CAZ6B,CAY3BjI,IAkBEkI,GAA2B,SAAUzN,GAErC,SAASyN,EAAUn/C,EAAS9J,GACxB,IAAI7O,EAAQqqD,EAAO59D,KAAKgF,KAAMod,EAAS8J,IAAYlnB,KAiBnD,OAhBAuO,EAAM+3D,UAAYC,EAAYC,qBAC9Bj4D,EAAMk4D,YAAcF,EAAYC,qBAChCj4D,EAAMm4D,QAAUH,EAAYC,qBAC5Bj4D,EAAMo4D,MAAQ,EACdp4D,EAAMq4D,SAAW,EACjBr4D,EAAMs4D,QAAU,EAChBt4D,EAAMu4D,oBAAqB,EAC3Bv4D,EAAMw4D,OAAS,EAEfx4D,EAAMy4D,aAAe,EACrBz4D,EAAM04D,oBAAqB,EAC3B14D,EAAM24D,MAAQ,EACd34D,EAAM44D,cAAgB,EACtB54D,EAAM64D,cAAgB,EACtB74D,EAAM84D,WAAa,CAAC,EACpB94D,EAAM5O,OACC4O,CACX,CAwvBA,IAAIg4D,EA4EJ,OAx1BA,GAAUF,EAAWzN,GAqBrB2N,EAAcF,EACdA,EAAUvrE,UAAU6E,KAAO,WACvBK,KAAKsnE,eACD7a,GAAQsC,MACRW,GAAS,CAAC1vD,KAAKknB,SAAU,iBAE7BlnB,KAAKqnE,WAAWrnE,KAAKunE,OAAS,CAAC,CACnC,EACAlB,EAAUG,mBAAqB,WAC3B,OAAO,EAAO,CAAC,EAAGP,GACtB,EACAI,EAAUvrE,UAAUwsE,aAAe,SAAUE,GACzC,IAAI3X,EACC,EAAY7vD,KAAKynE,UAClB5X,EAAM,GAAO7vD,KAAKynE,OAAQznE,KAAKknB,UAEnC,IAAIlH,EAAWhgB,KAAK0nE,eAAiBjb,GAAQO,UAAYP,GAAQM,QAAW/sD,KAAK2nE,iBAAmB3nE,KAAK4nE,WACrGJ,EACAjZ,GAAar2B,OAAO23B,GAAO7vD,KAAKknB,QAASulC,GAAQa,WAAa,aAAeb,GAAQ0B,gBAAiBnuC,GAGtGuuC,GAAavoD,IAAI6pD,GAAO7vD,KAAKknB,QAASulC,GAAQa,WAAa,aAAeb,GAAQ0B,gBAAiBnuC,EAAShgB,KAEpH,EAEAqmE,EAAUvrE,UAAU6sE,iBAAmB,SAAU/oD,GAC7C,IAAIrQ,EAAQvO,KACRnB,EAAS+f,EAAIipD,cACjB7nE,KAAKgnE,aAAez7D,YAAW,WAC3BgD,EAAM04D,oBAAqB,EAC3B14D,EAAMu5D,qBACNv5D,EAAMq5D,WAAWhpD,EAAK/f,EAC1B,GAAGmB,KAAK+nE,kBACRxZ,GAAavoD,IAAIoR,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAK8nE,mBAAoB9nE,MAC/GuuD,GAAavoD,IAAIoR,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAK8nE,mBAAoB9nE,KACjH,EAEAqmE,EAAUvrE,UAAUgtE,mBAAqB,WACrCt8B,aAAaxrC,KAAKgnE,cAClBzY,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAK8nE,oBAC9FvZ,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAK8nE,mBAChG,EAEAzB,EAAUvrE,UAAUktE,oBAAsB,SAAU9gD,EAAS+gD,GACzD,IAAIC,EAAS,CAAE,SAAY,eAAgB,WAAc,eACrDr0D,EAAS,CAAE,SAAY,eAAgB,WAAc,eACzD,OAAI,EAAkBqT,GACX,KAEPA,EAAQghD,EAAO,GAAKD,IAAS/gD,EAAQrT,EAAO,GAAKo0D,MACpC,aAATA,EAAsB/gD,EAAQ40C,UAAY,EAAI50C,EAAQy0C,WAAa,IACtD,aAATsM,GACAjoE,KAAKonE,cAAgBpnE,KAAKonE,eACE,IAAvBpnE,KAAKonE,cAAsBlgD,EAAQ40C,UAAY50C,EAAQ40C,UAAY97D,KAAKonE,eAC7EpnE,KAAKmoE,iBAAmBjhD,EAAQkhD,eAGhCpoE,KAAKmnE,cAAgBnnE,KAAKmnE,eACE,IAAvBnnE,KAAKmnE,cAAsBjgD,EAAQy0C,WAAaz0C,EAAQy0C,WAAa37D,KAAKmnE,eAC/EnnE,KAAKqoE,gBAAkBnhD,EAAQohD,aAE9B,EAAkBphD,GAIZA,EAHAlnB,KAAKgoE,oBAAoB9gD,EAAQ7M,WAAY4tD,IAWrDjoE,KAAKgoE,oBAAoB9gD,EAAQ7M,WAAY4tD,EAE5D,EACA5B,EAAUvrE,UAAUytE,oBAAsB,WACtCvoE,KAAKmnE,cAAgB,EACrBnnE,KAAKonE,cAAgB,EACDpnE,KAAKknB,QAAQ0C,UAAUsN,SAAS,aAAel3B,KAAKknB,QAAQ0C,UAAUsN,SAAS,eACxEl3B,KAAKgoE,oBAAoBhoE,KAAKknB,QAAQ7M,WAAY,YAChDra,KAAKgoE,oBAAoBhoE,KAAKknB,QAAQ7M,WAAY,aACnF,EACAgsD,EAAUvrE,UAAU8sE,WAAa,SAAUhpD,EAAK4pD,GAE5C,GADAxoE,KAAKyoE,mBAAqB7pD,EAAI/f,QAC1BmB,KAAK0oE,gBAAT,CASA,GALI1oE,KAAK0oE,eAAc,GACnB1oE,KAAKinE,oBAAqB,EAE9BjnE,KAAKnB,OAAU+f,EAAIipD,eAAiBW,EACpCxoE,KAAK8mE,oBAAqB,EACtB9mE,KAAK2oE,MAAO,CAEZ,IAAIC,EAAiB5oE,KAAK2oE,MACI,kBAAnBC,IACPA,EAAiB,CAACA,IAEtB,IAAK,IAAIzuE,EAAI,EAAGA,EAAIyuE,EAAevuE,OAAQF,IACvC,IAAK,EAAkB63D,GAAQpzC,EAAI/f,OAAQ+pE,EAAe9sE,SAAS3B,EAAEY,WAAY,OAK7E,YAHIiF,KAAK0oE,iBACL1oE,KAAK0oE,eAAc,GAKnC,CACI1oE,KAAK6oE,iBAAmB,EAAYjqD,EAAIkqD,iBAAgC,eAAblqD,EAAI/e,MAC/D+e,EAAIiqD,iBAER7oE,KAAKknB,QAAQ+B,aAAa,eAAgB,QAC1C,IAAI8/C,EAAW/oE,KAAKgpE,eAAepqD,GAEnC,GADA5e,KAAKipE,gBAAkB,CAAEvuE,EAAGquE,EAASrN,MAAOhzC,EAAGqgD,EAASlN,QACnD77D,KAAK2qC,MAAO,CACb,IAAIqT,EAAMh+C,KAAKknB,QAAQiX,wBACvBn+B,KAAKuoE,sBACD3pD,EAAIsqD,UAAYtqD,EAAI88C,QACpB17D,KAAKmnE,cAAgB,GAErBvoD,EAAIuqD,UAAYvqD,EAAIi9C,QACpB77D,KAAKonE,cAAgB,GAEzBpnE,KAAKopE,kBAAoBL,EAASrN,OAAS1d,EAAI+d,KAAO/7D,KAAKmnE,eAC3DnnE,KAAKqpE,kBAAoBN,EAASlN,OAAS7d,EAAIie,IAAMj8D,KAAKonE,cAC9D,CACIpnE,KAAKinE,mBACLjnE,KAAKspE,aAAa1qD,IAGlB2vC,GAAavoD,IAAIoR,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAKspE,aAActpE,MACzGuuD,GAAavoD,IAAIoR,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAKupE,WAAYvpE,OAEzGA,KAAKsnE,cAAa,GACD,eAAb1oD,EAAI/e,MAAyBG,KAAKwpE,iBAClCpyD,SAAS8zC,KAAKthC,UAAU5jB,IAAI,oBAEhChG,KAAKinE,oBAAqB,EAC1B1Y,GAAaa,QAAQh4C,SAASM,gBAAiB+0C,GAAQa,WAAa,aAAeb,GAAQ0B,gBAAiBvvC,EAjD5G,CAkDJ,EACAynD,EAAUvrE,UAAUwuE,aAAe,SAAU1qD,GACzC5e,KAAK8nE,qBACL,IAAI2B,GAAiB,EAAY7qD,EAAIkqD,gBACrC,IAAIW,GAAgD,IAA9B7qD,EAAIkqD,eAAezuE,OAAzC,CAGA,IACI2jD,EADA0rB,EAAe1pE,KAAKgpE,eAAepqD,GAEnC+qD,EAAY3rC,iBAAiBh+B,KAAKknB,SACtClnB,KAAK4pE,OAAS,CACV7N,KAAMjgE,SAAS6tE,EAAUE,WAAY,IACrC5N,IAAKngE,SAAS6tE,EAAUG,UAAW,IACnC9N,MAAOlgE,SAAS6tE,EAAUI,YAAa,IACvC7N,OAAQpgE,SAAS6tE,EAAUK,aAAc,KAE7C,IAAI9iD,EAAUlnB,KAAKknB,QACnB,GAAIlnB,KAAK2qC,OAAS3qC,KAAKiqE,WAAY,CAC/B,IAAIC,EAAalY,GAAQpzC,EAAI/f,OAAQmB,KAAKiqE,YACrC,EAAkBC,KACnBhjD,EAAUgjD,EAElB,CAEIlqE,KAAKmqE,mBACLjjD,EAAUlnB,KAAKoqE,kBAAkBxrD,EAAI/f,OAAQqoB,IAEjDlnB,KAAK80B,OAAS90B,KAAKqqE,wBAAwBnjD,GAC3ClnB,KAAK6+B,SAAW7+B,KAAKsqE,iBAAiB1rD,EAAK5e,KAAKuqE,cAChD,IAAI7vE,EAAIsF,KAAKipE,gBAAgBvuE,EAAIgvE,EAAahO,MAC1ChzC,EAAI1oB,KAAKipE,gBAAgBvgD,EAAIghD,EAAa7N,MAC1C2O,EAAW19D,KAAKsvD,KAAM1hE,EAAIA,EAAMguB,EAAIA,GACxC,GAAK8hD,GAAYxqE,KAAKwqE,UAAYxqE,KAAKinE,mBAAqB,CACxD,IAAIpX,EAAM7vD,KAAKyqE,iBAAiB7rD,GAChC,IAAKixC,GAAO,EAAkBA,GAC1B,OAEA4Z,GACA7qD,EAAIiqD,iBAER,IAAI6B,EAAoB1qE,KAAK2qE,cAAgB9a,EAE7C,GADA7vD,KAAK4qE,iBAAmB5qE,KAAKqqE,wBAAwBK,EAAkBG,cACnE7qE,KAAK8qE,UAAW,CAChB,IAAItC,EAAYxoE,KAAK+qE,uBAAuBnsD,GACxChd,EAAO,CACPuI,MAAOyU,EACPsI,QAASA,EACTroB,OAAQ2pE,EACRwC,WAAYhgC,IAAahrC,KAAKirE,eAAetrE,KAAKK,MAAQ,KAC1DkrE,YAAaR,GAEjB1qE,KAAKovD,QAAQ,YAAaxtD,EAC9B,CACI5B,KAAKmrE,SACLnrE,KAAKorE,eAGLprE,KAAKsmE,UAAY,CAAEvK,KAAM,EAAGC,MAAO,EAAGE,OAAQ,EAAGD,IAAK,GACtDj8D,KAAKymE,YAAc,CAAExK,IAAK,EAAGF,KAAM,IAEvC/d,EAAM,CAAE+d,KAAM/7D,KAAK6+B,SAASk9B,KAAO/7D,KAAK4qE,iBAAiB7O,KAAME,IAAKj8D,KAAK6+B,SAASo9B,IAAMj8D,KAAK4qE,iBAAiB3O,KAC1Gj8D,KAAK2qC,QAAU3qC,KAAKqrE,iBACpBrrE,KAAK2mE,MAAQ3mE,KAAK6+B,SAASk9B,KAAO/7D,KAAK80B,OAAOinC,KAC9C/7D,KAAKknE,MAAQlnE,KAAK6+B,SAASo9B,IAAMj8D,KAAK80B,OAAOmnC,KAEjDj8D,KAAKuoE,sBAEL,IAAIl+C,EAAS2T,iBAAiB9W,GAC1B4iD,EAAYhpE,WAAWupB,EAAOy/C,WAE9B9pE,KAAK2qC,OAAuB,IAAdm/B,IACd9rB,EAAIie,KAAO6N,GAEf9pE,KAAK+mE,OAAUlmE,MAAMC,WAAWupB,EAAO4xC,MAAmD,EAA3Cn7D,WAAWupB,EAAO4xC,KAAOj8D,KAAK80B,OAAOmnC,IAKhFj8D,KAAKsrE,sBAAwBtrE,KAAK2qC,QAClCqT,EAAIie,KAAOj8D,KAAKonE,cAChBppB,EAAI+d,MAAQ/7D,KAAKmnE,eAErB,IAAIoE,EAAWvrE,KAAKwrE,0BAA0B,CAC1CvP,IAAMje,EAAIie,IAAMj8D,KAAKknE,MAAS,KAC9BnL,KAAO/d,EAAI+d,KAAO/7D,KAAK2mE,MAAS,OAEhC3mE,KAAKmrE,UAAqC,kBAAlBnrE,KAAKmrE,UAAyBnrE,KAAKmrE,SAASvhD,UAAUsN,SAAS,qBAAwD,aAAjCl3B,KAAKmrE,SAASniD,MAAM6V,WAClImf,EAAIie,KAAOj8D,KAAKmrE,SAASrP,WAE7B97D,KAAKyrE,gBAAkB,CAAExP,IAAKje,EAAIie,IAAKF,KAAM/d,EAAI+d,MACjD7J,GAAkBwY,EAAmB1qE,KAAK0rE,gBAAgB,CAAE7sC,SAAU,WAAYk9B,KAAMwP,EAASxP,KAAME,IAAKsP,EAAStP,OACrH1N,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAKspE,cAC9F/a,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAKupE,YACvFv+B,KACDhrC,KAAKirE,eAAeP,EAE5B,CA1FA,CA2FJ,EACArE,EAAUvrE,UAAUmwE,eAAiB,SAAUP,GACvCpa,GAAUoa,IACVnc,GAAavoD,IAAIoR,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAK2rE,QAAS3rE,MACpGuuD,GAAavoD,IAAIoR,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAK4rE,YAAa5rE,MACtGA,KAAK6rE,qBAAoB,EAAO7rE,KAAKknB,QAASwjD,KAG9C1qE,KAAKsnE,eACLlwD,SAAS8zC,KAAKthC,UAAUsO,OAAO,oBAEvC,EACAmuC,EAAUvrE,UAAUgxE,kBAAoB,SAAUjyD,GAC9C7Z,KAAKi8D,IAAMpiD,EAAGkyD,UACd/rE,KAAK+7D,KAAOliD,EAAGmyD,WACfhsE,KAAKmrB,MAAQtR,EAAG22C,YAChBxwD,KAAKqrB,OAASxR,EAAGoyD,aACjB,MAAOpyD,EAAGgxD,aACNhxD,EAAKA,EAAGgxD,aACR7qE,KAAKi8D,KAAOpiD,EAAGkyD,UACf/rE,KAAK+7D,MAAQliD,EAAGmyD,WAEpB,OAAQhsE,KAAKi8D,KAAO/8D,OAAOgtE,aACvBlsE,KAAK+7D,MAAQ78D,OAAOitE,aACnBnsE,KAAKi8D,IAAMj8D,KAAKqrB,QAAYnsB,OAAOgtE,YAAchtE,OAAOktE,aACxDpsE,KAAK+7D,KAAO/7D,KAAKmrB,OAAWjsB,OAAOitE,YAAcjtE,OAAOmtE,UACjE,EACAhG,EAAUvrE,UAAU0wE,0BAA4B,SAAU3vE,GACtD,OAAImE,KAAKssE,kBACEtsE,KAAKssE,kBAAkBzwE,GAE3BA,CACX,EACAwqE,EAAUvrE,UAAUuvE,wBAA0B,SAAUxa,GACpD,GAAI,EAAkBA,GAClB,MAAO,CAAEkM,KAAM,EAAGE,IAAK,GAE3B,IAAIsQ,EAAO1c,EAAI1xB,wBACXnV,EAAQgV,iBAAiB6xB,GAC7B,MAAO,CACHkM,KAAOwQ,EAAKxQ,KAAO78D,OAAOitE,YAAerwE,SAASktB,EAAM6gD,WAAY,IACpE5N,IAAMsQ,EAAKtQ,IAAM/8D,OAAOgtE,YAAepwE,SAASktB,EAAM8gD,UAAW,IAEzE,EAEAzD,EAAUvrE,UAAU6wE,QAAU,SAAU/sD,GACpC,GAAK,EAAYA,EAAIkqD,iBAAkD,IAA9BlqD,EAAIkqD,eAAezuE,OAA5D,CAMA,IAAI0hE,EACAE,EAJAj8D,KAAK2qC,OAAS/rB,EAAIkqD,gBAAkBrc,GAAQO,UAAYP,GAAQM,SAChEnuC,EAAIiqD,iBAIR7oE,KAAK6+B,SAAW7+B,KAAKsqE,iBAAiB1rD,EAAK5e,KAAKuqE,cAChD,IAAIiC,EAAYxsE,KAAKysE,uBAAuB,UACxCD,EAAYxsE,KAAK6+B,SAASo9B,MAC1Bj8D,KAAK6+B,SAASo9B,IAAMuQ,GAExB,IAAIE,EAAW1sE,KAAKysE,uBAAuB,SAI3C,GAHIC,EAAW1sE,KAAK6+B,SAASk9B,OACzB/7D,KAAK6+B,SAASk9B,KAAO2Q,GAErB1sE,KAAK2sE,KAAM,CACX,IAAInE,EAAYxoE,KAAK+qE,uBAAuBnsD,GAC5C5e,KAAKovD,QAAQ,OAAQ,CAAEjlD,MAAOyU,EAAKsI,QAASlnB,KAAKknB,QAASroB,OAAQ2pE,GACtE,CACA,IAAIoE,EAAS5sE,KAAK6sE,mBAAmBjuD,GACrC,GAAIguD,EAAO/tE,QAAU+tE,EAAO3qD,SAAU,CAElC,IAAI45B,GAAO,EACP77C,KAAK8sE,cACD9sE,KAAK8sE,YAAY7qD,WAAa2qD,EAAO3qD,SACrCjiB,KAAK+sE,mBAAmBnuD,EAAKguD,GAG7B/wB,GAAO,GAGXA,IACA+wB,EAAO3qD,SAAS+qD,SAAShtE,KAAKunE,OAASvnE,KAAKqnE,WAAWrnE,KAAKunE,OAC5DqF,EAAO3qD,SAASgrD,QAAQruD,EAAKguD,EAAO/tE,QACpCmB,KAAK8sE,YAAcF,EAE3B,MACS5sE,KAAK8sE,aACV9sE,KAAK+sE,mBAAmBnuD,EAAKguD,GAEjC,IAAIjC,EAAgB3qE,KAAKqnE,WAAWrnE,KAAKunE,OAAO2F,OAChDltE,KAAK4qE,iBAAmB5qE,KAAKqqE,wBAAwBrqE,KAAK2qE,cAAcE,cACxE,IAAIsC,EAAQntE,KAAK4qE,iBAAiB7O,KAC9BqR,EAAOptE,KAAK4qE,iBAAiB3O,IAC7B8M,EAAW/oE,KAAKgpE,eAAepqD,GAC/ByuD,EAAQtE,EAASrN,MACjB4R,EAAQvE,EAASlN,MACjB0R,EAAQvtE,KAAK6+B,SAASk9B,KAAO/7D,KAAK2mE,MAClC6G,EAAOxtE,KAAK6+B,SAASo9B,IAAMj8D,KAAKknE,MAChC78C,EAAS2T,iBAAiB2sC,GAC9B,GAAI3qE,KAAKmrE,SAAU,CAIf,GAHInrE,KAAKytE,kBACLztE,KAAKorE,cAELprE,KAAK07D,QAAU2R,GAASrtE,KAAK0tE,kBAAmB,CAChD,IAAIC,EAAchD,EAAcna,aAAe1vD,WAAWupB,EAAOw/C,YAC3D/oE,WAAWupB,EAAO0/C,cAEpBhO,EADA/7D,KAAKsmE,UAAUvK,KAAOwR,GAASA,EAAQ,EAChCvtE,KAAKsmE,UAAUvK,KAEjB/7D,KAAKsmE,UAAUtK,MAAQ98D,OAAOitE,YAAcoB,EAAQI,GAAeJ,EAAQ,EACzEA,GAASA,EAAQvtE,KAAKsmE,UAAUtK,OAAS98D,OAAOitE,YAAcwB,EAG9DJ,EAAQ,EAAIvtE,KAAKsmE,UAAUvK,KAAOwR,CAEjD,CACA,GAAIvtE,KAAK67D,QAAUyR,GAASttE,KAAK0tE,kBAAmB,CAChD,IAAIE,EAAejD,EAAcsB,cAAgBnrE,WAAWupB,EAAOy/C,WAC7DhpE,WAAWupB,EAAO2/C,eAEpB/N,EADAj8D,KAAKsmE,UAAUrK,IAAMuR,GAAQA,EAAO,EAC9BxtE,KAAKsmE,UAAUrK,IAEhBj8D,KAAKsmE,UAAUpK,OAASh9D,OAAOgtE,YAAcsB,EAAOI,GAAgBJ,EAAO,EAC1EA,GAAQA,EAAOxtE,KAAKsmE,UAAUpK,QAAUh9D,OAAOgtE,YAAc0B,EAG7DJ,EAAO,EAAIxtE,KAAKsmE,UAAUrK,IAAMuR,CAE9C,CACJ,MAEIzR,EAAOwR,EACPtR,EAAMuR,EAEV,IAUIK,EACAC,EAXAC,EAAOX,EAAOptE,KAAKymE,YAAYxK,IAC/B+R,EAAQb,EAAQntE,KAAKymE,YAAY1K,KAWrC,GAVI/7D,KAAK8mE,qBACD,EAAkB7K,KAClBA,EAAMj8D,KAAK6mE,SAEX,EAAkB9K,KAClBA,EAAO/7D,KAAK4mE,WAKhB5mE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,cAClCl3B,KAAKmrE,UACLnrE,KAAKsmE,UAAUrK,IAAMj8D,KAAK2qC,MAAQ3qC,KAAKsmE,UAAUrK,IAAM,EACvD4R,EAAa5R,EAAM8R,EAAQ,EAAI/tE,KAAKsmE,UAAUrK,IAAOA,EAAMj8D,KAAKymE,YAAYxK,IAC5E6R,EAAc/R,EAAOiS,EAAS,EAAIhuE,KAAKsmE,UAAUvK,KAAQA,EAAO/7D,KAAKymE,YAAY1K,OAGjF8R,EAAY5R,EAAMj8D,KAAKymE,YAAYxK,IACnC6R,EAAa/R,EAAO/7D,KAAKymE,YAAY1K,WAIzC,GAAI/7D,KAAKmrE,SAAU,CACf,IAAI8C,EAAcjuE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,YACxDl3B,KAAKsmE,UAAUrK,IAAMj8D,KAAK2qC,MAAQ3qC,KAAKsmE,UAAUrK,IAAM,EACvD4R,EAAa5R,EAAM8R,EAAQ,EAAI/tE,KAAKsmE,UAAUrK,IAAOA,EAAM8R,EAC3DD,EAAc/R,EAAOiS,EAAS,EAAIC,EAAelS,GAAQiS,EAAQhuE,KAAKymE,YAAY1K,MAC9E/7D,KAAKyrE,gBAAgB1P,KAAQA,EAAOiS,CAC5C,MAEIH,EAAY5R,EAAM8R,EAClBD,EAAa/R,EAAOiS,EAG5B,IAAIlE,EAAYhpE,WAAWk9B,iBAAiBh+B,KAAKknB,SAAS4iD,WAG1D,GAAIA,EAAY,IACR9pE,KAAK2qC,QACLkjC,GAAa/D,EACT0D,EAAO,IACF1D,EAAY0D,GAAS,EACtBK,EAAY/D,EAAY0D,EAGxBK,GAAa/D,GAGrB+D,EAAa7tE,KAAKsmE,UAAUpK,OAAS2R,EAAa7tE,KAAKsmE,UAAUpK,OAAS2R,GAEzE5R,EAAM8R,EAAQ,GACf,GAAIP,EAAO1D,GAAaa,EAAcsB,aAAe8B,IAAS,EAAG,CAC7D,IAAIG,EAAgBluE,KAAKsmE,UAAUrK,IAAMuR,EAAOO,EAC3CG,EAAgBpE,EAAYiE,EAAQ,EACrCF,GAAa/D,EAAYiE,EAGzBF,EAAYK,CAEpB,MAEIL,GAAa/D,EAAYiE,EAIrC,GAAI/tE,KAAKmrE,UAAYnrE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,cAAe,CAClE02C,EAAejD,EAAcsB,cAAgBnrE,WAAWupB,EAAOy/C,WAC7DhpE,WAAWupB,EAAO2/C,eACxB6D,EAAaA,EAAYD,EAAgB5tE,KAAKsmE,UAAUpK,OAAUl8D,KAAKsmE,UAAUpK,OAAS0R,EAAgBC,CAC9G,CAKI7tE,KAAKsrE,sBAAwBtrE,KAAK2qC,QAClCkjC,GAAa7tE,KAAKonE,cAClB0G,GAAc9tE,KAAKmnE,eAEnBnnE,KAAKmrE,UAAqC,kBAAlBnrE,KAAKmrE,UAAyBnrE,KAAKmrE,SAASvhD,UAAUsN,SAAS,qBAAwD,aAAjCl3B,KAAKmrE,SAASniD,MAAM6V,WAClIgvC,GAAa7tE,KAAKmrE,SAASrP,WAE/B,IAAIqS,EAAYnuE,KAAKwrE,0BAA0B,CAAEvP,IAAK4R,EAAY,KAAM9R,KAAM+R,EAAa,OAC3F5b,GAAkByY,EAAe3qE,KAAK0rE,gBAAgByC,IACjDnuE,KAAK8rE,kBAAkBnB,KAAkB3qE,KAAKytE,kBAAqBztE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,eAC1Gl3B,KAAK2qE,cAAcyD,iBAEvB,IAAIze,EAAWv4C,SAASgD,iBAAiB,UACzC,GAAIpa,KAAKytE,kBAAoBztE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,cAAe,CACtD,IAApBy4B,EAASt1D,SACTs1D,EAAW3vD,KAAKquE,gBAAgBzvD,IAGpC,IAAI0vD,EAAetuE,KAAKuuE,gBAAgB5e,GAAU,GAC9C3vD,KAAK8rE,kBAAkB9rE,KAAK2qE,eAC5B3qE,KAAKwuE,kBAAkBF,EAAcT,GAE/B7tE,KAAK8rE,kBAAkB9rE,KAAK2qE,iBAClChb,EAAW,GAAGhrD,MAAM3J,KAAKoc,SAASgD,iBAAiB,WAC3B,IAApBu1C,EAASt1D,SACTs1D,EAAW3vD,KAAKquE,gBAAgBzvD,IAEpC0vD,EAAetuE,KAAKuuE,gBAAgB5e,GAAU,GAC9C3vD,KAAKwuE,kBAAkBF,EAAcT,GAE7C,CACA7tE,KAAK8mE,oBAAqB,EAC1B9mE,KAAK4mE,SAAW7K,EAChB/7D,KAAK6mE,QAAU5K,EACfj8D,KAAK6+B,SAASk9B,KAAOA,EACrB/7D,KAAK6+B,SAASo9B,IAAMA,EACpBj8D,KAAK07D,MAAQ2R,EACbrtE,KAAK67D,MAAQyR,CAtMb,CAuMJ,EAEAjH,EAAUvrE,UAAUyzE,gBAAkB,SAAU5kD,EAAM8kD,GAIlD,IAFA,IACIC,EADAC,EAASF,EAAU9kD,EAAK8kD,UAAY9kD,EAE/BxvB,EAAIw0E,EAAOt0E,OAAS,EAAGF,GAAK,EAAGA,IAEpC,GADAu0E,EAAYxvE,OAAO8+B,iBAAiB2wC,EAAO7yE,SAAS3B,EAAEY,WAAY,MAAM,eACrD,SAAd2zE,GAAsC,WAAdA,IACtBC,EAAO7yE,SAAS3B,EAAEY,WAAY,KAAKqtE,aAAeuG,EAAO7yE,SAAS3B,EAAEY,WAAY,KAAK6zE,aACxF,OAAOD,EAAO7yE,SAAS3B,EAAEY,WAAY,KAI7C,GADA2zE,EAAYxvE,OAAO8+B,iBAAiB5mB,SAASy3D,kBAAkB,cAC7C,YAAdH,EAEA,OADAt3D,SAASy3D,iBAAiB7lD,MAAM8lD,SAAW,OACpC13D,SAASy3D,gBAExB,EACAxI,EAAUvrE,UAAU0zE,kBAAoB,SAAUO,EAASlB,GACnDkB,GAAWA,IAAY33D,SAASy3D,iBAC3BE,EAAQH,aAAex3D,SAASy3D,iBAAiB/S,UAAY97D,KAAK2qE,cAAciE,aAAgBf,GAC9FkB,EAAQ5wC,wBAAwB9S,OAASrrB,KAAK4qE,iBAAiB3O,IAAM4R,EACxEkB,EAAQjT,WAAa97D,KAAK2qE,cAAciE,aAEnCG,EAAQjT,UAAY+R,EAAY7tE,KAAK2qE,cAAciE,eACxDG,EAAQjT,WAAa97D,KAAK2qE,cAAciE,cAGvCG,GAAWA,IAAY33D,SAASy3D,mBAChCE,EAAQH,aAAeG,EAAQ5wC,wBAAwB89B,IAAMj8D,KAAK2qE,cAAciE,aAAex3D,SAASy3D,iBAAiB/S,UAAa+R,EACvIkB,EAAQjT,WAAa97D,KAAK2qE,cAAciE,aAEnCG,EAAQ5wC,wBAAwB89B,IAAO4R,EAAY7tE,KAAK2qE,cAAciE,aAAex3D,SAASy3D,iBAAiB/S,YACpHiT,EAAQjT,WAAa97D,KAAK2qE,cAAciE,cAGpD,EACAvI,EAAUvrE,UAAUuzE,gBAAkB,SAAUzvD,GAC5C,IAAIowD,EAAapwD,EAAIsqD,QAAU,EAAItqD,EAAIsqD,QAAU,EAC7C+F,EAAcrwD,EAAIuqD,QAAU,EAAIvqD,EAAIuqD,QAAU,EAClD,OAAO/xD,SAAS83D,kBAAkBF,EAAYC,EAClD,EACA5I,EAAUvrE,UAAUiyE,mBAAqB,SAAUnuD,EAAKguD,GACpD5sE,KAAK8sE,YAAY7qD,SAASktD,OAAOvwD,EAAKguD,EAAO/tE,QAC7CmB,KAAK8sE,YAAY7qD,SAAS+qD,SAAShtE,KAAKunE,OAAS,KACjDvnE,KAAK8sE,YAAc,IACvB,EACAzG,EAAUvrE,UAAU4wE,gBAAkB,SAAUyC,GAC5C,IAAIv0B,EAAO,EAAO,CAAC,EAAGu0B,GAStB,OARInuE,KAAKioE,OACa,MAAdjoE,KAAKioE,YACEruB,EAAKqiB,IAEO,MAAdj8D,KAAKioE,aACHruB,EAAKmiB,MAGbniB,CACX,EACAysB,EAAUvrE,UAAU2xE,uBAAyB,SAAUxrE,GACnD,IAAImuE,EAAUh4D,SAAS8zC,KACnBmkB,EAASj4D,SAASM,gBAClB43D,EAAcxiE,KAAKnR,IAAIyzE,EAAQ,SAAWnuE,GAAMouE,EAAO,SAAWpuE,GAAMmuE,EAAQ,SAAWnuE,GAAMouE,EAAO,SAAWpuE,GAAMouE,EAAO,SAAWpuE,IAC/I,OAAOquE,CACX,EACAjJ,EAAUvrE,UAAU8wE,YAAc,SAAUhtD,GAExC,GADA5e,KAAK8mE,oBAAqB,EACrB,EAAYloD,EAAIkqD,iBAAkD,IAA9BlqD,EAAIkqD,eAAezuE,OAA5D,CAGA,IAAIwF,EAAO,CAAC,WAAY,YAAa,WACrC,IAAgC,IAA5BA,EAAKkE,QAAQ6a,EAAI/e,MAAc,CAC/B,GAAIG,KAAKuvE,SAAU,CACf,IAAI/G,EAAYxoE,KAAK+qE,uBAAuBnsD,GAC5C5e,KAAKovD,QAAQ,WAAY,CAAEjlD,MAAOyU,EAAKsI,QAASlnB,KAAKknB,QAASroB,OAAQ2pE,EAAW0E,OAAQltE,KAAK2qE,eAClG,CACA3qE,KAAKupE,WAAW3qD,EACpB,MAEI5e,KAAKknB,QAAQ+B,aAAa,eAAgB,SAE9C,IAAI2jD,EAAS5sE,KAAK6sE,mBAAmBjuD,GACjCguD,EAAO/tE,QAAU+tE,EAAO3qD,WACxB2qD,EAAO3qD,SAASutD,gBAAiB,EACjC5C,EAAO3qD,SAAS+qD,SAAShtE,KAAKunE,OAASvnE,KAAKqnE,WAAWrnE,KAAKunE,OAC5DqF,EAAO3qD,SAASwtD,QAAQ7wD,EAAKguD,EAAO/tE,SAExCmB,KAAK6rE,qBAAoB,GACzBz0D,SAAS8zC,KAAKthC,UAAUsO,OAAO,mBAnB/B,CAoBJ,EAIAmuC,EAAUvrE,UAAUyuE,WAAa,SAAU3qD,GACvC5e,KAAK8mE,oBAAqB,EAC1B9mE,KAAKsnE,eACLlwD,SAAS8zC,KAAKthC,UAAUsO,OAAO,oBAC/Bl4B,KAAKknB,QAAQ+B,aAAa,eAAgB,SAC1CslC,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAKspE,cAC9F/a,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAK4rE,aAC5Frd,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAKupE,YAC5Fhb,GAAar2B,OAAO9gB,SAAUq1C,GAAQa,WAAa,YAAcb,GAAQ2B,eAAgBpuD,KAAK2rE,SAC1F3rE,KAAK0oE,iBACL1oE,KAAK0oE,eAAc,EAE3B,EAEArC,EAAUvrE,UAAUm5D,kBAAoB,SAAU4G,EAASC,GAE3D,EACAuL,EAAUvrE,UAAU05D,cAAgB,WAChC,MAAO,WACX,EACA6R,EAAUvrE,UAAU4tE,cAAgB,SAAUgH,GAI1C,OAHIA,IACAxJ,GAAgBC,WAAaD,GAAgBC,WAE1CD,GAAgBC,SAC3B,EACAE,EAAUvrE,UAAUswE,YAAc,WAC9B,IAAIuE,EACAC,EAGA/f,EAFAoM,EAAM,EACNF,EAAO,EAEPl8D,SAAcG,KAAKmrE,SAOvB,GALItb,EADS,WAAThwD,EACM,GAAOG,KAAKmrE,UAGZnrE,KAAKmrE,SAEXtb,EAAK,CACL,IAAIggB,EAAchgB,EAAI1xB,wBACtBwxC,EAAgB9f,EAAIyY,YAAczY,EAAIyY,YAAcuH,EAAY7T,MAAQ6T,EAAY9T,KACpF6T,EAAiB/f,EAAIuY,aAAgBpoE,KAAKmrE,WAAa,EAAkBnrE,KAAK2qE,gBAAkB3qE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,cAAiB24B,EAAI+e,aAAe/e,EAAIuY,aAAeyH,EAAY3T,OAAS2T,EAAY5T,IAG9N,IAFA,IAAIh7C,EAAO,CAAC,MAAO,OAAQ,SAAU,SACjCoJ,EAAS2T,iBAAiB6xB,GACrB11D,EAAI,EAAGA,EAAI8mB,EAAK5mB,OAAQF,IAAK,CAClC,IAAI+D,EAAM+iB,EAAKnlB,SAAS3B,EAAEY,WAAY,KAClC+0E,EAAUzlD,EAAO,SAAWnsB,EAAM,SAClC6xE,EAAW1lD,EAAO,UAAYnsB,GAC9B8xE,EAAW9xE,EAAImhC,cACnBr/B,KAAKymE,YAAY,GAAKuJ,GAAYnvE,MAAMC,WAAWgvE,IAAY,EAAIhvE,WAAWgvE,GAC9E9vE,KAAK0mE,QAAQ,GAAKsJ,GAAYnvE,MAAMC,WAAWivE,IAAa,EAAIjvE,WAAWivE,EAC/E,CAEI9T,EADAj8D,KAAKmrE,WAAa,EAAkBnrE,KAAK2qE,gBAAkB3qE,KAAK2qE,cAAc/gD,UAAUsN,SAAS,cAC3F24C,EAAY5T,IAAM7kD,SAASy3D,iBAAiB/S,UAG5C+T,EAAY5T,IAEtBF,EAAO8T,EAAY9T,KACnB/7D,KAAKsmE,UAAUvK,KAAOA,EAAO/7D,KAAKymE,YAAY1K,KAAO/7D,KAAK0mE,QAAQ3K,KAClE/7D,KAAKsmE,UAAUrK,IAAMpM,EAAIkc,UAAY/rE,KAAKymE,YAAYxK,IAAMj8D,KAAK0mE,QAAQzK,IACzEj8D,KAAKsmE,UAAUtK,MAAQD,EAAO4T,GAAiB3vE,KAAKymE,YAAYzK,MAAQh8D,KAAK0mE,QAAQ1K,OACrFh8D,KAAKsmE,UAAUpK,OAASD,EAAM2T,GAAkB5vE,KAAKymE,YAAYvK,OAASl8D,KAAK0mE,QAAQxK,OAC3F,CACJ,EACAmK,EAAUvrE,UAAUiwE,uBAAyB,SAAUnsD,GACnD,IACIixC,EADAkZ,EAAW/oE,KAAKgpE,eAAepqD,GAE/BqxD,EAAYjwE,KAAK2qE,cAAc3hD,MAAMknD,eAAiB,GACtDpjB,GAA6C,IAAjCluC,EAAI/e,KAAKkE,QAAQ,YAA2C,WAAtB0oD,GAAQ19C,KAAK5O,MAAqBrE,SAAS2wD,GAAQ19C,KAAKwB,SAAW,GASzH,OARIm7B,EAAqB9sB,EAAI/f,OAAQmB,KAAK2qE,iBAAiD,IAA/B/rD,EAAI/e,KAAKkE,QAAQ,UAAmB+oD,GAC5F9sD,KAAK2qE,cAAc3hD,MAAMknD,cAAgB,OACzCrgB,EAAMz4C,SAAS+4D,iBAAiBpH,EAASG,QAASH,EAASI,SAC3DnpE,KAAK2qE,cAAc3hD,MAAMknD,cAAgBD,GAGzCpgB,EAAMjxC,EAAI/f,OAEPgxD,CACX,EAEAwW,EAAUvrE,UAAUsvE,kBAAoB,SAAUva,EAAKugB,GACnD,IAAIxjC,EAOJ,OAFIA,EAJC,EAAkB5sC,KAAKyoE,qBAAuBzoE,KAAKyoE,qBAAuB5Y,EAInE,EAAkBugB,GAAmBvgB,EAATugB,EAH7BpwE,KAAKyoE,mBAKT77B,CACX,EACAy5B,EAAUvrE,UAAUwvE,iBAAmB,SAAU1rD,EAAKyxD,GAElD,IAEI3U,EACAG,EAHAyU,OAA6B3zE,IAAnBiiB,EAAI2xD,WAA2B3xD,EAAI2xD,WAAa3xD,EAAI/f,OAC9DkqE,EAAW/oE,KAAKgpE,eAAepqD,GAG/B4xD,EAAiB,EAAkBF,EAAQzF,cAY/C,GAVIwF,GACA3U,EAAQ17D,KAAK2qC,MAAQo+B,EAASrN,MACzBqN,EAASrN,OAAS8U,EAAiB,EAAIF,EAAQzF,aAAalP,YAAe37D,KAAKopE,kBACrFvN,EAAQ77D,KAAK2qC,MAAQo+B,EAASlN,MACzBkN,EAASlN,OAAS2U,EAAiB,EAAIF,EAAQzF,aAAa/O,WAAc97D,KAAKqpE,oBAGpF3N,EAAQ17D,KAAK2qC,MAAQo+B,EAASrN,MAASqN,EAASrN,MAAQx8D,OAAOitE,YAAensE,KAAKopE,kBACnFvN,EAAQ77D,KAAK2qC,MAAQo+B,EAASlN,MAASkN,EAASlN,MAAQ38D,OAAOgtE,YAAelsE,KAAKqpE,mBAEnFjyD,SAASy3D,mBAAsBwB,IAAiBrwE,KAAK2qC,MAAQ,CAC7D,IAAI8lC,EAAmBr5D,SAASy3D,iBAAiBzG,aAAe,GAAKhxD,SAASy3D,iBAAiBzG,aAAehxD,SAASy3D,iBAAiBD,cAAgBx3D,SAASy3D,iBAAiB/S,UAAY,EAC1L4U,EAAsBt5D,SAASy3D,iBAAiBvG,YAAc,GAAKlxD,SAASy3D,iBAAiBvG,YAAclxD,SAASy3D,iBAAiB8B,aAAev5D,SAASy3D,iBAAiBlT,WAAa,EAC/LD,EAAQgV,EAAsBhV,EAAQtkD,SAASy3D,iBAAiBlT,WAAaD,EAC7EG,EAAQ4U,EAAmB5U,EAAQzkD,SAASy3D,iBAAiB/S,UAAYD,CAC7E,CACA,MAAO,CACHE,KAAML,GAAS17D,KAAK4pE,OAAO7N,KAAO/7D,KAAK4wE,SAAS7U,MAChDE,IAAKJ,GAAS77D,KAAK4pE,OAAO3N,IAAMj8D,KAAK4wE,SAAS3U,KAEtD,EACAoK,EAAUvrE,UAAUkuE,eAAiB,SAAUpqD,GAC3C,OAAIA,EAAI/e,KAAKkE,QAAQ,UAAY,EACtB6a,EAAIkqD,eAAe,GAEvBlqD,CACX,EACAynD,EAAUvrE,UAAU2vE,iBAAmB,SAAU7rD,GAC7C,IAAIsI,EAaJ,OAZIlnB,KAAK2qC,MACD3qC,KAAKktE,OACLhmD,EAAUlnB,KAAKktE,OAAO,CAAE2D,OAAQjyD,EAAKsI,QAASlnB,KAAKnB,UAGnDqoB,EAAU7L,GAAc,MAAO,CAAElB,UAAW,8BAA+BzB,UAAW,cACtFtB,SAAS8zC,KAAKtzB,YAAY1Q,IAI9BA,EAAUlnB,KAAKknB,QAEZA,CACX,EACAm/C,EAAUvrE,UAAU+wE,oBAAsB,SAAUiF,EAAOnE,EAAMO,GAC7DltE,KAAKqnE,WAAWrnE,KAAKunE,OAASuJ,EAAQ,KAAO,CACzCC,UAAWpE,EACXO,OAAQA,EACR8D,eAAgBhxE,KAAKknB,QAE7B,EACAm/C,EAAUvrE,UAAU+xE,mBAAqB,SAAUjuD,GAC/C,IAAI/f,EAASmB,KAAK+qE,uBAAuBnsD,GACrCqyD,EAAUjxE,KAAKkxE,gBAAgBryE,GACnC,IAAKoyE,GAAWpyE,IAAW,EAAkBA,EAAOwb,YAAa,CAC7D,IAAIwkD,EAAW7M,GAAQnzD,EAAOwb,WAAY,iBAAmBxb,EAAOsyE,cAChEtS,IACAoS,EAAUjxE,KAAKkxE,gBAAgBrS,GAEvC,CACA,MAAO,CAAEhgE,OAAQA,EAAQojB,SAAUgvD,EACvC,EACA5K,EAAUvrE,UAAUo2E,gBAAkB,SAAUrhB,GAC5C,IACIp1C,EADAta,EAAO,gBAEPixE,EAAUvhB,GAAOA,EAAI4E,cACzB,GAAI2c,EACA,IAAK,IAAI9tD,EAAK,EAAG+tD,EAAYD,EAAS9tD,EAAK+tD,EAAUh3E,OAAQipB,IAAM,CAC/D,IAAIwpB,EAAOukC,EAAU/tD,GACrB,GAA0B,cAAtBwpB,EAAK,GAAK3sC,KAAyB,CACnCsa,EAAOqyB,EACP,KACJ,CACJ,CAEJ,OAAOryB,CACX,EACA4rD,EAAUvrE,UAAUunD,QAAU,WAC1BriD,KAAKsnE,cAAa,GAClB1O,EAAO99D,UAAUunD,QAAQrnD,KAAKgF,KAClC,EAEA,GAAW,CACPg3D,GAAQ,CAAC,EAAGoP,KACbC,EAAUvrE,UAAW,gBAAY,GACpC,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,aAAS,GACjC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,gBAAY,GACpC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,oBAAgB,GACxC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,wBAAoB,GAC5C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,uBAAmB,GAC3C,GAAW,CACP,MACDurE,EAAUvrE,UAAW,YAAQ,GAChC,GAAW,CACP,MACDurE,EAAUvrE,UAAW,iBAAa,GACrC,GAAW,CACP,MACDurE,EAAUvrE,UAAW,gBAAY,GACpC,GAAW,CACP+7D,GAAS,IACVwP,EAAUvrE,UAAW,gBAAY,GACpC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,cAAU,GAClC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,aAAS,GACjC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,cAAU,GAClC,GAAW,CACP+7D,GAAS,YACVwP,EAAUvrE,UAAW,aAAS,GACjC,GAAW,CACP+7D,GAAS,KACVwP,EAAUvrE,UAAW,kBAAc,GACtC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,YAAQ,GAChC,GAAW,CACP+7D,MACDwP,EAAUvrE,UAAW,yBAAqB,GAC7C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,sBAAkB,GAC1C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,yBAAqB,GAC7C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,sBAAkB,GAC1C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,wBAAoB,GAC5C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,qBAAiB,GACzC,GAAW,CACP+7D,GAAS,MACVwP,EAAUvrE,UAAW,wBAAoB,GAC5C,GAAW,CACP+7D,IAAS,IACVwP,EAAUvrE,UAAW,2BAAuB,GAC/CurE,EAAYE,EAAc,GAAW,CACjClP,IACDgP,GACIA,CACX,CA11B8B,CA01B5B7T,IC35BE,GAAwC,WACxC,IAAI0F,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxC,GAA0C,SAAUE,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,EAsBIuuC,GAA2B,SAAU1Y,GAErC,SAAS0Y,EAAUpqD,EAAS9J,GACxB,IAAI7O,EAAQqqD,EAAO59D,KAAKgF,KAAMod,EAAS8J,IAAYlnB,KAKnD,OAJAuO,EAAMgjE,WAAY,EAClBhjE,EAAMy+D,SAAW,CAAC,EAClBz+D,EAAMihE,gBAAiB,EACvBjhE,EAAM5O,OACC4O,CACX,CAwFA,OAhGA,GAAU+iE,EAAW1Y,GASrB0Y,EAAUx2E,UAAU6E,KAAO,WACvBK,KAAKwxE,YACT,EACAF,EAAUx2E,UAAU02E,WAAa,WAC7BjjB,GAAavoD,IAAIhG,KAAKknB,QAASulC,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAKyvE,QAASzvE,KAC1G,EAGAsxE,EAAUx2E,UAAUm5D,kBAAoB,SAAU4G,EAASC,GAE3D,EACAwW,EAAUx2E,UAAU05D,cAAgB,WAChC,MAAO,WACX,EACA8c,EAAUx2E,UAAUmyE,QAAU,SAAU9iE,EAAO+c,GAC3C,IAAKlnB,KAAKuxE,UAAW,CACjB,IAAI5E,EAAO3sE,KAAKgtE,SAAShtE,KAAKunE,OAC9BvnE,KAAKovD,QAAQ,OAAQ,CAAEjlD,MAAOA,EAAOtL,OAAQqoB,EAAS8lD,SAAUL,IAChE3sE,KAAKuxE,WAAY,CACrB,CACJ,EACAD,EAAUx2E,UAAUq0E,OAAS,SAAUhlE,EAAO+c,GACtClnB,KAAKuxE,YACLvxE,KAAKovD,QAAQ,MAAO,CAAExwC,IAAKzU,EAAOtL,OAAQqoB,IAC1ClnB,KAAKuxE,WAAY,EAEzB,EACAD,EAAUx2E,UAAU20E,QAAU,SAAU7wD,EAAKsI,GACzC,GAAKlnB,KAAKwvE,eAAV,CAIIxvE,KAAKwvE,gBAAiB,EAE1B,IAGIiC,EAHAC,GAAS,EACT/E,EAAO3sE,KAAKgtE,SAAShtE,KAAKunE,OAC1BoK,IAAShF,IAAQA,EAAKO,QAAU5c,GAAUqc,EAAKO,SAE/CyE,IACAF,EAAOzxE,KAAK4xE,WAAWhzD,EAAK+tD,EAAKO,OAAQhmD,GACrClnB,KAAK0xE,SACLA,EAAS3sE,GAAQ4nE,EAAKO,OAAQltE,KAAK0xE,UAGvCC,GAAU3xE,KAAKya,MAAQg3D,EAAKI,SAAWH,GACvC1xE,KAAKovD,QAAQ,OAAQ,CAAEjlD,MAAOyU,EAAK/f,OAAQ4yE,EAAK5yE,OAAQizE,eAAgBnF,EAAKO,OAAQF,SAAUL,IAEnG3sE,KAAKuxE,WAAY,CAdjB,CAeJ,EACAD,EAAUx2E,UAAU82E,WAAa,SAAUhzD,EAAKsuD,EAAQhmD,GACpD,IAAIuqD,EAAO,CAAEI,SAAS,EAAMhzE,OAAQqoB,GAAWtI,EAAI/f,QAC/CkuD,EAAuB,aAAbnuC,EAAI/e,KAClB,GAAIktD,GAAW0kB,EAAK5yE,SAAWquE,EAAQ,CACnCA,EAAOlkD,MAAM+oD,QAAU,OACvB,IAAIC,EAAQjlB,EAAWnuC,EAAIkqD,eAAe,GAAMlqD,EAC5CixC,EAAMz4C,SAAS+4D,iBAAiB6B,EAAM9I,QAAS8I,EAAM7I,SACzDsI,EAAKI,SAAU,EACfJ,EAAKI,QAAUnmC,EAAqBmkB,EAAK7vD,KAAKknB,SAC1CuqD,EAAKI,UACLJ,EAAK5yE,OAASgxD,GAElBqd,EAAOlkD,MAAM+oD,QAAU,EAC3B,CACA,OAAON,CACX,EACAH,EAAUx2E,UAAUunD,QAAU,WAC1BkM,GAAar2B,OAAOl4B,KAAKknB,QAASulC,GAAQa,WAAa,WAAab,GAAQ4B,cAAeruD,KAAKyvE,SAChG7W,EAAO99D,UAAUunD,QAAQrnD,KAAKgF,KAClC,EACA,GAAW,CACP62D,MACDya,EAAUx2E,UAAW,cAAU,GAClC,GAAW,CACP+7D,GAAS,YACVya,EAAUx2E,UAAW,aAAS,GACjC,GAAW,CACP,MACDw2E,EAAUx2E,UAAW,YAAQ,GAChC,GAAW,CACP,MACDw2E,EAAUx2E,UAAW,YAAQ,GAChC,GAAW,CACP,MACDw2E,EAAUx2E,UAAW,WAAO,GAC/Bw2E,EAAY,GAAW,CACnBja,IACDia,GACIA,CACX,CAlG8B,CAkG5B9e,IC1IE,GAAwC,WACxC,IAAI0F,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxC,GAA0C,SAAUE,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,EAGIkvC,GAAU,CACV,UAAa,EACb,IAAO,EACP,MAAS,GACT,MAAS,GACT,QAAW,GACX,IAAO,GACP,MAAS,GACT,SAAY,GACZ,MAAS,GACT,OAAU,GACV,OAAU,GACV,SAAY,GACZ,IAAO,GACP,KAAQ,GACR,UAAa,GACb,QAAW,GACX,WAAc,GACd,UAAa,GACb,OAAU,GACV,OAAU,GACV,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,UAAa,IACb,KAAQ,IACR,MAAS,IACT,MAAS,IACT,IAAO,IACP,aAAgB,IAChB,YAAe,IACf,YAAe,IACf,UAAa,IACb,aAAgB,IAChB,YAAe,KAkBfC,GAAgC,SAAUtZ,GAQ1C,SAASsZ,EAAehrD,EAAS9J,GAC7B,IAAI7O,EAAQqqD,EAAO59D,KAAKgF,KAAMod,EAAS8J,IAAYlnB,KA8BnD,OAvBAuO,EAAM4jE,gBAAkB,SAAUntE,GAM9B,IALA,IAAIotE,EAAWptE,EAAEqtE,OACbC,EAAYttE,EAAEutE,QACdC,EAAaxtE,EAAEytE,SACfC,EAAa1tE,EAAE2tE,MACf1xD,EAAOpmB,OAAOomB,KAAK1S,EAAMqkE,YACpBtvD,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAGhD,IAFA,IAAIplB,EAAMmsC,EAAO/mB,GACbuvD,EAAmBtkE,EAAMqkE,WAAW,GAAK10E,GAAKmG,MAAM,KAC/CwoC,EAAK,EAAGimC,EAAqBD,EAAkBhmC,EAAKimC,EAAmBz4E,OAAQwyC,IAAM,CAC1F,IAAIkmC,EAAUD,EAAmBjmC,GAC7BmmC,EAAUC,EAAiBC,iBAAiBH,EAAQ5oD,QACpDioD,IAAaY,EAAQX,QAAUC,IAAcU,EAAQT,SACrDC,IAAeQ,EAAQP,UAAYC,IAAeM,EAAQf,UAC1DjtE,EAAE4xD,OAAS14D,EACPqQ,EAAM4kE,WACN5kE,EAAM4kE,UAAUnuE,GAG5B,CAER,EACAuJ,EAAM5O,OACC4O,CACX,CAmFA,IAAI0kE,EAcJ,OAxIA,GAAUf,EAAgBtZ,GAwC1Bqa,EAAmBf,EAMnBA,EAAep3E,UAAUunD,QAAU,WAC/BriD,KAAKozE,eACLxa,EAAO99D,UAAUunD,QAAQrnD,KAAKgF,KAClC,EAUAkyE,EAAep3E,UAAUm5D,kBAAoB,SAAU4G,EAASC,GAEhE,EACAoX,EAAep3E,UAAU6E,KAAO,WAC5BK,KAAKwxE,YACT,EAOAU,EAAep3E,UAAU05D,cAAgB,WACrC,MAAO,UACX,EAOA0d,EAAep3E,UAAU02E,WAAa,WAClCxxE,KAAKknB,QAAQ1N,iBAAiBxZ,KAAK0uD,UAAW1uD,KAAKmyE,gBACvD,EAOAD,EAAep3E,UAAUs4E,aAAe,WACpCpzE,KAAKknB,QAAQtK,oBAAoB5c,KAAK0uD,UAAW1uD,KAAKmyE,gBAC1D,EAOAD,EAAegB,iBAAmB,SAAUjjE,GACxC,GAAIA,KAAUjQ,KAAKqzE,YACf,OAAOrzE,KAAKqzE,YAAY,GAAKpjE,GAEjC,IAAIgR,EAAOhR,EAAOovB,cAAch7B,MAAM,KAClCivE,EAAU,CACVjB,QAAkC,IAAzBpxD,EAAKld,QAAQ,OACtBwuE,SAAoC,IAA1BtxD,EAAKld,QAAQ,QACvB0uE,UAAsC,IAA3BxxD,EAAKld,QAAQ,SACxBkuE,QAAS,MASb,OAPIhxD,EAAKA,EAAK5mB,OAAS,GAAGA,OAAS,GAAOwI,OAAOoe,EAAKA,EAAK5mB,OAAS,IAChEi5E,EAAQrB,QAAUpvE,OAAOoe,EAAKA,EAAK5mB,OAAS,IAG5Ci5E,EAAQrB,QAAUgB,EAAiBM,WAAWtyD,EAAKA,EAAK5mB,OAAS,IAErE44E,EAAiBI,YAAY,GAAKpjE,GAAUqjE,EACrCA,CACX,EAEApB,EAAeqB,WAAa,SAAUC,GAClC,OAAOvB,GAAQ,GAAKuB,IAAWA,EAAOryE,cAAc+sB,WAAW,EACnE,EAEAgkD,EAAemB,YAAc,CAAC,EAC9B,GAAW,CACPxc,GAAS,CAAC,IACXqb,EAAep3E,UAAW,kBAAc,GAC3C,GAAW,CACP+7D,GAAS,UACVqb,EAAep3E,UAAW,iBAAa,GAC1C,GAAW,CACP,MACDo3E,EAAep3E,UAAW,iBAAa,GAC1Co3E,EAAiBe,EAAmB,GAAW,CAC3C5b,IACD6a,GACIA,CACX,CA1ImC,CA0IjC1f,ICnMEihB,GAAsB,WAQtB,SAASA,EAAKC,EAAaC,EAAen+D,GACtCxV,KAAK0zE,YAAcA,EACnB1zE,KAAK2zE,cAAgBA,EACrB3zE,KAAK4zE,UAAUp+D,GAAUktC,GAC7B,CAiDA,OA1CA+wB,EAAK34E,UAAU84E,UAAY,SAAUp+D,GACjC,IAAIq+D,EAAY7zE,KAAK8zE,sBAAsBL,EAAKj+D,OAAQA,GACxDxV,KAAK+zE,cAAgBF,GAAa7zE,KAAK2zE,aAC3C,EAOAF,EAAK90E,KAAO,SAAUq1E,GAClBh0E,KAAKwV,OAAS,EAAOxV,KAAKwV,OAAQw+D,EAAc,CAAC,GAAG,EACxD,EAOAP,EAAK34E,UAAUm5E,YAAc,SAAU54E,GAEnC,OAAK,EAAkB2E,KAAK+zE,cAAc,GAAK14E,IAIpC2E,KAAK2zE,cAAc,GAAKt4E,IAAS,GAHjC2E,KAAK+zE,cAAc,GAAK14E,EAKvC,EAQAo4E,EAAK34E,UAAUg5E,sBAAwB,SAAUr0B,EAAWjqC,GACxD,OAAI,EAAY,GAAKA,GACV,EAAY,GAAKA,GAAQxV,KAAK0zE,aAElC,IACX,EACAD,EAAKj+D,OAAS,CAAC,EACRi+D,CACX,CA9DyB,GCzBrB,GAAwC,WACxC,IAAIvb,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxC,GAA0C,SAAUE,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,EAUImxC,GAA+B,SAAUtb,GAEzC,SAASsb,IACL,OAAkB,OAAXtb,GAAmBA,EAAOlpD,MAAM1P,KAAMlB,YAAckB,IAC/D,CAIA,OAPA,GAAUk0E,EAAetb,GAIzB,GAAW,CACP/B,GAAS,KACVqd,EAAcp5E,UAAW,8BAA0B,GAC/Co5E,CACX,CATkC,CAShC/V,IAEEgW,GAAa,YAsBbC,GAAuB,SAAUxb,GAGjC,SAASwb,EAAMltD,EAAS9J,GACpB,IAAI7O,EAAQqqD,EAAO59D,KAAKgF,KAAMod,EAAS8J,IAAYlnB,KA6InD,OA5IAuO,EAAM8lE,aAAc,EACpB9lE,EAAM+lE,SAAW,EAMjB/lE,EAAMgmE,WAAa,SAAU31D,GACzB,IAA0B,IAAtBrQ,EAAM8lE,YAAsB,CAC5B,IAAIG,EAAQjmE,EAAMkmE,oBAAoB71D,QACXjiB,IAAvBiiB,EAAIkqD,iBACJv6D,EAAM8lE,aAAc,GAExB9lE,EAAMmmE,cAAe,EACrBnmE,EAAMomE,eAAiB,GACvBpmE,EAAMqmE,WAAarmE,EAAMsmE,eAAiB,CAAE3L,QAASsL,EAAMtL,QAASC,QAASqL,EAAMrL,SACnF56D,EAAMumE,eAAiBN,EACvBjmE,EAAMwmE,cAAgBxmE,EAAMymE,eAAgB,EAC5CzmE,EAAM0mE,YAAcl1E,KAAKm1E,MACzB3mE,EAAM4mE,eAAiB5pE,YAAW,WAAcgD,EAAM6mE,aAAax2D,EAAM,GAAGrQ,EAAMw5D,kBAClFxZ,GAAavoD,IAAIuI,EAAM2Y,QAASulC,GAAQ2B,eAAgB7/C,EAAM8mE,UAAW9mE,GACzEggD,GAAavoD,IAAIuI,EAAM2Y,QAASulC,GAAQ4B,cAAe9/C,EAAM+mE,SAAU/mE,GACvEggD,GAAavoD,IAAIuI,EAAM2Y,QAASulC,GAAQ6B,iBAAkB//C,EAAMgnE,YAAahnE,EACjF,CACJ,EAMAA,EAAM8mE,UAAY,SAAUz2D,GACxB,IAAI41D,EAAQjmE,EAAMkmE,oBAAoB71D,GACtCrQ,EAAMinE,WAAahB,EACnBjmE,EAAMmmE,eAAiBF,EAAMtL,UAAY36D,EAAMqmE,WAAW1L,SAAWsL,EAAMrL,UAAY56D,EAAMqmE,WAAWzL,SACxG,IAAIsM,EAAc,CAAC,EACnB,GAAIlnE,EAAMmmE,aAAc,CACpBlpC,aAAaj9B,EAAM4mE,gBACnB5mE,EAAMmnE,iBAAiB92D,GACvB,IAAI+2D,EAAY,CACZC,YAAarnE,EAAMumE,eACnBe,cAAej3D,EAAKk3D,OAAQvnE,EAAMqmE,WAAW1L,QAC7C6M,OAAQxnE,EAAMqmE,WAAWzL,QAAS6M,UAAWznE,EAAMynE,UACnDC,UAAW1nE,EAAM0nE,UAAWC,gBAAiB3nE,EAAM2nE,gBACnDC,SAAU5nE,EAAM6nE,YAAY5B,IAEhCiB,EAAc,EAAOA,EAAa,CAAC,EAAGE,GACtCpnE,EAAM6gD,QAAQ,SAAUqmB,GACxBlnE,EAAMsmE,eAAiB,CAAE3L,QAASsL,EAAMtL,QAASC,QAASqL,EAAMrL,QACpE,CACJ,EAMA56D,EAAMgnE,YAAc,SAAU32D,GAC1B4sB,aAAaj9B,EAAM4mE,gBACnB3pC,aAAaj9B,EAAM8nE,YACnB9nE,EAAM+lE,SAAW,EACjB/lE,EAAM+nE,QAAQ13D,GACd2vC,GAAar2B,OAAO3pB,EAAM2Y,QAASulC,GAAQ6B,iBAAkB//C,EAAMgnE,YACvE,EAMAhnE,EAAM+mE,SAAW,SAAU12D,GACvBrQ,EAAM+nE,QAAQ13D,GACTrQ,EAAMmmE,cACkB,oBAAdnmE,EAAMgoE,MACbhoE,EAAM6gD,QAAQ,MAAO,CAAEymB,cAAej3D,EAAK01D,WAAY/lE,EAAM+lE,WAC7D/lE,EAAM8nE,WAAa9qE,YAAW,WAC1BgD,EAAM+lE,SAAW,CACrB,GAAG/lE,EAAMioE,eAGjBjoE,EAAMkoE,WACV,EAMAloE,EAAM+nE,QAAU,SAAU13D,GACtB4sB,aAAaj9B,EAAM4mE,gBACnB3pC,aAAaj9B,EAAM8nE,YACnB,IAAI7B,EAAQjmE,EAAMkmE,oBAAoB71D,GAClC+nD,EAAQ6N,EAAMtL,QAAU36D,EAAMqmE,WAAW1L,QACzChC,EAAQsN,EAAMrL,QAAU56D,EAAMqmE,WAAWzL,QAC7CxC,EAAQ75D,KAAK4jC,MAAMi2B,EAAQ,GAAK,EAAIA,EAAQA,GAC5CO,EAAQp6D,KAAK4jC,MAAMw2B,EAAQ,GAAK,EAAIA,EAAQP,GAC5Cp4D,EAAMmmE,aAAe/N,EAAQ,GAAKO,EAAQ,EAC1C,IAAIwP,EAAY,UAAYl4E,KAAKiuD,GAAQjgD,WACrCkqE,GAA+B,IAAlBlC,EAAMtL,SAAmC,IAAlBsL,EAAMrL,SAA8B,YAAbvqD,EAAI/e,OAC/D0O,EAAMmmE,cAAe,GAEzBnmE,EAAMooE,SAAWnC,EACjBjmE,EAAMqoE,WAAWh4D,GACjB,IAAIi4D,EAAY,CACZhB,cAAej3D,EACfg3D,YAAarnE,EAAMumE,eACnBgB,OAAQvnE,EAAMqmE,WAAW1L,QACzB6M,OAAQxnE,EAAMqmE,WAAWzL,QACzB6M,UAAWznE,EAAMynE,UAAWC,UAAW1nE,EAAM0nE,UAAWa,eAAgBvoE,EAAMomE,eAC9EwB,SAAU5nE,EAAM6nE,YAAY5B,IAEhC,GAAIjmE,EAAMmmE,aAAc,CACpB,IAAIqC,OAAa,EACbC,EAAYzoE,EAAM0oE,cAAcC,uBAEpCH,EAAa,EAAOA,EAAYxoE,EAAM4oE,YAAaN,GACnD,IAAIO,GAAa,EACbvnB,EAAMthD,EAAM2Y,QACZmwD,EAAa9oE,EAAM+oE,aAAaznB,GAChC0nB,EAAQpD,GAAW31E,KAAK+P,EAAMomE,iBAC7BqC,EAAYzoE,EAAMynE,YAAcuB,GAAWP,EAAYzoE,EAAM0nE,WAAasB,KAKvEH,GAJCC,GAIY9oE,EAAMipE,WAAW3nB,EAAK0nB,IAGvCH,GACA7oE,EAAM6gD,QAAQ,QAAS2nB,EAE/B,CACAxoE,EAAMkoE,WACV,EACAloE,EAAMkoE,UAAY,WACdloE,EAAMkpE,UAAYlsE,YAAW,WACzBgD,EAAM8lE,aAAc,CACxB,GAAyB,oBAAd9lE,EAAMgoE,IAAqB,EAAI,IAC1ChoE,EAAMmpE,aAAc,IAAI33E,MAAOsN,UAC/BkhD,GAAar2B,OAAO3pB,EAAM2Y,QAASulC,GAAQ2B,eAAgB7/C,EAAM8mE,WACjE9mB,GAAar2B,OAAO3pB,EAAM2Y,QAASulC,GAAQ4B,cAAe9/C,EAAM+mE,UAChE/mB,GAAar2B,OAAO3pB,EAAM2Y,QAASulC,GAAQ6B,iBAAkB//C,EAAMgnE,YACvE,EACAhnE,EAAM5O,OACC4O,CACX,CAmJA,OApSA,GAAU6lE,EAAOxb,GA2JjBwb,EAAMt5E,UAAUm5D,kBAAoB,SAAU4G,EAASC,GAEvD,EACAsZ,EAAMt5E,UAAU6E,KAAO,WACnBK,KAAKwxE,aACD/kB,GAAQsC,MACR/uD,KAAKknB,QAAQ0C,UAAU5jB,IAAI,gBAEnC,EAMAouE,EAAMt5E,UAAUunD,QAAU,WACtBriD,KAAKozE,eACLxa,EAAO99D,UAAUunD,QAAQrnD,KAAKgF,KAClC,EAEAo0E,EAAMt5E,UAAU02E,WAAa,WACzBjjB,GAAavoD,IAAIhG,KAAKknB,QAASulC,GAAQ0B,gBAAiBnuD,KAAKu0E,WAAYv0E,KAC7E,EACAo0E,EAAMt5E,UAAUs4E,aAAe,WAC3B7kB,GAAar2B,OAAOl4B,KAAKknB,QAASulC,GAAQ0B,gBAAiBnuD,KAAKu0E,WACpE,EAOAH,EAAMt5E,UAAU05D,cAAgB,WAC5B,MAAO,OACX,EAOA4f,EAAMt5E,UAAUw8E,aAAe,SAAUpwD,GACrC,IAAIywD,EAAW35C,iBAAiB9W,GAC5B8B,EAAQ2uD,EAAS7I,SAAW6I,EAASC,UAAYD,EAASE,UAC9D,QAAI,gBAAkBr5E,KAAKwqB,EAI/B,EAMAorD,EAAMt5E,UAAUs6E,aAAe,SAAUx2D,GAGrC,IAAIk5D,EAFJ93E,KAAKs0E,SAAW,EAChBt0E,KAAKq0E,aAAc,EAEnB9lB,GAAar2B,OAAOl4B,KAAKknB,QAASulC,GAAQ2B,eAAgBpuD,KAAKq1E,WAC/D9mB,GAAar2B,OAAOl4B,KAAKknB,QAASulC,GAAQ4B,cAAeruD,KAAKs1E,UAE9DwC,EAAW,CAAEjC,cAAej3D,GAC5B5e,KAAKovD,QAAQ,UAAW0oB,GACxBvpB,GAAar2B,OAAOl4B,KAAKknB,QAASulC,GAAQ6B,iBAAkBtuD,KAAKu1E,YACrE,EACAnB,EAAMt5E,UAAU87E,WAAa,SAAUh4D,GACnC,IAAI41D,EAAQx0E,KAAKy0E,oBAAoB71D,GACrC5e,KAAKm3E,YAAc,CAAEtB,cAAej3D,GACpC5e,KAAKg2E,UAAYlpE,KAAK0pC,IAAK1pC,KAAK0pC,IAAIg+B,EAAMtL,SAAWp8D,KAAK0pC,IAAIx2C,KAAK40E,WAAW1L,UAC9ElpE,KAAKi2E,UAAYnpE,KAAK0pC,IAAK1pC,KAAK0pC,IAAIg+B,EAAMrL,SAAWr8D,KAAK0pC,IAAIx2C,KAAK40E,WAAWzL,UAC1EnpE,KAAKg2E,UAAYh2E,KAAKi2E,UACtBj2E,KAAK20E,eAAkBH,EAAMtL,QAAUlpE,KAAK40E,WAAW1L,QAAW,QAAU,OAG5ElpE,KAAK20E,eAAkBH,EAAMrL,QAAUnpE,KAAK40E,WAAWzL,QAAW,KAAO,MAEjF,EACAiL,EAAMt5E,UAAU46E,iBAAmB,SAAU92D,GACzC,IAAI41D,EAAQx0E,KAAKy0E,oBAAoB71D,GACrC5e,KAAKm3E,YAAc,CAAEtB,cAAej3D,GACpC5e,KAAKg2E,UAAYlpE,KAAK0pC,IAAK1pC,KAAK0pC,IAAIg+B,EAAMtL,SAAWp8D,KAAK0pC,IAAIx2C,KAAK60E,eAAe3L,UAClFlpE,KAAKi2E,UAAYnpE,KAAK0pC,IAAK1pC,KAAK0pC,IAAIg+B,EAAMrL,SAAWr8D,KAAK0pC,IAAIx2C,KAAK60E,eAAe1L,WAC7EnpE,KAAKg2E,UAAYh2E,KAAKi2E,YAAoC,IAAvBj2E,KAAK+0E,iBAAkD,IAAvB/0E,KAAKg1E,eACzEh1E,KAAKk2E,gBAAmB1B,EAAMtL,QAAUlpE,KAAK60E,eAAe3L,QAAW,QAAU,OACjFlpE,KAAK+0E,eAAgB,IAGrB/0E,KAAKk2E,gBAAmB1B,EAAMrL,QAAUnpE,KAAK60E,eAAe1L,QAAW,KAAO,OAC9EnpE,KAAKg1E,eAAgB,EAE7B,EACAZ,EAAMt5E,UAAUs7E,YAAc,SAAU2B,GACpC,IAAIC,EAAOD,EAAI7O,QACX+O,EAAOF,EAAI5O,QACX+O,EAAOn4E,KAAKm1E,MACZiD,EAAQH,EAAOh4E,KAAK40E,WAAW1L,QAC/BkP,EAAQH,EAAOj4E,KAAK40E,WAAW1L,QAC/B58B,EAAW4rC,EAAOl4E,KAAKi1E,YAC3B,OAAOnoE,KAAKsvD,KAAK+b,EAAQA,EAAQC,EAAQA,GAAS9rC,CACtD,EAEA8nC,EAAMt5E,UAAU08E,WAAa,SAAU3nB,EAAKhU,GACxC,IAAI56B,EAAO,CAAC,SAAU,UAClB24B,EAAOiC,EAAO,CAAC,SAAU,OAAS,CAAC,QAAS,QAChD,OAAKgU,EAAI5uC,EAAK,GAAK24B,EAAK,KAAOiW,EAAI5uC,EAAK,GAAK24B,EAAK,MAGf,IAA3BiW,EAAI5uC,EAAK,GAAK24B,EAAK,KACtBiW,EAAI5uC,EAAK,GAAK24B,EAAK,IAAMiW,EAAI5uC,EAAK,GAAK24B,EAAK,KAAOiW,EAAI5uC,EAAK,GAAK24B,EAAK,IAC/E,EACAw6B,EAAMt5E,UAAU25E,oBAAsB,SAAU71D,GAC5C,IAAI41D,EAAQ51D,EAAIkqD,gBAAgD,IAA9BlqD,EAAIkqD,eAAezuE,OAAeukB,EAAIkqD,eAAe,GAAKlqD,EAC5F,OAAO41D,CACX,EACA,GAAW,CACP,MACDJ,EAAMt5E,UAAW,WAAO,GAC3B,GAAW,CACP,MACDs5E,EAAMt5E,UAAW,eAAW,GAC/B,GAAW,CACP,MACDs5E,EAAMt5E,UAAW,aAAS,GAC7B,GAAW,CACP,MACDs5E,EAAMt5E,UAAW,cAAU,GAC9B,GAAW,CACP+7D,GAAS,MACVud,EAAMt5E,UAAW,oBAAgB,GACpC,GAAW,CACP+7D,GAAS,MACVud,EAAMt5E,UAAW,wBAAoB,GACxC,GAAW,CACPk8D,GAAQ,CAAC,EAAGkd,KACbE,EAAMt5E,UAAW,qBAAiB,GACrCs5E,EAAQ,GAAW,CACf/c,IACD+c,GACIA,CACX,CAtS0B,CAsSxB5hB,IChWE6lB,GAAQ,IAAInxE,OAAO,kBAAmB,KACtCoxE,GAAS,IAAIpxE,OAAO,QACpBqxE,GAAU,IAAIrxE,OAAO,WACrBsxE,GAAc,IAAItxE,OAAO,gBACzBuxE,GAAY,IAAIvxE,OAAO,QACvBwxE,GAAW,IAAIxxE,OAAO,YACtByxE,GAAY,IAAIzxE,OAAO,cACvB0xE,GAAgB,IAAI1xE,OAAO,aAAc,IACzC2xE,GAAa,IAAI3xE,OAAO,WAAY,KACpC4xE,GAAO,IAAI5xE,OAAO,iBAAkB,KACpC6xE,GAAiB,IAAI7xE,OAAO,UAAW,KACvC8xE,GAAS,IAAI9xE,OAAO,qBAAsB,KAC1C+xE,GAAM,IAAI/xE,OAAO,eAAgB,KAEjCgyE,GAAU,UACVC,GAAe,OACfC,GAAe,SACfC,GAAW,IAAInyE,OAAO,oBAAqB,KAC3CoyE,GAAa,cAuCV,SAASC,GAAQC,EAAUtM,EAAQuM,GACtC,GAAwB,oBAAbD,EACP,OAAOA,EAGP,IAAIE,EAAU,OACVC,EAAgBC,GAAQJ,EAAUE,EAASxM,EAAQuM,GAEnDI,EAAW,s8CACXC,EAAS,YAAeH,EAAgB,KAAQE,EAAW,eAC3D7/E,EAAK,IAAI2uC,SAAS+wC,EAASI,GAC/B,OAAO9/E,EAAG2F,KAAKutE,EAEvB,CASA,SAAS0M,GAAQ34E,EAAKsoC,EAAW2jC,EAAQuM,GACrC,IAAIM,EAAW,EAIXC,EAAY,GACZC,EAAUh5E,EAAIwC,MAAM,yBACpBy2E,EAAc,GAOlB,OANID,GACAA,EAAQz4D,SAAQ,SAAU3lB,GACtBq+E,EAAcr+E,EAAMsI,QAAQ,SAAU,KACtClD,EAAMA,EAAIkD,QAAQtI,EAAOq+E,EAC7B,IAEGj5E,EAAIkD,QAAQk0E,GAAO,IAAIl0E,QAAQ40E,GAAgB,QAAU50E,QAAQ80E,IAExE,SAAUx1E,EAAO02E,EAAKrlD,EAAQslD,GAC1B,IAAIC,EAAe,WACft1E,EAAUo1E,EAAI12E,MAAMm1E,IAExB,GAAI7zE,EAAS,CACT,IAAIu1E,EAAQv1E,EAAQ,GACpB,GAAIyzE,GAAYh6E,KAAK27E,GAEjBA,EAAM,OAASA,EAAIh2E,QAAQY,EAAQ,GAAIu1E,EAAMn2E,QAAQ20E,IAAM,SAAU73E,GAEjE,OADAA,EAAMA,EAAIkpB,OACHowD,GAAat5E,GAAOq3E,GAAO95E,KAAKyC,KAAsC,IAA5B+4E,EAAUj2E,QAAQ9C,GAAcsoC,EAAWywC,EAAWP,EAC3G,KAAM,0BAEL,GAAIlB,GAAQ/5E,KAAK27E,GAElBA,EAAM,MAAQA,EAAIh2E,QAAQY,EAAQ,GAAIu1E,EAAMn2E,QAAQ60E,IAAQ,SAAUwB,GAClE,OAAOC,GAAwBD,EAAMjxC,EAAWywC,EAAWP,EAC/D,KAAM,0BAEL,GAAIf,GAASl6E,KAAK27E,GAAM,CAEzB,IAAIO,EAAU31E,EAAQ,GAAGV,MAAM,QAG/B81E,EAAM,MAAQA,EAAIh2E,QAAQY,EAAQ,IAAI,SAAU41E,GAK5C,OAJAX,EAAUx+E,KAAKk/E,EAAQ,IACvBV,EAAUx+E,KAAKk/E,EAAQ,GAAK,SAC5BX,GAAsB,EAEf,QAAUA,EAAW,QAAUA,EAAW,MAAQQ,GAAaG,EAAQ,IAAI,EAAMnxC,EAAWywC,EAAWP,GAAgB,aAAeM,EAAW,IAC5J,IAAK,QAAUW,EAAQ,GAAK,KAAOH,GAAaG,EAAQ,IAAI,EAAMnxC,EAAWywC,EAAWP,GAClF,KAAOM,EAAW,aAAeW,EAAQ,GAAK,UAAYX,EAAW,oBAC/E,KACK,CAED,IAAIa,EAAQT,EAAI91E,MAAM,KAElBw2E,EAAc3N,GAAUA,EAAO3xE,eAAeq/E,EAAM,IAAM,QAAU,SACxEC,EAAc,KAAKr8E,KAAKo8E,EAAM,IAAM,GAAKC,EACzC,IAAIC,EAAU/1E,EAAQ,GAAGV,MAAM,KACL,IAAtBU,EAAQ,GAAG1K,QAAiB,OAASmE,KAAKs8E,EAAQ,KAAQ,UAAYt8E,KAAKs8E,EAAQ,MACnF/1E,EAAQ,GAAqB,WAAf81E,EAA0BtxC,EAAY,IAAMxkC,EAAQ,GAAKA,EAAQ,IAEnF,IAAIg2E,EAAY,WACZC,EAAS,SACb,GAAI1B,GAAW96E,KAAK27E,IAAQa,EAAOx8E,KAAK27E,IAAQY,EAAUv8E,KAAK27E,GAAM,CACjE,IAAIc,EAAe,gBACfA,EAAaz8E,KAAK27E,KAElBA,EAAM,OAAwB,WAAfU,EAA0B,GAAKA,GAAcV,EAAIh2E,QAAQY,EAAQ,GAAIu1E,EAAMn2E,QAAQk1E,IAAU,SAAUmB,GAClH,OAAOC,GAAwBD,EAAMjxC,EAAWywC,EAAWP,EAC/D,KAAM,MAEd,MAEIU,EAAM,QAAyB,WAAfU,EAA0B,GAAKA,GAC3CV,EAAIh2E,QAAQm2E,EAAOC,GAAax1E,EAAQ,GAAGZ,QAAQ,iBAAkB,IAAMolC,EAAY,KAAKplC,QAAQ,qBAAsB,WAA4B,WAAf02E,EAAyCtxC,EAAWywC,EAAWP,IACtM,IAEZ,CACJ,MACShB,GAAUj6E,KAAK27E,GAEpBA,EAAM,MAAQA,EAAIh2E,QAAQs0E,GAAW,6BAG9B0B,EAAI12E,MAAMk1E,IAEjBwB,EAAMA,EAAIh2E,QAAQw0E,GAAW,4BAExB0B,EAAa77E,KAAK27E,IAEnBA,EAAI12E,MAAM01E,MACVgB,EAAMe,GAAaf,IAEvBA,EAAM,KAAOgB,GAAwBhB,GAAkC,IAA5BH,EAAUj2E,QAAQo2E,GAAc5wC,EAAWywC,GAAa,QAI/FG,EAAI12E,MAAM01E,KACVgB,EAAMe,GAAaf,GACnBA,EAAM,KAAOgB,GAAwBhB,GAAkC,IAA5BH,EAAUj2E,QAAQo2E,GAAc5wC,EAAWywC,GAAa,QAInGG,EAAc,KAARA,EAAa,KAAOI,GAAaJ,EAAIh2E,QAAQ,MAAO,IAAMolC,EAAY,MAAmC,IAA5BywC,EAAUj2E,QAAQo2E,GAAc5wC,EAAWywC,EAAWP,GAAgB,KAAO,IAGxK,OAAOU,CACX,GACJ,CAUA,SAASI,GAAat5E,EAAKm6E,EAAO7xC,EAAWs8B,EAAY4T,GACrD,OAAS2B,GAAWvC,GAAWr6E,KAAKyC,KAAoD,IAA3C4kE,EAAW9hE,QAAQ9C,EAAIoD,MAAM,KAAK,KAAeo1E,GAAwB,SAARx4E,GAA0B,UAARA,EAA2CA,EAAxBsoC,EAAY,IAAMtoC,CACzK,CASA,SAASo6E,GAAgBp6E,EAAKm6E,EAAO7xC,EAAWs8B,GAC5C,IAAIyV,EAAY,UAChB,OAASF,GAAWvC,GAAWr6E,KAAKyC,KACW,IAA3C4kE,EAAW9hE,QAAQ9C,EAAIoD,MAAM,KAAK,KAAgBi3E,EAAU98E,KAAKyC,GAAiCA,EAAxBsoC,EAAY,IAAMtoC,CACpG,CAaA,SAASk6E,GAAwBl6E,EAAKm6E,EAAO7xC,EAAWs8B,GACpD,OAASuV,IAAWvC,GAAWr6E,KAAKyC,KAAoD,IAA3C4kE,EAAW9hE,QAAQ9C,EAAIoD,MAAM,KAAK,IAAcklC,EAAY,KAAOtoC,EAAMA,CAC1H,CAEA,SAASi6E,GAAaK,GAClB,IAAIC,EAAS,OAQb,OAPID,EAAQ93E,MAAM21E,MAKdmC,EAAUA,EAAQp3E,QAAQg1E,GAAcqC,IAErCD,CACX,CASA,SAASd,GAAwBx5E,EAAKw6E,EAAcx6D,EAAMw4D,GACtDx4E,EAAMA,EAAIkpB,OACV,IAAIuxD,EAAa,cACjB,GAAKA,EAAWl9E,KAAKyC,GAcjB,OAAOA,EAbP,IAAI06E,EAAS,QACTZ,EAAY,WAIhB,OAHIA,EAAUv8E,KAAKyC,KACfA,EAAMk6E,GAAwBl6E,GAA6B,IAAvBggB,EAAKld,QAAQ9C,GAAcw6E,EAAcx6D,GAAQ,MAErFi4D,GAAQ16E,KAAKyC,GACNo6E,GAAgBp6E,GAAO06E,EAAOn9E,KAAKyC,KAAiC,IAAvBggB,EAAKld,QAAQ9C,GAAcw6E,EAAcx6D,GAGtFs5D,GAAat5E,GAAO06E,EAAOn9E,KAAKyC,KAAiC,IAAvBggB,EAAKld,QAAQ9C,GAAcw6E,EAAcx6D,EAAMw4D,EAM5G,CCtQA,IAAImC,GAAU,oBACVC,GAAU,2BACHC,GAAkB,CAAC,EAKvB,SAASC,KACZ,MAAO,IAAMjvE,KAAKG,SAASlS,SAAS,IAAIiR,OAAO,EAAG,EACtD,CAWO,SAAS,GAAQgwE,EAAgB9O,EAAQuM,GAC5C,IAAIwC,EAAWC,GAAU3C,QAAQyC,EAAgB9O,EAAQuM,GAEzD,OAAO,SAAU7nE,EAAM1H,EAAWisD,EAAUgmB,EAAYrZ,EAAkB/3D,EAAOmc,EAAS3mB,GACtF,IAAIjF,EAAS2gF,EAASrqE,EAAM1H,EAAWisD,EAAUjvC,EAAS3mB,GACtD67E,EAAmB,mBACvB,GAAIpxC,MAAe83B,EAAkB,CACjC,IAAID,EAAWkZ,KACXM,EAAWF,EAAatZ,EAI5B,GAHKiZ,GAAgB,GAAKK,KACtBL,GAAgB,GAAKK,GAAc,IAElC,EAAkBpxE,GAanB6G,EAAK,GAAKwqE,GAAoBC,EAC9BP,GAAgB,GAAKK,GAAY3gF,KAAKoW,QAZtC,IADA,IAAIqP,EAAOpmB,OAAOomB,KAAK66D,GAAgB,GAAKK,GAAYrgF,SAASiP,EAAMhQ,WAAY,MAC1EuoB,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACtD,IAAIplB,EAAMmsC,EAAO/mB,GACbplB,IAAQk+E,GAAoBxqE,EAAK,GAAK1T,KACtC49E,GAAgB,GAAKK,GAAYrgF,SAASiP,EAAMhQ,WAAY,KAAK,GAAKmD,GAAO0T,EAAK,GAAK1T,IAEvFA,IAAQk+E,IACRC,EAAWP,GAAgB,GAAKK,GAAYrgF,SAASiP,EAAMhQ,WAAY,KAAK,GAAKmD,GAEzF,CAOJ,MAAoB,gBAAbi4D,EAA6B,CAAC96C,GAAc,KAAM,CAAEpS,GAAIozE,EAAUliE,UAAW,uBAEhF,CAACkB,GAAc,MAAO,CAAEpS,GAAIozE,EAAUliE,UAAW,sBACzD,CACA,GAAsB,kBAAX7e,EAAqB,CAC5B,GAAIugF,GAAQr9E,KAAKlD,GAAS,CACtB,IAAIu0D,EAAMx0C,GAAc,MAAO,CAAE3C,UAAWpd,IAC5C,OAAOu0D,EAAIv1C,UACf,CAEQu1C,EAAMx0C,GAAeugE,GAAQp9E,KAAKlD,GAAU,QAAU,MAAQ,CAAEod,UAAWpd,IAC/E,OAAOu0D,EAAIv1C,UAEnB,CAEI,OAAOhf,CAEf,CACJ,CAUO,SAASghF,GAAqBH,EAAY/W,EAAczQ,EAAM4nB,EAASC,GAC1E,GAAIxxC,IAAY,CACZ,IAAIyxC,EAAY,WAChBv9E,OAAO,GAAKu9E,GAAWC,eAAetX,EAAc0W,GAAgB,GAAKK,GAAaA,EAAYxnB,EAAM6nB,IACxF,IAAZD,IACAT,GAAgB,GAAKK,GAAc,GAE3C,CACJ,CAQO,SAASQ,GAAoBR,EAAY/W,EAAcr6D,GAC1D,IAAI6xE,EAAcxlE,SAASw9C,eAAeunB,GAC1C,GAAIS,EAGA,IADA,IAAIC,EAAiBD,EAAYngB,uBAAuB,yBAC/CtiE,EAAI,EAAGA,EAAI0iF,EAAexiF,OAAQF,IAAK,CAC5C,IAAI2iF,EAAS,IAKTA,EAJC,EAAkB/xE,GAIV8xE,EAAe/gF,SAAS3B,EAAEY,WAAY,KAAKqsB,aAAa,mBAHxDy1D,EAAe/gF,SAASiP,EAAMhQ,WAAY,KAAKqsB,aAAa,mBAKzE,IAAI21D,EAAc3lE,SAASw9C,eAAekoB,GAC1C,GAAIC,EAEA,IADA,IAAIhoC,EAAWgoC,EAAYziE,WAAWjgB,OAC7BuI,EAAI,EAAGA,EAAImyC,EAAUnyC,IACrB,EAAkBmI,GAKnB8xE,EAAe/gF,SAAS3B,EAAEY,WAAY,KAAK68B,YAAYmlD,EAAYziE,WAAW,KAJ9EuiE,EAAe/gF,SAASiP,EAAMhQ,WAAY,KAAK68B,YAAYmlD,EAAYziE,WAAW,IAClFngB,EAAI0iF,EAAexiF,OAOnC,CAER,CAQO,SAAS2iF,GAAkBC,GAC9Bf,GAAU3C,QAAU0D,EAAS1D,OACjC,CAOO,SAAS2D,KACZ,OAAOhB,GAAU3C,OACrB,CASO,SAAS4D,GAAsB3D,EAAUtM,GAC5C,IAAIkQ,EASJ,OARA5D,EAAS1+E,UAAUuiF,aAAc,EAC5B,EAAkBnQ,GAKnBkQ,EAAY5D,GAJZ4D,EAAY5D,EAAS75E,KAAKutE,GAC1BkQ,EAAUtiF,UAAYD,OAAOkP,OAAOyvE,EAAS1+E,YAK1CsiF,CACX,CAEA,IAAIE,GAAwB,WACxB,SAASA,IACT,CAMA,OAJAA,EAAOxiF,UAAUy+E,QAAU,SAAUyC,EAAgB9O,EAAQuM,GAEzD,YADe,IAAXvM,IAAqBA,EAAS,CAAC,GAC5B,GAAO8O,EAAgB9O,EAClC,EACOoQ,CACX,CAT2B,GAUvBpB,GAAY,CAAE3C,SAAS,IAAI+D,IAAS/D,SC9KpCgE,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQnsB,SAAU,yBAC/B,CAAEmsB,UAAW,aAAcnsB,SAAU,+BACrC,CAAEmsB,UAAW,QAASnsB,SAAU,0BAChC,CAAEmsB,UAAW,QAASnsB,SAAU,0BAChC,CAAEmsB,UAAW,OAAQnsB,SAAU,qCAE/BosB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNxzD,WAAYyzD,IAGxB,EACAG,EAAmBI,SAAW,SAAUliF,GACpC,IAAItB,EAAOyF,KAAK49E,iBACZ3vD,EAASjuB,KAAKg+E,eAAezjF,EAAMsB,GACvC,OAAOoyB,CACX,EACA0vD,EAAmBK,eAAiB,SAAUzjF,EAAMsB,GAChDmE,KAAKw9E,YAAcjjF,EAAKsjF,UAAU9zD,WAClC/pB,KAAKu9E,WAAahjF,EAAKsjF,UAAUC,KACjC99E,KAAKi+E,YAAc7mE,SAASiE,cAAc,OAC1Crb,KAAKi+E,YAAYvlE,UAAY7c,EAC7BmE,KAAKk+E,gBACLl+E,KAAKm+E,iBACLn+E,KAAKo+E,iBACL,IAAIC,EAAer+E,KAAKi+E,YAAYvlE,UAEpC,OADA1Y,KAAKs+E,gBACED,EAAal6E,QAAQ,QAAS,IACzC,EACAw5E,EAAmBW,cAAgB,WAG/B,IADA,IAAIC,EAAQv+E,KAAKi+E,YAAY9wD,SACpBvqB,EAAI,EAAGA,EAAI27E,EAAMlkF,OAAQuI,IAE9B,IADA,IAAI66E,EAAYc,EAAMziF,SAAS8G,EAAE7H,WAAY,KAAKgvB,WACzC5vB,EAAI,EAAGA,EAAIsjF,EAAUpjF,OAAQF,IAClC6F,KAAKi+E,YAAY9wD,SAASrxB,SAAS8G,EAAE7H,WAAY,KAAKy9B,gBAAgBilD,EAAU3hF,SAAS3B,EAAEY,WAAY,KAAKyjF,UAGxH,EACAb,EAAmBO,cAAgB,WAC/B,IAAIvuB,EAAW3vD,KAAKi+E,YAAY7jE,iBAAiBpa,KAAKu9E,WAAWz/E,KAAK,MAClE6xD,EAASt1D,OAAS,GAClBs1D,EAASnuC,SAAQ,SAAU0F,GACvBkqC,GAAOlqC,EACX,GAKR,EACAy2D,EAAmBQ,eAAiB,WAChC,IAAIxuB,EAAW3vD,KAAKi+E,YAAY7jE,iBAAiB,IAAMsjE,GAAS5/E,KAAK,OAAS,KAC1E6xD,EAASt1D,OAAS,GAClBs1D,EAASnuC,SAAQ,SAAU0F,GACvBw2D,GAASl8D,SAAQ,SAAUyF,GACnBC,EAAQu3D,aAAax3D,IACrBC,EAAQsR,gBAAgBvR,EAEhC,GACJ,GAKR,EACA02D,EAAmBS,eAAiB,WAChC,IAAI7vE,EAAQvO,KAEZA,KAAKw9E,YAAYh8D,SAAQ,SAAUjnB,EAAMwQ,GACrC,IAAI4kD,EAAWphD,EAAM0vE,YAAY7jE,iBAAiB7f,EAAK+2D,UACnD3B,EAASt1D,OAAS,GAClBs1D,EAASnuC,SAAQ,SAAU0F,GACvBA,EAAQsR,gBAAgBj+B,EAAKkjF,UACjC,GAER,GACJ,EACOE,CACX,CA7EuC,E,0ECpF5Be,E,sBA1BPzmB,EAAwC,WACxC,IAAIC,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAaxCC,EAA0C,SAAUC,EAAY15D,EAAQX,EAAKs6D,GAC7E,IAA2HnoD,EAAvH3D,EAAI5N,UAAUzE,OAAQ0oC,EAAIr2B,EAAI,EAAI7N,EAAkB,OAAT25D,EAAgBA,EAAO39D,OAAOwmB,yBAAyBxiB,EAAQX,GAAOs6D,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyB31B,EAAI01B,QAAQC,SAASH,EAAY15D,EAAQX,EAAKs6D,QACpH,IAAK,IAAIr+D,EAAIo+D,EAAWl+D,OAAS,EAAGF,GAAK,EAAGA,KAASkW,EAAIkoD,EAAWp+D,MAAI4oC,GAAKr2B,EAAI,EAAI2D,EAAE0yB,GAAKr2B,EAAI,EAAI2D,EAAExR,EAAQX,EAAK6kC,GAAK1yB,EAAExR,EAAQX,KAAS6kC,GAChJ,OAAOr2B,EAAI,GAAKq2B,GAAKloC,OAAO+mB,eAAe/iB,EAAQX,EAAK6kC,GAAIA,CAChE,GASA,SAAW27C,GAIPA,EAAa,QAAU,OAIvBA,EAAa,SAAW,QAIxBA,EAAa,OAAS,MAItBA,EAAa,UAAY,QAC5B,EAjBD,CAiBGA,IAAiBA,EAAe,CAAC,IACR,IAAI,KAAzB,IACHC,EAAe,CACfC,IAAK,QACLC,OAAQ,QACRl4D,QAAS,YACTm4D,QAAS,cAcTC,EAAwB,SAAUnmB,GAQlC,SAASmmB,EAAO3hE,EAAS8J,GACrB,OAAO0xC,EAAO59D,KAAKgF,KAAMod,EAAS8J,IAAYlnB,IAClD,CAiSA,OA1SAi4D,EAAU8mB,EAAQnmB,GAUlBmmB,EAAOjkF,UAAU2oE,UAAY,WAE7B,EAOAsb,EAAOjkF,UAAUwhC,OAAS,WACtBt8B,KAAK4nE,aACL5nE,KAAKg/E,oBAAqB,QAAah/E,KAAKknB,QAAS,CAAEoqC,SAAU,IAAMqtB,EAAaE,SACpF7+E,KAAKqkE,gBACT,EACA0a,EAAOjkF,UAAU8sE,WAAa,WAO1B,GANI5nE,KAAKi/E,WACL,QAAS,CAACj/E,KAAKknB,SAAUlnB,KAAKi/E,SAAS96E,QAAQ,OAAQ,KAAKgmB,OAAO9lB,MAAM,MAEzErE,KAAKk/E,WACLl/E,KAAKknB,QAAQ0C,UAAU5jB,IAAI24E,EAAah4D,WAEvC,YAAe,WAAuC,iBAAzB3mB,KAAKw0D,gBAAqC,CACxE,GAAIx0D,KAAKyY,QAAS,CACd,IAAI0mE,EAAen/E,KAAwB,oBAAI,KAAmB+9E,SAAS/9E,KAAKyY,SAAWzY,KAAKyY,QAChGzY,KAAKknB,QAAQxO,UAAYymE,CAC7B,CACAn/E,KAAKo/E,YACT,CACIp/E,KAAKijE,WACLjjE,KAAKknB,QAAQ0C,UAAU5jB,IAAI24E,EAAaC,KAExC5+E,KAAKi5B,SACLj5B,KAAKq/E,cAAcr/E,KAAKi5B,UAGxBj5B,KAAKwxE,YAEb,EACAuN,EAAOjkF,UAAUukF,cAAgB,SAAUpmD,GACvCj5B,KAAKknB,QAAQ+R,SAAWA,CAC5B,EACA8lD,EAAOjkF,UAAUskF,WAAa,WAC1B,GAAIp/E,KAAKs/E,QAAS,CACd,IAAIC,EAAOv/E,KAAKqb,cAAc,OAAQ,CAAElB,UAAW,cAAgBna,KAAKs/E,UACnEt/E,KAAKknB,QAAQnN,YAAYoQ,QAI1Bo1D,EAAK31D,UAAU5jB,IAAI,UAAYhG,KAAKw/E,aAAangD,eACvB,QAAtBr/B,KAAKw/E,cAAgD,WAAtBx/E,KAAKw/E,cACpCx/E,KAAKknB,QAAQ0C,UAAU5jB,IAAI,KAAOhG,KAAKw/E,aAAangD,cAAgB,cALxEr/B,KAAKknB,QAAQ0C,UAAU5jB,IAAI24E,EAAaG,SAQ5C,IAAIn1D,EAAO3pB,KAAKknB,QAAQ5M,WAAW,IAC/BqP,GAA+B,SAAtB3pB,KAAKw/E,cAAiD,QAAtBx/E,KAAKw/E,aAI9Cx/E,KAAKknB,QAAQ0Q,YAAY2nD,GAHzBv/E,KAAKknB,QAAQmC,aAAak2D,EAAM51D,EAKxC,CACJ,EACAo1D,EAAOjkF,UAAU02E,WAAa,WACtBxxE,KAAKy/E,UACL,KAAaz5E,IAAIhG,KAAKknB,QAAS,QAASlnB,KAAK0/E,gBAAiB1/E,KAEtE,EACA++E,EAAOjkF,UAAU6kF,aAAe,WACxB3/E,KAAKy/E,UACL,KAAavnD,OAAOl4B,KAAKknB,QAAS,QAASlnB,KAAK0/E,gBAExD,EACAX,EAAOjkF,UAAU4kF,gBAAkB,WAC3B1/E,KAAKknB,QAAQ0C,UAAUsN,SAAS,YAChCl3B,KAAKknB,QAAQ0C,UAAUsO,OAAO,YAG9Bl4B,KAAKknB,QAAQ0C,UAAU5jB,IAAI,WAEnC,EAMA+4E,EAAOjkF,UAAUunD,QAAU,WACvB,IAAIz4B,EAAY,CAAC+0D,EAAah4D,QAASg4D,EAAaC,IAAKD,EAAaG,QAAS,YAAa,SAAU,WAClG,YAAa,SAAU,YAAa,UAAW,WAAY,WAAY,UACvE,iBAAkB,qBAClB9+E,KAAKi/E,WACLr1D,EAAYA,EAAUpvB,OAAOwF,KAAKi/E,SAAS56E,MAAM,OAErDu0D,EAAO99D,UAAUunD,QAAQrnD,KAAKgF,OAC9B,QAAY,CAACA,KAAKknB,SAAU0C,GACvB5pB,KAAKknB,QAAQE,aAAa,UAC3BpnB,KAAKknB,QAAQsR,gBAAgB,SAE7Bx4B,KAAKi5B,UACLj5B,KAAKknB,QAAQsR,gBAAgB,YAE7Bx4B,KAAKyY,UACLzY,KAAKknB,QAAQxO,UAAY1Y,KAAKknB,QAAQxO,UAAUvU,QAAQnE,KAAKyY,QAAS,KAE1E,IAAI8mE,EAAOv/E,KAAKknB,QAAQC,cAAc,mBAClCo4D,IACA,QAAOA,GAEXv/E,KAAK2/E,eACD,MACA3/E,KAAKg/E,oBAEb,EAOAD,EAAOjkF,UAAU05D,cAAgB,WAC7B,MAAO,KACX,EAOAuqB,EAAOjkF,UAAUmqE,eAAiB,WAC9B,OAAOjlE,KAAKulE,aAAa,GAC7B,EAOAwZ,EAAOra,OAAS,WAEhB,EASAqa,EAAOjkF,UAAUm5D,kBAAoB,SAAU4G,EAASC,GAEpD,IADA,IAAIykB,EAAOv/E,KAAKknB,QAAQC,cAAc,mBAC7B7D,EAAK,EAAGupB,EAAKhyC,OAAOomB,KAAK45C,GAAUv3C,EAAKupB,EAAGxyC,OAAQipB,IAAM,CAC9D,IAAIjoB,EAAOwxC,EAAGvpB,GACd,OAAQjoB,GACJ,IAAK,YACGw/D,EAAQqkB,UACRl/E,KAAKknB,QAAQ0C,UAAU5jB,IAAI24E,EAAah4D,SAGxC3mB,KAAKknB,QAAQ0C,UAAUsO,OAAOymD,EAAah4D,SAE/C,MACJ,IAAK,WACD3mB,KAAKq/E,cAAcxkB,EAAQ5hC,UAC3B,MACJ,IAAK,UACGsmD,EACI1kB,EAAQykB,SACRC,EAAKplE,UAAY,cAAgB0gD,EAAQykB,QACrCt/E,KAAKknB,QAAQnN,YAAYoQ,SACC,SAAtBnqB,KAAKw/E,aACLD,EAAK31D,UAAU5jB,IAAI,eAGnBu5E,EAAK31D,UAAU5jB,IAAI,mBAK3B,QAAOu5E,GAIXv/E,KAAKo/E,aAET,MAEJ,IAAK,gBACD,QAAY,CAACp/E,KAAKknB,SAAU,CAAC,iBAAkB,sBAC/Cq4D,EAAOv/E,KAAKknB,QAAQC,cAAc,mBAC9Bo4D,IACA,QAAOA,GAEXv/E,KAAKo/E,aACL,MACJ,IAAK,WACGtkB,EAAQmkB,WACR,QAAY,CAACj/E,KAAKknB,SAAU4zC,EAAQmkB,SAAS56E,MAAM,MAEnDw2D,EAAQokB,WACR,QAAS,CAACj/E,KAAKknB,SAAU2zC,EAAQokB,SAAS96E,QAAQ,OAAQ,KAAKgmB,OAAO9lB,MAAM,MAEhF,MACJ,IAAK,YACGw2D,EAAQoI,UACRjjE,KAAKknB,QAAQ0C,UAAU5jB,IAAI24E,EAAaC,KAGxC5+E,KAAKknB,QAAQ0C,UAAUsO,OAAOymD,EAAaC,KAE/C,MACJ,IAAK,UACD,IAAIj1D,GAAO,QAAY3pB,KAAKknB,SACvByC,GACD3pB,KAAKknB,QAAQ0C,UAAUsO,OAAOymD,EAAaG,YAE1C,YAAe,YAAe9+E,KAAKozC,kBAA6C,iBAAzBpzC,KAAKw0D,mBACzDx0D,KAAK4/E,sBACL/kB,EAAQpiD,QAAU,KAAmBslE,SAASljB,EAAQpiD,UAE1DzY,KAAKknB,QAAQxO,UAAYmiD,EAAQpiD,QACjCzY,KAAKo/E,cAET,MAEJ,IAAK,WACGvkB,EAAQ4kB,SACR,KAAaz5E,IAAIhG,KAAKknB,QAAS,QAASlnB,KAAK0/E,gBAAiB1/E,OAG9D,KAAak4B,OAAOl4B,KAAKknB,QAAS,QAASlnB,KAAK0/E,kBAChD,QAAY,CAAC1/E,KAAKknB,SAAU,CAAC,cAEjC,MAEZ,CACJ,EAQA63D,EAAOjkF,UAAU+kF,MAAQ,WACrB7/E,KAAKknB,QAAQ24D,OACjB,EAQAd,EAAOjkF,UAAUglF,QAAU,WACvB9/E,KAAKknB,QAAQmlB,OACjB,EACAisB,EAAW,EACP,QAAS,SACVymB,EAAOjkF,UAAW,oBAAgB,GACrCw9D,EAAW,EACP,QAAS,KACVymB,EAAOjkF,UAAW,eAAW,GAChCw9D,EAAW,EACP,SAAS,IACVymB,EAAOjkF,UAAW,gBAAY,GACjCw9D,EAAW,EACP,SAAS,IACVymB,EAAOjkF,UAAW,iBAAa,GAClCw9D,EAAW,EACP,QAAS,KACVymB,EAAOjkF,UAAW,gBAAY,GACjCw9D,EAAW,EACP,QAAS,KACVymB,EAAOjkF,UAAW,eAAW,GAChCw9D,EAAW,EACP,SAAS,IACVymB,EAAOjkF,UAAW,gBAAY,GACjCw9D,EAAW,EACP,WACDymB,EAAOjkF,UAAW,cAAU,GAC/Bw9D,EAAW,EACP,SAAS,IACVymB,EAAOjkF,UAAW,2BAAuB,GAC5Cw9D,EAAW,EACP,WACDymB,EAAOjkF,UAAW,eAAW,GAChCikF,EAASzmB,EAAW,CAChB,MACDymB,GACIA,CACX,CA5S2B,CA4SzB,K,qLC7VK,SAASgB,EAAkB1kE,EAAe2R,EAAKntB,EAAMqnB,EAAS84D,EAAStqD,GAC1E,IAAIuqD,EAAQ/4D,EACZ,GAAIA,EAAQhN,UAAY8S,EAAK,CACzB,IAAIkzD,GAAa,QAAS,gBAAiBh5D,GAC3C+4D,EAAQ5kE,EAAc,QAAS,CAAEiM,MAAO,CAAE,KAAQznB,KAElD,IADA,IAAI6B,EAAQ,CAAC,SAAU,WAAY,QAAS,gBAAiB,MACpDqJ,EAAQ,EAAG3Q,EAAM8sB,EAAQ6C,WAAW1vB,OAAQ0Q,EAAQ3Q,EAAK2Q,KACH,IAAvDrJ,EAAMqC,QAAQmjB,EAAQ6C,WAAWhf,GAAOo1E,WACxCF,EAAMh3D,aAAa/B,EAAQ6C,WAAWhf,GAAOo1E,SAAUj5D,EAAQ6C,WAAWhf,GAAOq1E,YAGzF,QAAWl5D,EAAS,CAAE,MAAS84D,IAC/B94D,EAAQ0Q,YAAYqoD,IACpB,QAAS,gBAAiBC,EAAYD,IACtC,QAAa/4D,EAAS,gBAC1B,CACA,OAAO+4D,CACX,CAQO,SAASI,EAAYn5D,GAGxB,IAFA,IAAIyC,EACA22D,EAAYp5D,EAAQ5M,WACfngB,EAAI,EAAGA,EAAImmF,EAAUjmF,OAAQF,IAElC,GADAwvB,EAAO22D,EAAUnmF,GACK,IAAlBwvB,EAAKsoC,SACL,OAAOtoC,EAGf,OAAO,IACX,CAwDO,SAAS42D,EAAellE,EAAemlE,EAAcpjE,QACnC,IAAjBojE,IAA2BA,GAAe,QAC9B,IAAZpjE,IAAsBA,EAAU,CAAC,GACrC,IAAIqjE,EAAUplE,EAAc,MAAO,CAAElB,UAAW,6BAOhD,GANIiD,EAAQ6hE,WACR,QAAS,CAACwB,GAAUrjE,EAAQ6hE,SAAS56E,MAAM,MAE3C+Y,EAAQ6lD,WACRwd,EAAQ72D,UAAU5jB,IAAI,SAEtBw6E,EAAc,CACd,IAAIE,EAAarlE,EAAc,OAAQ,CAAElB,UAAW,wBACpD,QAAaumE,EAAY,CAAEllB,gBAAgB,EAAMjB,SAAU,MAC3DkmB,EAAQ7oD,YAAY8oD,EACxB,CACA,IAAIC,EAAYtlE,EAAc,OAAQ,CAAElB,UAAW,oBAKnD,GAJIiD,EAAQwjE,SACRD,EAAU/2D,UAAU5jB,IAAI,WAE5By6E,EAAQ7oD,YAAY+oD,GAChBvjE,EAAQyjE,MAAO,CACf,IAAIC,EAAYzlE,EAAc,OAAQ,CAAElB,UAAW,YAC/CiD,EAAQ2jE,kBACRD,EAAU/mE,YAAcqD,EAAQyjE,MAGhCC,EAAUpoE,UAAY0E,EAAQyjE,MAElCJ,EAAQ7oD,YAAYkpD,EACxB,CACA,OAAOL,CACX,CASO,SAASO,EAAmBh8E,EAAG07E,GAClC,GAAIA,EAAY,CACZ,IAAInxB,EAAUn4C,SAAS6pE,YAAY,eACnC1xB,EAAQ2xB,UAAUl8E,EAAEnF,MAAM,GAAO,GACjC6gF,EAAWS,cAAc5xB,EAC7B,CACJ,CASO,SAAS6xB,EAAeC,EAAOC,GAC9BD,EAAMn6D,QAAQE,aAAa,YAC3Bk6D,EAAK1pD,YAAYypD,EAAMhmE,cAAc,QAAS,CAC1CiM,MAAO,CAAE,KAAQ+5D,EAAMlhF,MAAQkhF,EAAMn6D,QAAQ/mB,KAAM,MAAS,QAAS,KAAQ,YAGzF,C,0SCvKI83D,EAAwC,WACxC,IAAIC,EAAgB,SAAU7nD,EAAGhB,GAI7B,OAHA6oD,EAAgBr9D,OAAOs9D,gBAClB,CAAEC,UAAW,cAAgBnxD,OAAS,SAAUoJ,EAAGhB,GAAKgB,EAAE+nD,UAAY/oD,CAAG,GAC1E,SAAUgB,EAAGhB,GAAK,IAAK,IAAI3Q,KAAK2Q,EAAOA,EAAE9T,eAAemD,KAAI2R,EAAE3R,GAAK2Q,EAAE3Q,GAAI,EACtEw5D,EAAc7nD,EAAGhB,EAC5B,EACA,OAAO,SAAUgB,EAAGhB,GAEhB,SAASgpD,IAAOr4D,KAAK0gB,YAAcrQ,CAAG,CADtC6nD,EAAc7nD,EAAGhB,GAEjBgB,EAAEvV,UAAkB,OAANuU,EAAaxU,OAAOkP,OAAOsF,IAAMgpD,EAAGv9D,UAAYuU,EAAEvU,UAAW,IAAIu9D,EACnF,CACH,CAZ2C,GAgBxCkpB,EAAS,CAAEC,UAAW,mBAOtBC,EAAyB,WASzB,SAASA,EAAQC,GAEb1hF,KAAKod,QAAU,CACXzC,KAAM,QACNgnE,YAAa,OACbC,OAAQ,SACRC,OAAQ,SACRC,KAAM,OACNC,MAAO,QACPC,KAAM,OACN1mE,OAAQ,SACR2mE,MAAO,iBACPC,MAAO,QACPC,WAAY,aACZC,OAAQ,UAOZpiF,KAAKH,KAAO4hF,EACZzhF,KAAKqiF,WAAaX,EAClB1hF,KAAKsiF,IAAM,CAAC,CAChB,CAgBA,OAHAb,EAAQ3mF,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,GAC3D,OAAO7wE,CACX,EACO6vE,CACX,CAlD4B,GAyDxBiB,EAA6B,SAAU9pB,GAEvC,SAAS8pB,IACL,OAAkB,OAAX9pB,GAAmBA,EAAOlpD,MAAM1P,KAAMlB,YAAckB,IAC/D,CA4YA,OA/YAi4D,EAAUyqB,EAAa9pB,GAWvB8pB,EAAY5nF,UAAU6nF,aAAe,SAAUC,EAAaJ,GAUxD,IATA,IAGIn3E,EACAnN,EAIA2kF,EARAvnF,EAASsnF,EAAYP,WAAWS,KAAKn+E,MAAM,GAC3Cs9E,EAAQ3mF,EAAOjB,OACf0oF,GAAW,EAGXC,EAAW,CAAC,EACZC,EAAW,EACXlB,EAAQ,GAEH5nF,EAAI,EAAGA,EAAIqoF,EAAMQ,SAAS3oF,OAAQF,IACvC8oF,IACAD,EAASR,EAAMQ,SAAS7oF,GAAG+D,KAAOskF,EAAMQ,SAAS7oF,GAAG0B,MAExD,IAAIqnF,EAAM,CAAC,EACX,IAAS/oF,EAAI,EAAGA,EAAIqoF,EAAMW,QAAQ9oF,OAAQF,IACtC+D,EAAMskF,EAAMW,QAAQhpF,GACJ,WAAX+D,EAAIlE,IAA8B,YAAXkE,EAAIlE,KAAqBwoF,EAAMQ,SAAS3oF,QASpEgR,EAAMrL,KAAK9B,EAAIlE,IAAIgB,KAAKgF,KAAM1E,EAAQ4C,EAAI8G,EAAGw9E,GAC9B,iBAAXtkF,EAAIlE,GACJkpF,EAAIhlF,EAAI8G,EAAEo+E,MAAQ,MAAQllF,EAAI8G,EAAEnF,MAAQwL,EAGxC/P,OAAiBqB,IAAR0O,EAAoBA,EAAM/P,EAExB,WAAX4C,EAAIlE,IAA8B,WAAXkE,EAAIlE,IAA8B,WAAXkE,EAAIlE,IAA8B,YAAXkE,EAAIlE,KACzE+oF,GAAW,GAEXA,IACAd,EAAQ3mF,EAAOjB,UAnBA,YAAX6D,EAAIlE,IACJ+nF,EAAMvmF,KAAK0C,EAAI8G,GAEJ,WAAX9G,EAAIlE,KACJ6oF,EAAO3kF,EAAI8G,IAkBvB,GAAIi+E,EAAU,CACV,IAAIrhF,EAAO,CACP4gF,MAAOA,EAAOQ,SAAUA,EAAU1nF,OAAQA,EAAQymF,MAAOA,EAAOc,KAAMA,GAEtEQ,EAAerjF,KAAKsjF,cAAc1hF,GACtCtG,EAAS+nF,EAAa/nF,OACtB2mF,EAAQoB,EAAapB,KACzB,CAQA,OAPIO,EAAMe,kBACNjoF,EAAS,CACLA,OAAQA,EACR2mF,MAAOA,EACPE,WAAYe,IAGb5nF,CACX,EAMAonF,EAAY5nF,UAAUwoF,cAAgB,SAAU1hF,GAC5C,IAAIqgF,EAAQ,EACRiB,EAAMljF,KAAKwjF,aAAa5hF,EAAK4gF,OAC7BlnF,EAASsG,EAAKtG,OAClB,IAAK,QAAkBsG,EAAKohF,SAASS,mBAiBhC,CACGL,EAAQxhF,EAAKmgF,MAAM,GAAG2B,UAC1BpoF,EAAS,IAASymF,MAAMzmF,EAAQ8nF,EAAOF,EAAK,KAAM,KAAMthF,EAAKmgF,MAAM,GAAG4B,UAAU,GAChF1B,EAAQ3mF,EAAOjB,OACXuX,EAAOtW,EACPsG,EAAKihF,OACLvnF,EAAS0E,KAAK4jF,OAAOtoF,EAAQsG,EAAKihF,KAAMjhF,EAAK4gF,QAEjDxiF,KAAK6jF,gBAAgBvoF,EAAQsW,EACjC,KA1ByD,CAErD,IADA,IAAIqC,EAAMrS,EAAKohF,SAASS,kBACftpF,EAAI8Z,EAAIiuE,MAAM7nF,OAAS,EAAGF,GAAK,EAAGA,IACvCmB,EAAS0E,KAAK8jF,QAAQxoF,EAAQ2Y,EAAIiuE,MAAM/nF,IAE5C,GAAIyH,EAAKmgF,MAAM1nF,SAAW4Z,EAAI8vE,MAAO,CACjC,IAAIX,EAAQxhF,EAAKmgF,MAAM9tE,EAAI8vE,OAAOL,UAClCpoF,EAAS,IAASymF,MAAMzmF,EAAQ8nF,EAAOF,EAAK,KAAM,KAAMthF,EAAKmgF,MAAM,GAAG4B,UAAU,EACpF,CACA1B,EAAQ3mF,EAAOjB,OACf,IAAIuX,EAAOtW,EACXA,EAASA,EAAOqJ,MAAMsP,EAAI6tE,MAC1BxmF,EAASA,EAAOqJ,MAAM,EAAGsP,EAAI+tE,MACzBpgF,EAAKmgF,MAAM1nF,SAAW4Z,EAAI8vE,OAC1B/jF,KAAK6jF,gBAAgBvoF,EAAQsW,EAErC,CAWA,MAAO,CAAEtW,OAAQA,EAAQ2mF,MAAOA,EACpC,EACAS,EAAY5nF,UAAU+oF,gBAAkB,SAAUvoF,EAAQsW,GACtD,GAAItW,EAAOjB,QAAUuX,EAAKvX,OAAQ,CAC9B,IAAIguC,EAAM,YACN27C,EAAa,cACbD,EAAQ,QACRE,EAAU,UACd3oF,EAAO+sC,GAAOz2B,EAAKy2B,GACnB/sC,EAAO0oF,GAAcpyE,EAAKoyE,GAC1B1oF,EAAOyoF,GAASnyE,EAAKmyE,GACrBzoF,EAAO2oF,GAAWryE,EAAKqyE,EAC3B,CACA,OAAO3oF,CACX,EAMAonF,EAAY5nF,UAAU0oF,aAAe,SAAUhB,GAC3C,IAAI0B,EAAW,IAAMC,cAAc3B,EAAMW,QAAS,gBAC9CD,EAAM,GACV,GAAIgB,EAAS7pF,OAET,IADA,IAAI+pF,OAAM,EACDjqF,EAAI,EAAGA,EAAI+pF,EAAS7pF,OAAQF,IACjCiqF,EAAMF,EAAS/pF,GAAG6K,EAClBk+E,EAAI1nF,KAAK,CAAEqE,KAAMukF,EAAIvkF,KAAMujF,MAAO,IAAS51B,SAAS42B,EAAIhB,MAAOZ,KAGvE,OAAOU,CACX,EAQAR,EAAY5nF,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,GACxD,IAAI7K,EACAqqF,EAAoBD,EAAQE,eAAepqF,OAC/C,IAAKF,EAAI,EAAGA,EAAIoqF,EAAQG,aAAarqF,OAAQF,IACzC6F,KAAK2kF,OAAOL,EAAIC,EAAQG,aAAavqF,IAEzC,IAAKA,EAAI,EAAGA,EAAIoqF,EAAQK,eAAevqF,OAAQF,IAC3C6F,KAAK6kF,OAAOP,EAAIt/E,EAAE9G,IAAKqmF,EAAQK,eAAezqF,IAElD,IAAKA,EAAI,EAAGA,EAAIqqF,EAAmBrqF,IAC/B6F,KAAKk4B,OAAOosD,EAAIt/E,EAAE9G,IAAKqmF,EAAQE,eAAetqF,IAElD,OAAOoqF,CACX,EAQA7B,EAAY5nF,UAAUgpF,QAAU,SAAUpC,EAAI18E,GAC1C,OAAK08E,GAAOA,EAAGrnF,OAGRqnF,EAAGp9E,QAAO,SAAU1J,GACvB,GAAIoK,EACA,OAAOA,EAAEvI,SAAS7B,EAE1B,IANW8mF,CAOf,EAUAgB,EAAY5nF,UAAUgqF,aAAe,SAAUpD,EAAI18E,GAC/C,IAAIhL,EAAK,IAASmoF,WAAWn9E,EAAEnF,MAC/B,OAAK6hF,GAAO1nF,GAAoB,IAAd0nF,EAAGrnF,OAGdL,EAAG0nF,EAAI18E,EAAEo+E,OAFL,IAGf,EAOAV,EAAY5nF,UAAUiqF,SAAW,SAAUrD,EAAI18E,GAC3C,OAAK08E,GAAOA,EAAGrnF,QAGa,IAAxB2K,EAAEggF,WAAW3qF,QACb,IAAS4qF,aAAavD,EAAG,GAAI18E,EAAEggF,YAE5BtD,EAAGp9E,QAAO,SAAU1J,GACvB,IAAK,IAAIgI,EAAI,EAAGA,EAAIoC,EAAEggF,WAAW3qF,OAAQuI,IACrC,GAAIoC,EAAE2+E,SAAS3oF,KAAKJ,EAAK,IAASk6D,UAAU9vD,EAAEggF,WAAWpiF,GAAIhI,GAAMoK,EAAEkgF,UAAWlgF,EAAEmgF,WAAYngF,EAAEogF,cAC5F,OAAO,EAGf,OAAO,CACX,KAZW1D,CAaf,EAWAgB,EAAY5nF,UAAUuqF,SAAW,SAAU3D,EAAI18E,EAAGw9E,GAC9C,IAAKd,IAAOA,EAAGrnF,OACX,OAAOqnF,EAEX,IAAI4D,EACAlC,EAAQ,IAAS51B,SAASxoD,EAAE0+E,UAAWlB,GAC3C,IAAKY,EACD,OAAO1B,EAAG6D,KAAKvgF,EAAE2+E,UAErB,GAAIP,aAAiBn8E,MAAO,CACxBm8E,EAAQA,EAAMz+E,MAAM,GACpB,IAAK,IAAIxK,EAAIipF,EAAM/oF,OAAS,EAAGF,GAAK,EAAGA,IAC9BipF,EAAMjpF,KAGXmrF,EAAYtgF,EAAE2+E,SACV,IAAS6B,SAASpC,EAAMjpF,GAAI,WAC5BmrF,EAAY,IAASG,OAAO,cAC5BrC,EAAMjpF,GAAKipF,EAAMjpF,GAAGgK,QAAQ,QAAS,KAEzCu9E,EAAK,IAAS6D,KAAK7D,EAAI0B,EAAMjpF,GAAImrF,IAErC,OAAO5D,CACX,CACA,OAAO,IAAS6D,KAAK7D,EAAI0B,EAAOp+E,EAAE2+E,SACtC,EAQAjB,EAAY5nF,UAAU4qF,QAAU,SAAUhE,EAAI18E,EAAGw9E,GAC7C,IAAKd,IAAOA,EAAGrnF,OACX,OAAOqnF,EAEX,IAAIwB,EAAMljF,KAAKwjF,aAAahB,GAC5B,OAAO,IAAST,MAAML,EAAI,IAASl0B,SAASxoD,EAAE0+E,UAAWlB,GAAQU,EAAK,KAAM,KAAMl+E,EAAE2+E,SACxF,EAWAjB,EAAY5nF,UAAU8oF,OAAS,SAAUlC,EAAI18E,EAAGw9E,GAC5C,IAAIz2E,EAAO,IAASyhD,SAASxoD,EAAE2gF,SAAUnD,GACrCjqE,GAAS,IAASi1C,SAASxoD,EAAE4gF,UAAWpD,GAAS,GAAKz2E,EACtDyM,EAAMD,EAAQxM,EAClB,OAAK21E,GAAOA,EAAGrnF,OAGRqnF,EAAG/8E,MAAM4T,EAAOC,GAFZkpE,CAGf,EAUAgB,EAAY5nF,UAAU+qF,QAAU,SAAUnE,EAAI18E,GAC1C,OAAK08E,GAAOA,EAAGrnF,OAGRqnF,EAAG/8E,MAAM,IAAS6oD,SAASxoD,EAAEuT,OAAQ,IAASi1C,SAASxoD,EAAEwT,MAFrDkpE,CAGf,EAQAgB,EAAY5nF,UAAUgrF,OAAS,SAAUpE,EAAI18E,GACzC,OAAK08E,GAAOA,EAAGrnF,OAGRqnF,EAAG/8E,MAAM,EAAG,IAAS6oD,SAASxoD,EAAE+gF,MAF5BrE,CAGf,EAQAgB,EAAY5nF,UAAUkrF,OAAS,SAAUtE,EAAI18E,GACzC,OAAK08E,GAAOA,EAAGrnF,OAGRqnF,EAAG/8E,MAAM,IAAS6oD,SAASxoD,EAAE+gF,MAFzBrE,CAGf,EAQAgB,EAAY5nF,UAAUmrF,SAAW,SAAUvE,EAAI18E,GAC3C,OAAK08E,GAAOA,EAAGrnF,OAGR,IAASwnF,OAAOH,EAAI,IAASl0B,SAASxoD,EAAEggF,aAFpCtD,CAGf,EAUAgB,EAAY5nF,UAAU6pF,OAAS,SAAUL,EAAI1yE,EAAMs0E,EAAW1D,EAAO3jD,GACjE,OAAI,QAAkBA,GACXylD,EAAGjC,WAAWS,KAAKtnF,KAAKoW,GAGxB0yE,EAAGjC,WAAWS,KAAKt6D,OAAOqW,EAAU,EAAGjtB,EAEtD,EAWA8wE,EAAY5nF,UAAUo9B,OAAS,SAAUosD,EAAI6B,EAAUtqF,EAAOqqF,GAC1D,IACI/rF,EADAunF,EAAK4C,EAAGjC,WAAWS,KAKvB,IAHqB,kBAAVjnF,GAAwBA,aAAiBkE,OAChDlE,EAAQ,IAASi5D,UAAUqxB,EAAUtqF,IAEpC1B,EAAI,EAAGA,EAAIunF,EAAGrnF,OAAQF,IACvB,GAAI,IAAS26D,UAAUqxB,EAAUzE,EAAGvnF,MAAQ0B,EACxC,MAGR,OAAO1B,IAAMunF,EAAGrnF,OAASqnF,EAAGl5D,OAAOruB,EAAG,GAAK,IAC/C,EAWAuoF,EAAY5nF,UAAU+pF,OAAS,SAAUP,EAAI6B,EAAUtqF,EAAOqqF,GAC1D,IACI/rF,EACA+D,EAFAwjF,EAAK4C,EAAGjC,WAAWS,KAMvB,KAHK,QAAkBqD,KACnBjoF,GAAM,QAASioF,EAAUtqF,IAExB1B,EAAI,EAAGA,EAAIunF,EAAGrnF,OAAQF,IACvB,KAAK,QAAkBgsF,KAAc,QAASA,EAAUzE,EAAGvnF,MAAS+D,EAChE,MAGR,OAAO/D,EAAIunF,EAAGrnF,QAAS,QAAMqnF,EAAGvnF,GAAI0B,GAAS,IACjD,EACO6mF,CACX,CAjZgC,CAiZ9BjB,GAQE2E,EAA4B,SAAUxtB,GAEtC,SAASwtB,IACL,OAAkB,OAAXxtB,GAAmBA,EAAOlpD,MAAM1P,KAAMlB,YAAckB,IAC/D,CAmdA,OAtdAi4D,EAAUmuB,EAAYxtB,GActBwtB,EAAWtrF,UAAU6nF,aAAe,SAAU2B,EAAI9B,EAAO6D,GACrD,IAIIzsC,EACAkoC,EALAqB,EAAUnjF,KAAKsmF,gBAAgB9D,GAC/B+D,EAAU,IAAMC,iBAAiBhE,EAAMW,QAAS,CAAC,WAAY,SAAU,SAAU,SAAU,YAC3Fr0D,EAAS0zD,EAAM1zD,OACf/a,EAAMuwE,EAAGjC,WAAWtuE,IAGpBiuE,EAAO,KACP5kE,EAAUpd,KAAKod,QACfnV,EAAU,CAAEw+E,MAAO,GAAIC,OAAQ,GAAIC,QAAS,GAAIC,SAAU,GAAIzE,WAAY,IAE1E,WAAYoE,GACZ3sC,EAAO2sC,EAAQ3C,OACf9B,EAAO,IAASt0B,SAAS5T,EAAKgsC,UAAWpD,GACzCR,EAAO,IAASx0B,SAAS5T,EAAK+rC,SAAUnD,GACxCV,GAAQA,EAAO,GAAKE,GAEf,YAAauE,IAClB3sC,EAAO2sC,EAAQV,QACf/D,EAAOloC,EAAKrhC,MACZypE,EAAOpoC,EAAKphC,IAAMohC,EAAKrhC,OAG3B,IAAK,IAAIpe,EAAI,EAAGA,EAAIgpF,EAAQsD,MAAMpsF,OAAQF,IACtCy/C,EAAO,IAAS4T,SAAS21B,EAAQsD,MAAMtsF,GAAG6K,EAAE0+E,UAAWlB,GACvDv6E,EAAQw+E,MAAMjrF,KAAK,IAASqrF,oBAAoB7mF,KAAM,aAAc,CAAEG,KAAMy5C,EAAMktC,UAAW3D,EAAQsD,MAAMtsF,GAAG6K,EAAE8hF,WAAatE,IAG7H6D,IACAzsC,EAAO55C,KAAK+mF,eAAeV,EAAkB7D,GACzC5oC,GACA3xC,EAAQ0+E,QAAQnrF,KAAK,IAASqrF,oBAAoB7mF,KAAM,cAAe45C,EAAKotC,SAAUxE,KAI9F,IAASroF,EAAI,EAAGA,EAAIgpF,EAAQwD,QAAQtsF,OAAQF,IAAK,CAC7C,IAAIwzC,EAAM,IAASk5C,oBAAoB7mF,KAAM,cAAemjF,EAAQwD,QAAQxsF,GAAG6K,EAAEgiF,SAAUxE,GACtFxiF,KAAKw0D,eACmB,mBAAzBx0D,KAAKw0D,mBACJ,QAAkB2uB,EAAQwD,QAAQxsF,GAAG6K,EAAE9G,MAAQilF,EAAQwD,QAAQtsF,OAAS,IACzEszC,EAAM,IAAMA,EAAM,KAEtB1lC,EAAQ0+E,QAAQnrF,KAAKmyC,GAErB,IADA,IAAIs5C,EAAuC,kBAAvBh/E,EAAQ0+E,QAAQxsF,GAAkBU,OAAOomB,KAAKhZ,EAAQ0+E,QAAQxsF,IAAM,GAC/EmpB,EAAK,EAAG+mB,EAAS48C,EAAQ3jE,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACxD,IAAIjoB,EAAOgvC,EAAO/mB,GACd,IAAS4jE,OAAO,EAAU7rF,YACnB4M,EAAQ5M,EAEvB,CACJ,CAEA,IAASlB,EAAI,EAAGA,EAAIgpF,EAAQyD,SAASvsF,OAAQF,IACzCy/C,EAAOupC,EAAQyD,SAASzsF,GAAG6K,EAC3BiD,EAAQ2+E,SAASprF,KAAK,IAASqrF,oBAAoB7mF,KAAM,eAAgB,CACrEmnF,OAAQvtC,EAAKorC,WACboC,SAAUxtC,EAAKwtC,SACflpF,IAAK07C,EAAKsrC,UACVC,WAAYvrC,EAAKurC,YAClB3C,IAGP,IAASroF,EAAI,EAAGA,EAAIgpF,EAAQuD,OAAOrsF,OAAQF,IACvC8N,EAAQy+E,OAAOlrF,KAAK,IAASgyD,SAAS21B,EAAQuD,OAAOvsF,GAAG6K,EAAE0+E,UAAWlB,IAGzE,IAASroF,EAAI,EAAGA,EAAIgpF,EAAQhB,WAAW9nF,OAAQF,IAC3Cy/C,EAAOupC,EAAQhB,WAAWhoF,GAAG6K,EAC7BiD,EAAQk6E,WAAW3mF,KAAK,CAAEqE,KAAM+5C,EAAK/5C,KAAMujF,MAAO,IAAS51B,SAAS5T,EAAKwpC,MAAOZ,KAEpF,IAAIvuE,EAAM,CAAC,EAIX,GAHAjU,KAAKqnF,gBAAgBjqE,EAASolE,EAAO+D,EAASt+E,EAASgM,GAEvD,IAAS4yE,oBAAoB7mF,KAAM,YAAa,CAAEskF,GAAIA,EAAI9B,MAAOA,EAAO1zD,OAAQA,EAAQw4D,UAAWrzE,IAC/FuuE,EAAMQ,SAAS3oF,OACf,IAASF,EAAI,EAAGA,EAAIqoF,EAAMQ,SAAS3oF,OAAQF,IACvC8Z,EAAIuuE,EAAMQ,SAAS7oF,GAAG+D,KAAOskF,EAAMQ,SAAS7oF,GAAG0B,MAKvD,IADA,IAAIolB,EAAOpmB,OAAOomB,KAAKhN,GACd44B,EAAK,EAAG06C,EAAStmE,EAAM4rB,EAAK06C,EAAOltF,OAAQwyC,IAAM,CAClDxxC,EAAOksF,EAAO16C,IACd,IAASq6C,OAAOjzE,EAAI5Y,KAAwB,KAAd4Y,EAAI5Y,IAAqC,IAArB4Y,EAAI5Y,GAAMhB,gBACrD4Z,EAAI5Y,EAEnB,CACM+hB,EAAQ0kE,QAAQ7tE,GAAOmJ,EAAQ4kE,QAAQ/tE,GAAiB,OAAT+tE,IACjD/tE,EAAImJ,EAAQ0kE,MAAQ,IAAS+E,oBAAoB7mF,KAAM,SAAU8hF,EAAMU,GACvEvuE,EAAImJ,EAAQ4kE,MAAQ,IAAS6E,oBAAoB7mF,KAAM,SAAUgiF,EAAMQ,IAE3E,IAAI9jF,EAAIsB,KAAKsiF,IAEb,OADAtiF,KAAKsiF,IAAM,CAAC,EACqB,SAA7BtiF,KAAKod,QAAQukE,YACN,CACH/vE,KAAMlJ,KAAKC,UAAUsL,EAAK,IAAS7Q,MAAMokF,kBACzCzzE,IAAKA,EACL0zE,QAAS/oF,EACTmB,KAAM,OACNupD,YAAa,oCAGrBxP,EAAO55C,KAAK0nF,qBAAqBzzE,EAAKuuE,EAAO8B,GAC7C1qC,IAA4C,IAApC0qC,EAAGjC,WAAWtuE,IAAIhQ,QAAQ,KAAc,IAAM,KAAO61C,EACtD,CACH/5C,KAAM,MAAOkU,IAAK6lC,EAAKv/C,OAAS0Z,EAAI5P,QAAQ,OAAQy1C,GAAQ7lC,EAAK0zE,QAAS/oF,GAElF,EACA0nF,EAAWtrF,UAAUusF,gBAAkB,SAAUjqE,EAASolE,EAAO+D,EAASt+E,EAAS0/E,GAC/E,IAAIC,EAAQ,QACR3zE,EAAM0zE,EACV1zE,EAAImJ,EAAQzC,MAAQ6nE,EAAMqF,UACtBzqE,EAAQ1N,OAAS8yE,EAAMsF,UAAUztF,SACjC4Z,EAAImJ,EAAQ1N,OAAS,eAAgB1P,KAAO,IAAS6mF,oBAAoB7mF,KAAM,aAAcwiF,EAAMsF,WAAa,KAE/GtF,EAAMsF,UAAUztF,QAAU+iB,EAAQglE,SACnCnuE,EAAImJ,EAAQglE,QAAU,aAAcpiF,MAAQ,aAAcumF,EACtD,IAASM,oBAAoB7mF,KAAM,WAAY,CAAE+nF,QAAS,IAASv6B,SAAS+4B,EAAQN,SAASjB,WAAYxC,GAAQwF,QAASxF,EAAMwF,SAAWxF,GAASA,EAAMwF,SAElK/zE,EAAImJ,EAAQykE,QAAU,aAAc0E,IAAY/D,EAAMsF,UAAUztF,OAC5D,IAASwsF,oBAAoB7mF,KAAM,WAAY,IAASwtD,SAAS+4B,EAAQN,SAASjB,WAAYxC,GAAQA,GAAS,GACnHvuE,EAAImJ,EAAQ6kE,OAASO,EAAMe,gBAAkB,IAASsD,oBAAoB7mF,KAAM,UAAWwiF,EAAMe,gBAAiBf,GAAS,GAC3HvuE,EAAImJ,EAAQ9B,QAAUrT,EAAQ2+E,SAASvsF,OAAS,IAASwsF,oBAAoB7mF,KAAM,WAAYiI,EAAQ2+E,SAAUpE,GAAS,GAC1HvuE,EAAImJ,EAAQ0kE,MAAQ,WAAYyE,EAC5B,IAASM,oBAAoB7mF,KAAM,SAAU,IAASwtD,SAAS+4B,EAAQP,OAAOD,IAAKvD,GAAQA,GAAS,GACxGvuE,EAAImJ,EAAQ4kE,MAAQ,WAAYuE,EAC5B,IAASM,oBAAoB7mF,KAAM,SAAU,IAASwtD,SAAS+4B,EAAQT,OAAOC,IAAKvD,GAAQA,GAAS,GACxGvuE,EAAImJ,EAAQ8kE,OAASj6E,EAAQ0+E,QAAQtsF,QAAU4N,EAAQ2+E,SAASvsF,OAC5D,IAASwsF,oBAAoB7mF,KAAM,UAAWiI,EAAQ0+E,QAASnE,GAAS,GAC5EvuE,EAAImJ,EAAQwkE,QAAU35E,EAAQw+E,MAAMpsF,OAAS,IAASwsF,oBAAoB7mF,KAAM,WAAYiI,EAAQw+E,MAAOjE,GAAS,GACpHvuE,EAAImJ,EAAQ2kE,OAAS95E,EAAQy+E,OAAOrsF,OAAS,IAASwsF,oBAAoB7mF,KAAM,UAAWiI,EAAQy+E,OAAQlE,GAAS,GACpHvuE,EAAImJ,EAAQ+kE,YAAcl6E,EAAQk6E,WAAW9nF,OACzC,IAASwsF,oBAAoB7mF,KAAM,eAAgBiI,EAAQk6E,WAAYK,GAAS,GACpFvuE,EAAI2zE,GAAS,EACjB,EASAxB,EAAWtrF,UAAU4sF,qBAAuB,SAAUz/E,EAASu6E,EAAO8B,GAClE,MAAO,EAEX,EAgBA8B,EAAWtrF,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,GAC5E,GAAI9B,GAAOA,EAAIj4B,kBAAkB,kBAC0C,IAAvEi4B,EAAIj4B,kBAAkB,gBAAgBzmD,QAAQ,oBAA4B,CAC1E,IAAIkkF,EAAiB,IAASC,iBAC1BxG,IAAOA,EAAGwG,mBACV,IAASA,kBAAmB,GAEhCt2E,EAAO,IAASxO,MAAM+kF,UAAUv2E,GAChC,IAASs2E,iBAAmBD,CAChC,CACA,IAAIG,EAAWngF,EACXq6E,EAAM8F,EAASX,SAAW,CAAC,EAC3BY,EAAUz2E,EAAOA,EAAKy2E,QAAU,GACpC,GAAI5F,GAAOA,EAAIj4B,kBAAkB,kBAC6B,IAA1Di4B,EAAIj4B,kBAAkB,gBAAgBzmD,QAAQ,OAC9C,OAAQy+E,EAAMe,gBAAkB,CAAEjoF,OAAQ,GAAI2mF,MAAO,GAAM,GAE/D,IAAI5xE,EAAI3H,KAAKtF,MAAMglF,EAASx2E,MAC5B,GAAIvB,GAAkB,UAAbA,EAAEumD,QAAsBhlD,GAAQA,EAAK8yE,aAE1C,OADAH,EAAQG,aAAe9yE,EAAK8yE,aACrBH,EAEP3yE,GAAQA,EAAKvB,IACbuB,EAAOA,EAAKvB,GAEhB,IAAIzO,EAAO,CAAC,EACRgQ,GAAQ,UAAWA,IACnBhQ,EAAKqgF,MAAQrwE,EAAKqwE,OAEtBrgF,EAAKtG,OAASsW,GAAQA,EAAKtW,OAASsW,EAAKtW,OAASsW,EAClD,IAAI02E,GAAW,EACf,GAAIrhF,MAAMkc,QAAQvR,EAAKtW,SAAWsW,EAAKtW,OAAOjB,OAAQ,CAClD,IAAI6D,EAAM,MACNhE,EAAM,QACN6pF,EAAQ,QAIZ,IAHK,QAAkBnyE,EAAKtW,OAAO,GAAG4C,MAClC0D,EAAKtG,OAAS0E,KAAKuoF,sBAAsB3mF,EAAKtG,OAAQ,EAAGgnF,EAAIoE,OAAOrsF,OAAS,IAE7EmoF,GAASA,EAAMQ,SAAS3oF,QAAUioF,EAAIoE,OAAOrsF,OAC7C,IAAK,IAAIF,EAAI,EAAGA,EAAIqoF,EAAMQ,SAAS3oF,OAAQF,IACvC,GAA+B,sBAA3BqoF,EAAMQ,SAAS7oF,GAAG+D,GAA8B,CAChD,IAAIrC,EAAQ2mF,EAAMQ,SAAS7oF,GAAGD,GAAK6pF,GAC/BzB,EAAIoE,OAAOrsF,SAAWwB,IACtBysF,GAAW,EAEnB,CAGZ,CAIA,OAHKA,GACDtoF,KAAKwoF,mBAAmBlG,EAAK1wE,EAAMhQ,EAAMymF,EAAS7F,GAE/C,IAAS0E,OAAOtlF,EAAKqgF,OAASrgF,EAAKtG,OAAS,CAAEA,OAAQsG,EAAKtG,OAAQ2mF,MAAOrgF,EAAKqgF,MAAOE,WAAYvgF,EAAKugF,WAClH,EACAiE,EAAWtrF,UAAUytF,sBAAwB,SAAU32E,EAAMmyE,EAAOC,GAChE,IAAK,IAAI7pF,EAAI,EAAGA,EAAIyX,EAAKvX,OAAQF,IACzByX,EAAKzX,GAAGsuF,MAAMpuF,QAAUQ,OAAOomB,KAAKrP,EAAKzX,GAAGsuF,MAAM,IAAI1kF,QAAQ,QAAU,GACxE/D,KAAKuoF,sBAAsB32E,EAAKzX,GAAGsuF,MAAO1E,EAAQ,EAAGC,EAAa,GAG1E,IAAI37C,EAAM,YACNqgD,EAAW,cACXC,EAAM,QACN1E,EAAU,UAKd,OAJAryE,EAAKy2B,GAAOk5C,EAAOl5C,GACnBz2B,EAAK+2E,GAAO5E,EACZnyE,EAAK82E,GAAY1E,EACjBpyE,EAAKqyE,GAAWryE,EAAK,GAAG62E,MAAMpuF,OAAS2F,KAAK4oF,kBAAkBh3E,IAAO,QAAkBA,EAAK,GAAG62E,MAAMxE,KAAa,GAC3GryE,CACX,EACAw0E,EAAWtrF,UAAU8tF,kBAAoB,SAAUh3E,EAAMi3E,GAGrD,IAFA,IAAIC,EAAsB,GACtB7E,EAAU,UACL9pF,EAAI,EAAGA,EAAIyX,EAAKvX,OAAQF,IAC7B,GAAK0uF,EAMDC,EAAsBA,EAAoBtuF,OAAOoX,EAAKzX,GAAGsuF,MAAMxE,SAL/D,IAAK,IAAIrhF,EAAI,EAAGA,EAAIgP,EAAKzX,GAAGsuF,MAAMpuF,OAAQuI,IACtCkmF,EAAoBttF,KAAKoW,EAAKzX,GAAGsuF,MAAM7lF,IAOnD,OAAOkmF,CACX,EAOA1C,EAAWtrF,UAAU4qF,QAAU,SAAU1gF,GAErC,OADAhF,KAAKsiF,IAAIoE,OAAS1hF,EACXA,CACX,EAOAohF,EAAWtrF,UAAUgqF,aAAe,SAAU9/E,GAC1ChF,KAAKsiF,IAAIH,WAAan9E,CAC1B,EAWAohF,EAAWtrF,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,EAAGw9E,EAAO9rE,GACjE,IAAI3C,EACA7V,EACJ,MAAO,CACH2B,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAW0G,UAAYzE,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAW4G,WAAa3E,EAAGjC,WAAWtuE,IACjGq1C,YAAa,kCACbkB,SAAU,OACV14C,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5BugF,QAAS3E,EAAQK,eACjBuE,MAAO5E,EAAQG,aACf0E,QAAS7E,EAAQE,eACjB7tB,OAAQ,QACRyyB,MAAOrkF,EAAE+O,GACT7V,IAAK8G,EAAE9G,IACR,IAASorF,aAAatpF,KAAMskF,EAAI9B,KAE3C,EASA4D,EAAWtrF,UAAUmvD,WAAa,SAAUq6B,EAAIr8E,GAEhD,EASAm+E,EAAWtrF,UAAU6pF,OAAS,SAAUL,EAAI1yE,EAAMs0E,EAAW1D,GACzD,MAAO,CACHzuE,IAAKuwE,EAAGjC,WAAWkH,WAAajF,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACvEnC,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5B9M,MAAO+V,EACPy3E,MAAOnD,EACPtvB,OAAQ,UACT,IAAS0yB,aAAatpF,KAAMskF,EAAI9B,KAE3C,EAUA4D,EAAWtrF,UAAUo9B,OAAS,SAAUosD,EAAI6B,EAAUtqF,EAAOqqF,EAAW1D,GACpE,MAAO,CACH3iF,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAW4G,WAAa3E,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACvEnC,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5BzK,IAAKrC,EACL2tF,UAAWrD,EACXkD,MAAOnD,EACPtvB,OAAQ,UACT,IAAS0yB,aAAatpF,KAAMskF,EAAI9B,KAE3C,EAUA4D,EAAWtrF,UAAU+pF,OAAS,SAAUP,EAAI6B,EAAUtqF,EAAOqqF,EAAW1D,GACpE,MAAO,CACH3iF,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAWoH,WAAanF,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACvEnC,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5B9M,MAAOA,EACP+6D,OAAQ,SACR4yB,UAAWrD,EACXjoF,IAAK,IAAS42D,UAAUqxB,EAAUtqF,GAClCwtF,MAAOnD,GACR,IAASoD,aAAatpF,KAAMskF,EAAI9B,KAE3C,EAQA4D,EAAWtrF,UAAUisF,eAAiB,SAAUn1E,EAAM4wE,GAClD,IACI3mF,EADAqC,EAAMskF,EAAMkH,KAEZruF,EAAO6C,EACPyrF,EAAOnH,EAAMtkF,IACb0rF,EAAY,GACO,kBAAZh4E,EAAK,KACZvW,EAAO,MAEX,IAAK,IAAIlB,EAAI,EAAGA,EAAIyX,EAAKvX,OAAQF,IAEzB0B,EADmB,kBAAZ+V,EAAK,GACJ,IAASkjD,UAAU60B,GAAQtuF,EAAMuW,EAAKzX,IAGtCyX,EAAKzX,GAEjByvF,EAAUpuF,KAAK,IAAI,IAAU0C,EAAK,QAASrC,IAE/C,OAAO,IAAUguF,GAAGD,EACxB,EACAxD,EAAWtrF,UAAU0tF,mBAAqB,SAAUlG,EAAK1wE,EAAMhQ,EAAMymF,EAAS7F,GAC1E,IAAI3pC,EAAQjnC,EAIZ,GAHIA,GAAQA,EAAKtW,SACbu9C,EAAQjnC,EAAKtW,QAEbgnF,GAAOA,EAAIH,YAAcG,EAAIH,WAAW9nF,OAAQ,CAChD,IAAI6oF,EAAMZ,EAAIH,WACVnoF,OAAK,EACL8vF,EAAgBjxC,EAChBlL,EAAM,CAAC,EACP/7B,EAAKm4E,YACLD,EAAgBl4E,EAAKm4E,WAEzB,IAAK,IAAI5vF,EAAI,EAAGA,EAAI+oF,EAAI7oF,OAAQF,IAC5BH,EAAK,IAASmoF,WAAWe,EAAI/oF,GAAG0F,MAC5B7F,IACA2zC,EAAIu1C,EAAI/oF,GAAGipF,MAAQ,MAAQF,EAAI/oF,GAAG0F,MAAQ7F,EAAG8vF,EAAe5G,EAAI/oF,GAAGipF,QAG3ExhF,EAAKugF,WAAax0C,CACtB,CACA,IAAIzvC,EAAM,MACN8rF,EAAmB/iF,MAAMkc,QAAQvR,EAAKtW,SAAWsW,EAAKtW,OAAOjB,UAAW,QAAkBuX,EAAKtW,OAAO,GAAG4C,IAC7G,GAAIokF,GAAOA,EAAIoE,QAAUpE,EAAIoE,OAAOrsF,SAAW2vF,EAAkB,CAC7D,IAAItD,EAASpE,EAAIoE,OACjB,IAASvsF,EAAI,EAAGA,EAAIusF,EAAOrsF,OAAQF,IAAK,CACpC,IAAI4pF,EAAQ,MACP,QAAkBsE,KACnBA,EAAU,IAAStG,MAAMsG,EAAS3B,EAAOvsF,KAE7C,IAAI8vF,EAAa,IAAM9F,cAAc3B,EAAMW,QAAS,WAAWhpF,GAAG6K,EAClE6zC,EAAQ,IAASkpC,MAAMlpC,EAAO6tC,EAAOvsF,GAAImoF,EAAIH,WAAY4B,EAAOsE,EAAS4B,EAAWtG,SACxF,CACA/hF,EAAKtG,OAASu9C,CAClB,CACA,OAAOj3C,CACX,EACAwkF,EAAWtrF,UAAUwrF,gBAAkB,SAAU9D,GAC7C,IAAIvuE,EAAM,CAAEwyE,MAAO,GAAIC,OAAQ,GAAIC,QAAS,GAAIC,SAAU,GAAIzE,WAAY,IAM1E,OALAluE,EAAIwyE,MAAQ,IAAMtC,cAAc3B,EAAMW,QAAS,YAC/ClvE,EAAIyyE,OAAS,IAAMvC,cAAc3B,EAAMW,QAAS,WAChDlvE,EAAI0yE,QAAU,IAAMxC,cAAc3B,EAAMW,QAAS,WACjDlvE,EAAI2yE,SAAW,IAAMzC,cAAc3B,EAAMW,QAAS,YAClDlvE,EAAIkuE,WAAa,IAAMgC,cAAc3B,EAAMW,QAAS,gBAC7ClvE,CACX,EACAmyE,EAAWtrF,UAAUovF,UAAY,SAAU9sE,GACvC,IAAInJ,EAAMmJ,EAAQkqE,UACdlqE,EAAQ0R,OAAOz0B,SACf4Z,EAAI6a,OAAS,CAAC,GAElB,IAAK,IAAIxL,EAAK,EAAGupB,EAAKzvB,EAAQ0R,OAAQxL,EAAKupB,EAAGxyC,OAAQipB,IAAM,CACxD,IAAI8gE,EAAMv3C,EAAGvpB,GACb,GAAIrP,EAAImwE,EAAIlmF,KACR,MAAM,IAAI0F,MAAM,4EAEpBqQ,EAAImwE,EAAIlmF,KAAOkmF,EAAIvoF,MACfuoF,EAAIpqF,KACJia,EAAImwE,EAAIlmF,KAAOkmF,EAAIpqF,GAAGgB,KAAKoiB,EAAQolE,MAAO4B,EAAIlmF,IAAKkf,EAAQolE,MAAOplE,EAAQknE,KAE9ErwE,EAAI6a,OAAOs1D,EAAIlmF,KAAO+V,EAAImwE,EAAIlmF,IAClC,CACJ,EACOkoF,CACX,CAxd+B,CAwd7B3E,GAOE0I,EAA8B,SAAUvxB,GAExC,SAASuxB,EAAazoF,GAClB,IAAI6M,EAAQqqD,EAAO59D,KAAKgF,OAASA,KAuBjC,OArBAuO,EAAM6O,SAAU,QAAO,CAAC,EAAG7O,EAAM6O,QAAS,CACtCukE,YAAa,MACbjQ,OAAQ,wEACR0Y,gBAAiB,kBACjBxI,OAAQ,WACRC,OAAQ,UACRC,KAAM,QACNE,KAAM,OACNC,MAAO,eACPC,MAAO,UACPE,OAAQ,UACRiI,MAAO,SACPC,UAAW,eACXC,SAAU,SACVC,UAAW,eACXC,aAAc,2CACdC,iBAAkB,qEAClBC,0BAA2B,iDAC3BC,WAAY,SAEhB,QAAOr8E,EAAM6O,QAAS1b,GAAS,CAAC,GACzB6M,CACX,CAyuBA,OAnwBA0pD,EAAUkyB,EAAcvxB,GA2BxBuxB,EAAarvF,UAAU05D,cAAgB,WACnC,MAAO,cACX,EAUA21B,EAAarvF,UAAU+vF,YAAc,SAAUC,EAAWtI,EAAOuI,GAC7D,IACI3D,EACA4D,EAFA1b,EAAc,GAGdp1E,EAAM4wF,EAAUjvF,MAChBgE,SAAc3F,EACdkpF,EAAQ0H,EAAU1H,MAAQ+G,EAAac,SAASH,EAAU1H,OAAS,KAoCvE,GAnCIlpF,aAAe6F,OACf7F,EAAM,YAAe,IAASkJ,MAAMyO,SAAS3X,GAAO,KAE3C,WAAT2F,IACA3F,EAAMA,EAAIiK,QAAQ,KAAM,MACpB2mF,EAAU3F,aACVjrF,EAAMA,EAAImlC,eAEa,SAAvByrD,EAAU1D,WACVltF,EAAMwa,mBAAmBxa,IAEF,aAAvB4wF,EAAU1D,UAAkD,SAAvB0D,EAAU1D,WAC/CltF,EAAM,IAAOA,EAAM,KAEnB6wF,IACA3H,EAAQ,QAAUA,EAAQ,mBAE1B,IAAShgF,MAAM8nF,OAAOhxF,KACtB8wF,EAAO,QAEPF,EAAU3F,aACL6F,IACD5H,EAAQ,WAAaA,EAAQ,KAEjClpF,EAAMA,EAAImlC,gBAGS,YAAvByrD,EAAU1D,UAAiD,WAAvB0D,EAAU1D,UAAgD,eAAvB0D,EAAU1D,UAC1D,cAAvB0D,EAAU1D,UACVA,GAAoD,IAAzC0D,EAAU1D,SAASrjF,QAAQ,SAAkB,IAASonF,aAAa,YAAc,IAASA,aAAa,SAClHjxF,EAA6B,WAAvB4wF,EAAU1D,UAAgD,cAAvB0D,EAAU1D,SAA2B,KAAO,MAGrFA,EAAW,IAAS+D,aAAaL,EAAU1D,UAE3CA,EAMA,OALA9X,GAAe8T,EACf9T,GAAe8X,EACX4D,IACA1b,GAAe0b,GAEZ1b,EAAcp1E,EAQzB,GAFIktF,GAJC,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBAIpC,IAAS42B,cAAcN,EAAU1D,UAHjC,IAASiE,gBAAgBP,EAAU1D,UAKjC,SAAbA,GAE0B,IAAtBltF,EAAI6J,QAAQ,OACU,MAAlB7J,EAAIgH,OAAO,IAAchH,EAAIy/C,YAAY,KAAO,GAChDz/C,EAAMA,EAAIkH,UAAU,EAAGlH,EAAIG,QAC3B+sF,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACb,IAAS42B,cAAc,cAAhE,IAASC,gBAAgB,eAEO,MAA/BnxF,EAAIgH,OAAOhH,EAAIG,OAAS,IAAcH,EAAI6J,QAAQ,KAAO7J,EAAIG,OAAS,GAC3EH,EAAMA,EAAIkH,UAAU,EAAGlH,EAAIG,OAAS,GACpC+sF,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,aAExBnxF,EAAIy/C,YAAY,OAASz/C,EAAI6J,QAAQ,MAAQ7J,EAAIy/C,YAAY,KAAOz/C,EAAI6J,QAAQ,KAAO,GAC5F7J,EAAMA,EAAIkH,UAAUlH,EAAI6J,QAAQ,KAAO,EAAG7J,EAAIy/C,YAAY,MAC1DytC,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,aAG7BjE,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,aAGrCnxF,EAAMwa,mBAAmBxa,GACzBA,EAAM,IAAOA,EAAM,SAElB,GAAiB,aAAbktF,EAEL,IAA0B,IAAtBltF,EAAI6J,QAAQ,KAAa,CACzB,IAAIunF,EAAsBpxF,EAAImK,MAAM,KAChCknF,OAAgB,EAChBtJ,EAAQ,EAgCZ,GA/ByB,IAArB/nF,EAAI6J,QAAQ,OAAyD,IAA3CunF,EAAoB,GAAGvnF,QAAQ,SAChB,IAAzCunF,EAAoB,GAAGvnF,QAAQ,OAC/BwnF,EAAgBD,EAAoB,GACpCC,EAAgB,IAAOA,EAAgB,IACvCnE,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACb,IAAS42B,cAAc,cAAhE,IAASC,gBAAgB,cAC7B/b,GAAe8X,EAAW,IAC1B9X,GAAe8T,EAAQ,IACnB4H,IACA1b,GAAe0b,GAEnB1b,GAAeic,EAAgB,IAC/BtJ,KAEA/nF,EAAIy/C,YAAY,OAASz/C,EAAIG,OAAS,IAA6E,IAAxEixF,EAAoBA,EAAoBjxF,OAAS,GAAG0J,QAAQ,SACjC,IAAtEunF,EAAoBA,EAAoBjxF,OAAS,GAAG0J,QAAQ,OAC5DwnF,EAAgBD,EAAoBA,EAAoBjxF,OAAS,GACjEkxF,EAAgB,IAAOA,EAAgB,IACvCnE,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,YACzBpJ,EAAQ,IACR3S,GAAe,SAEnBA,GAAe8X,EAAW,IAC1B9X,GAAe8T,EAAQ,IACnB4H,IACA1b,GAAe0b,GAEnB1b,GAAeic,EAAgB,IAC/BtJ,KAEAqJ,EAAoBjxF,OAAS,EAC7B,IAAK,IAAIF,EAAI,EAAGA,EAAImxF,EAAoBjxF,OAAS,EAAGF,IAChD,IAA+C,IAA3CmxF,EAAoBnxF,GAAG4J,QAAQ,SAA0D,IAAzCunF,EAAoBnxF,GAAG4J,QAAQ,KAAa,CAQ5F,GAPAwnF,EAAgBD,EAAoBnxF,GACpCoxF,EAAgB,IAAOA,EAAgB,IACvCnE,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,YACzBpJ,EAAQ,IACR3S,GAAe,SAEF,gBAAb8X,GAA2C,oBAAbA,EAAgC,CAC9D,IAAIxtC,EAAO2xC,EACXA,EAAgBnI,EAChBA,EAAQxpC,CACZ,CACA01B,GAAe8X,EAAW,IAC1B9X,GAAe8T,EAAQ,IACnB4H,IACA1b,GAAe0b,GAEnB1b,GAAeic,EAAgB,IAC/BtJ,GACJ,CAGM,IAAVA,GACAmF,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,aACH,IAAtBnxF,EAAI6J,QAAQ,OAAuC,IAAxB7J,EAAI6J,QAAQ,SACvC7J,GAA4B,IAAtBA,EAAI6J,QAAQ,KAAc7J,EAAImK,MAAM,KAAKvG,KAAK,IAAM5D,EAAImK,MAAM,OAAOvG,KAAK,KAEpF5D,EAAM,IAAOA,EAAM,KAGnBktF,EAAW,UAEnB,MAEIA,GAAY,QAAkBpnF,KAAKw0D,gBAA2C,mBAAzBx0D,KAAKw0D,gBACf,IAAS42B,cAAc,YAA9D,IAASC,gBAAgB,aACH,IAAtBnxF,EAAI6J,QAAQ,OAAuC,IAAxB7J,EAAI6J,QAAQ,SACvC7J,GAA4B,IAAtBA,EAAI6J,QAAQ,KAAc7J,EAAImK,MAAM,KAAKvG,KAAK,IAAM5D,EAAImK,MAAM,OAAOvG,KAAK,KAEpF5D,EAAM,IAAOA,EAAM,IAG3B,GAAiB,gBAAbktF,GAA2C,oBAAbA,EAAgC,CAC1DxtC,EAAO1/C,EACXA,EAAMkpF,EACNA,EAAQxpC,CACZ,CASA,MARiB,aAAbwtC,IACA9X,GAAe8X,EAAW,IAC1B9X,GAAe8T,EAAQ,IACnB4H,IACA1b,GAAe0b,GAEnB1b,GAAep1E,EAAM,KAElBo1E,CACX,EACA6a,EAAarvF,UAAUovF,UAAY,SAAU9sE,GACzCw7C,EAAO99D,UAAUovF,UAAUlvF,KAAKgF,KAAMod,UAC/BA,EAAQkqE,UAAUx4D,MAC7B,EAUAq7D,EAAarvF,UAAU0wF,mBAAqB,SAAUV,EAAWtI,EAAOuI,GAEpE,IADA,IAAIp9C,EAAM,GACDxzC,EAAI,EAAGA,EAAI2wF,EAAUW,WAAWpxF,OAAQF,IAC7CwzC,EAAInyC,KAAK,IAAMwE,KAAK0rF,YAAYZ,EAAUW,WAAWtxF,GAAIqoF,EAAOuI,GAAgB,KAEpF,OAAOp9C,EAAI7vC,KAAK,IAAMgtF,EAAUa,UAAY,IAChD,EASAxB,EAAarvF,UAAU4wF,YAAc,SAAUpnF,EAAQk+E,EAAOuI,GAC1D,OAAOzmF,EAAOsnF,UAAY5rF,KAAKwrF,mBAAmBlnF,EAAQk+E,EAAOuI,GAAgB/qF,KAAK6qF,YAAYvmF,EAAQk+E,EAAOuI,EACrH,EAMAZ,EAAarvF,UAAUgpF,QAAU,SAAU6C,GAIvC,OAHI3mF,KAAKsiF,IAAIhnE,QACTqrE,EAAQnrF,KAAKwE,KAAK0rF,YAAY1rF,KAAKsiF,IAAIhnE,OAAQ,MAAM,IAElDqrE,EAAQ7oF,KAAK,QACxB,EAaAqsF,EAAarvF,UAAU+wF,aAAe,SAAU7mF,GACxCA,EAAEmiF,QAA8B,IAApBniF,EAAEmiF,OAAO9sF,QACrB,IAASuxC,WAAW,0EAGxB,IADA,IAAItnC,EAAStE,KAAKsiF,IAAIhnE,QAAU,GACvBnhB,EAAI,EAAGA,EAAI6K,EAAEmiF,OAAO9sF,OAAQF,IACjCmK,EAAO9I,KAAK,IAAI,IAAUwJ,EAAEmiF,OAAOhtF,GAAI6K,EAAEoiF,SAAUpiF,EAAE9G,IAAK8G,EAAEmgF,aAEhEnlF,KAAKsiF,IAAIhnE,OAAShX,CACtB,EAMA6lF,EAAarvF,UAAUiqF,SAAW,SAAU//E,GAExC,OADAhF,KAAKsiF,IAAIhnE,OAAS,IAAUuuE,GAAG7pF,KAAKsiF,IAAIhnE,QACjC,EACX,EAMA6uE,EAAarvF,UAAUgxF,WAAa,SAAU9mF,GAC1C,IAAI2oC,EAAM,GACV,GAAI3oC,EAAE7E,gBAAgB8G,MAClB,IAAK,IAAI9M,EAAI,EAAGA,EAAI6K,EAAE7E,KAAK9F,OAAQF,IAC/BwzC,EAAInyC,KAAK2uF,EAAac,SAASjmF,EAAE7E,KAAKhG,KAAuB,eAAhB6K,EAAE8hF,UAA6B,QAAU,UAI1Fn5C,EAAInyC,KAAK2uF,EAAac,SAASjmF,EAAE7E,OAAyB,eAAhB6E,EAAE8hF,UAA6B,QAAU,KAEvF,OAAOn5C,EAAI7vC,KAAK,IACpB,EAMAqsF,EAAarvF,UAAUuqF,SAAW,SAAUrgF,GACxC,OAAOA,EAAEypE,UAAU3wE,KAAK,IAC5B,EAOAqsF,EAAarvF,UAAU4qF,QAAU,SAAU1gF,GAEvC,OADAhF,KAAKsiF,IAAIoE,OAAS1hF,EACX,EACX,EAMAmlF,EAAarvF,UAAUmrF,SAAW,SAAUjhF,GACxC,IAAK,IAAI7K,EAAI,EAAGA,EAAI6K,EAAE3K,OAAQF,IAC1B6K,EAAE7K,GAAKgwF,EAAac,SAASjmF,EAAE7K,IAEnC,OAAO6K,EAAElH,KAAK,IAClB,EAOAqsF,EAAarvF,UAAUgqF,aAAe,SAAU9/E,GAE5C,OADAhF,KAAKsiF,IAAIH,WAAan9E,EACf,EACX,EAOAmlF,EAAarvF,UAAUixF,QAAU,SAAU/mF,GACvC,OAAa,IAANA,EAAa,WAAa,EACrC,EAUAmlF,EAAarvF,UAAUmvD,WAAa,SAAUq6B,EAAIr8E,EAAS+jF,GACnD,IAASxG,SAASwG,EAASj4E,IAAK/T,KAAKod,QAAQitE,QAA0C,SAAhC2B,EAASnsF,KAAKw/B,eACrEp3B,EAAQiN,iBAAiB,SAAUlV,KAAKod,QAAQgtE,iBAChDniF,EAAQiN,iBAAiB,qBAAsB,OAC/CjN,EAAQgkF,iBAAiB,uCAGzBhkF,EAAQiN,iBAAiB,SAAUlV,KAAKod,QAAQs0D,QAEpDzpE,EAAQiN,iBAAiB,qBAAsB,OAC/CjN,EAAQiN,iBAAiB,wBAAyB,MACtD,EAiBAi1E,EAAarvF,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,GAC9E,IAAI2H,EAAY,iBAChB,GAAKjkF,GAA4B,QAAjBA,EAAQpI,OAAoBG,KAAKmsF,SAAWv6E,EAAKs6E,GAAY,CACzE,IAAIE,EAAWx6E,EAAKs6E,GAAW7nF,MAAM,eACrCrE,KAAKmsF,QAAUC,EAAS,GACxBpsF,KAAKqsF,kBAAoBD,EAAS,EACtC,CACA,IAAI3E,EAAU,UACd,KAAK,QAAkB71E,EAAKvB,GAAI,CAC5B,IAAIi8E,EAAa9J,GAASA,EAAMe,gBAAmB3xE,EAAKvB,EAAEk8E,QAAU36E,EAAKvB,EACrEjQ,EAAW,aACf,KAAK,QAAkBksF,GACnB,IAAK,IAAInyF,EAAI,EAAGA,EAAImyF,EAASjyF,OAAQF,KAC5B,QAAkBmyF,EAASnyF,GAAGiG,YACxBksF,EAASnyF,GAAGiG,EAInC,CACA,IAAIkiF,EAAMr6E,GAAWA,EAAQw/E,GACzB+E,EAAgBxsF,KAAKysF,qBAAqB76E,EAAM4wE,EAAOC,EAAKx6E,EAASs8E,GACzE,GAAIiI,EACA,OAAOA,EAEX,IAAIE,EAAejK,GAAOx6E,EAAQuiD,kBAAkB,sBAChDy3B,EAAQ,KACR1xE,EAAWm8E,GAAgB5wF,SAAS4wF,EAAc,KAAQ,EAC9D,GAAIlK,GAASA,EAAMe,gBAAiB,CAChC,IAAIoJ,EAAa,WACb/6E,EAAK+6E,IAAe/6E,EAAK,kBACzBqwE,EAAQrwE,EAAK+6E,IAAe/6E,EAAK,gBAEjCA,EAAKvB,IACLuB,EAAOA,EAAKvB,IAEZuB,EAAK+6E,IAAe/6E,EAAK,kBACzBqwE,EAAQrwE,EAAK+6E,IAAe/6E,EAAK,eAEzC,CACgB,IAAZrB,GAAiBqB,EAAK/V,QACtB+V,EAAOA,EAAK/V,OAEZ+V,EAAKvB,IACLuB,EAAOA,EAAKvB,GAEZE,EAAU,GAAKqB,EAAK26E,UACpB36E,EAAOA,EAAK26E,SAEhB,IAAI3qF,EAAO,CAAC,EAIZ,OAHAA,EAAKqgF,MAAQA,EACbrgF,EAAKtG,OAASsW,EACd5R,KAAKwoF,mBAAmBlG,EAAK1wE,EAAMhQ,EAAM,KAAM4gF,GACxC,IAAS0E,OAAOjF,GAASrgF,EAAKtG,OAAS,CAAEA,OAAQsG,EAAKtG,OAAQ2mF,MAAOrgF,EAAKqgF,MAAOE,WAAYvgF,EAAKugF,WAC7G,EAUAgI,EAAarvF,UAAU4sF,qBAAuB,SAAUz/E,EAASu6E,EAAO8B,GACpE,IAAI32C,EAAM,GACN07C,EAAQ,QACRnD,EAAYj+E,EAAQohF,IAAU,GAC9B91C,EAAS,iBACNtrC,EAAQohF,GACX/E,EAAGjC,WAAWuK,iBACd3kF,EAAQsrC,GAAU,QAGtB,IADA,IAAItyB,EAAOpmB,OAAOomB,KAAKhZ,GACdqb,EAAK,EAAGupE,EAAS5rE,EAAMqC,EAAKupE,EAAOxyF,OAAQipB,IAAM,CACtD,IAAIjoB,EAAOwxF,EAAOvpE,GAClBqqB,EAAInyC,KAAKH,EAAO,IAAM4M,EAAQ5M,GAClC,CAEA,OADAsyC,EAAMA,EAAI7vC,KAAK,KACXwmF,EAAGjC,WAAWtuE,MAA2C,IAApCuwE,EAAGjC,WAAWtuE,IAAIhQ,QAAQ,OAAgBmiF,EACxDv4C,EAEJA,EAAItzC,OAAS6rF,EAAY,IAAMv4C,EAAMu4C,GAAa,EAC7D,EACAiE,EAAarvF,UAAUgyF,kBAAoB,SAAU5uF,EAAK6uF,GACtD,IAAK,IAAIzpE,EAAK,EAAGupB,GAAM,QAAkBkgD,GAAwC,GAA1BlyF,OAAOomB,KAAK8rE,GAAkBzpE,EAAKupB,EAAGxyC,OAAQipB,IAAM,CACvG,IAAIjoB,EAAOwxC,EAAGvpB,GACTypE,EAAW1xF,aAAiB0E,OAC7BgtF,EAAW1xF,GAAQ,IAAS2xF,UAAUC,YAAYF,EAAW1xF,IAErE,CACA,OAAO0xF,CACX,EASA5C,EAAarvF,UAAU6pF,OAAS,SAAUL,EAAI1yE,EAAMs0E,GAChD,MAAO,CACHnyE,KAAMuwE,EAAGjC,WAAWkH,WAAajF,EAAGjC,WAAWtuE,KAAK5P,QAAQ,OAAQ+hF,EAAY,IAAMA,EAAY,IAClGt0E,KAAMlJ,KAAKC,UAAUiJ,EAAM5R,KAAKod,QAAQ8vE,UAAYltF,KAAK8sF,kBAAoB,MAErF,EAUA3C,EAAarvF,UAAUo9B,OAAS,SAAUosD,EAAI6B,EAAUtqF,EAAOqqF,GAC3D,IAAInyE,EAOJ,OAFIA,EAJiB,kBAAVlY,GAAuB,IAASuH,MAAM8nF,OAAOrvF,GAI9C,IAAMA,EAAQ,IAHd,KAAOA,EAAQ,KAKlB,CACHgE,KAAM,SACNkU,KAAMuwE,EAAGjC,WAAW4G,WAAa3E,EAAGjC,WAAWtuE,KAAK5P,QAAQ,OAAQ+hF,EAAY,IAAMA,EAAY,IAAMnyE,EAEhH,EAaAo2E,EAAarvF,UAAU+pF,OAAS,SAAUP,EAAI6B,EAAUtqF,EAAOqqF,EAAW1D,EAAO9rE,GAI7E,IAAI3C,EAOJ,MAVgC,UAA5B/T,KAAKod,QAAQwtE,aAA2B,QAAkBl0E,KAC1D7a,EAAQmE,KAAKmtF,iBAAiBtxF,EAAO6a,EAAUyvE,IAO/CpyE,EAJ2B,kBAApBlY,EAAMsqF,IAA2B,IAAS/iF,MAAM8nF,OAAOrvF,EAAMsqF,IAI9D,IAAMtqF,EAAMsqF,GAAY,IAHxB,KAAOtqF,EAAMsqF,GAAY,KAK5B,CACHtmF,KAAMG,KAAKod,QAAQwtE,WACnB72E,KAAMuwE,EAAGjC,WAAWoH,WAAanF,EAAGjC,WAAWtuE,KAAK5P,QAAQ,OAAQ+hF,EAAY,IAAMA,EAAY,IAAMnyE,EACxGnC,KAAMlJ,KAAKC,UAAU9M,EAAOmE,KAAKod,QAAQ8vE,UAAYltF,KAAK8sF,kBAAoB,MAC9Epb,OAAQ1xE,KAAKod,QAAQs0D,OAE7B,EAYAyY,EAAarvF,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,EAAGw9E,EAAO9rE,GACnE,IAAI02E,EAAcpoF,EAAEgmF,KAAO,IAASqC,QAAQrtF,KAAKod,QAAQmtE,UACrDx2E,EAAM/T,KAAKmsF,QAAUnsF,KAAKmsF,QAAU,IAAMnsF,KAAKod,QAAQitE,MACvD/F,EAAGjC,WAAWtuE,IAAI5P,QAAQ,OAAQ,IAAMnE,KAAKod,QAAQitE,OACzDrlF,EAAE+O,IAAM/T,KAAKqsF,kBAAoBrsF,KAAKqsF,kBAAoBrnF,EAAE+O,IAC5D,IAAInS,EAAO,CACPmS,IAAK/O,EAAE+O,IACP7V,IAAK8G,EAAE9G,IACPsiB,IAAK,EACL8sE,KAAM,IAASD,QAAQrtF,KAAKod,QAAQktE,YAEpCr2E,EAAM,KAAOm5E,EAAc,KAQ/B,OAPAn5E,GAAO,2CAA6CrS,EAAK0rF,KAAKnpF,QAAQ,KAAM,IAAM,KAClFnE,KAAKsiF,IAAIgI,UAAY,EACrBr2E,GAAOjU,KAAKutF,sBAAsBhJ,EAAQG,aAAc9iF,EAAM0iF,GAC9DrwE,GAAOjU,KAAKwtF,sBAAsBjJ,EAAQK,eAAgBhjF,EAAM0iF,EAAI5tE,EAAWA,EAASkuE,eAAiB,IACzG3wE,GAAOjU,KAAKytF,sBAAsBlJ,EAAQE,eAAgB7iF,EAAM0iF,GAChErwE,GAAOrS,EAAK0rF,KAAO,OACnBr5E,GAAO,KAAOm5E,EAAc,KACrB,CACHvtF,KAAM,OACNkU,IAAKA,EACLu2C,SAAU,OACVlB,YAAa,2CAA6CgkC,EAC1Dx7E,KAAMqC,EAEd,EAUAk2E,EAAarvF,UAAU2yF,sBAAwB,SAAU1zF,EAAKiL,EAAGs/E,GAC7D,IAAKvqF,EACD,MAAO,GAEX,IAAIka,EAAM,GACNy5E,EAAO,CACP,OAAU,UACV,IAAO,SAAU97E,EAAMzX,EAAG+D,GACtB,IAAI6V,EAAM,IAAS+gD,UAAU52D,EAAK0T,EAAKzX,IACvC,GAAmB,kBAAR4Z,GAAoB,IAAS3Q,MAAM8nF,OAAOn3E,GACjD,MAAO,IAAMA,EAAM,IAElB,GAAIA,aAAehU,KAAM,CAC1B,IAAI4tF,EAAW/7E,EAAKzX,GAAG+D,GACvB,MAAO,IAAMyvF,EAASztF,SAAW,GACrC,CAEI,MAAO,KAAO6T,EAAM,IAE5B,EACA,KAAQ,SAAUnC,EAAMzX,GAAK,MAAO,EAAI,GAG5C,OADA8Z,EAAMjU,KAAK4tF,oBAAoB7zF,EAAKiL,EAAG0oF,EAAMpJ,GACtCrwE,EAAM,IACjB,EASAk2E,EAAarvF,UAAUyyF,sBAAwB,SAAUxzF,EAAKiL,EAAGs/E,GAC7D,IAAKvqF,EACD,MAAO,GAEX,IAAIka,EAAM,GACNy5E,EAAO,CACP,OAAU,QACV,IAAO,SAAU97E,EAAMzX,EAAG+D,GAAO,MAAO,EAAI,EAC5C,KAAQ,SAAU0T,EAAMzX,GAAK,OAAOuO,KAAKC,UAAUiJ,EAAKzX,IAAM,MAAQ,GAG1E,OADA8Z,EAAMjU,KAAK4tF,oBAAoB7zF,EAAKiL,EAAG0oF,EAAMpJ,GACtCrwE,CACX,EAUAk2E,EAAarvF,UAAU0yF,sBAAwB,SAAUzzF,EAAKiL,EAAGs/E,EAAIuJ,GACjE,IAAIt/E,EAAQvO,KACZ,IAAKjG,EACD,MAAO,GAEX,IAAIka,EAAM,GACVla,EAAIynB,SAAQ,SAAUkuD,GAAU,OAAOA,EAASnhE,EAAM4+E,iBAAiBzd,EAAQme,EAAIvpF,QAAO,SAAUgO,GAAK,OAAO,IAASwiD,UAAU9vD,EAAE9G,IAAKoU,KAAO,IAASwiD,UAAU9vD,EAAE9G,IAAKwxE,EAAS,IAAG,GAAI1qE,EAAE9G,IAAM,IACnM,IAAIwvF,EAAO,CACP,OAAU1tF,KAAKod,QAAQwtE,WAAa,IACpC,IAAO,SAAUh5E,EAAMzX,EAAG+D,GACtB,GAA4B,kBAAjB0T,EAAKzX,GAAG+D,IAAqB,IAASkF,MAAM8nF,OAAOt5E,EAAKzX,GAAG+D,IAClE,MAAO,IAAM0T,EAAKzX,GAAG+D,GAAO,IAE3B,GAAI0T,EAAKzX,GAAG+D,aAAgB6B,KAAM,CACnC,IAAI2xC,EAAO9/B,EAAKzX,GAAG+D,GACnB,MAAO,IAAMwzC,EAAKxxC,SAAW,GACjC,CAEI,MAAO,KAAO0R,EAAKzX,GAAG+D,GAAO,IAErC,EACA,KAAQ,SAAU0T,EAAMzX,GAAK,OAAOuO,KAAKC,UAAUiJ,EAAKzX,IAAM,MAAQ,GAG1E,OADA8Z,EAAMjU,KAAK4tF,oBAAoB7zF,EAAKiL,EAAG0oF,EAAMpJ,GACtCrwE,CACX,EACAk2E,EAAac,SAAW,SAAU5vF,GAC9B,OAAOA,EAAK8I,QAAQ,MAAO,IAC/B,EACAgmF,EAAarvF,UAAU8yF,oBAAsB,SAAU7zF,EAAKiL,EAAG0oF,EAAMpJ,GAEjE,IADA,IAAIrwE,EAAM,GACD9Z,EAAI,EAAGA,EAAIJ,EAAIM,OAAQF,IAC5B8Z,GAAO,KAAOjP,EAAEsoF,KAAO,KACvBr5E,GAAOjU,KAAKod,QAAQstE,iBAAmB,OACvCz2E,GAAOy5E,EAAKrvF,OACQ,UAAhBqvF,EAAKrvF,OACL4V,IAAQqwE,EAAGjC,WAAWkH,WAAajF,EAAGjC,WAAW2G,SAAWhkF,EAAE+O,KAAO25E,EAAK35E,IAAIha,EAAKI,EAAG6K,EAAE9G,KAAO,cAE1E,SAAhBwvF,EAAKrvF,QAAqC,WAAhBqvF,EAAKrvF,OACpC4V,IAAQqwE,EAAGjC,WAAWoH,WAAanF,EAAGjC,WAAW2G,SAAWhkF,EAAE+O,KAAO25E,EAAK35E,IAAIha,EAAKI,EAAG6K,EAAE9G,KAAO,cAE1E,YAAhBwvF,EAAKrvF,SACV4V,IAAQqwE,EAAGjC,WAAW4G,WAAa3E,EAAGjC,WAAW2G,SAAWhkF,EAAE+O,KAAO25E,EAAK35E,IAAIha,EAAKI,EAAG6K,EAAE9G,KAAO,eAEnG+V,GAAO,WAAajU,KAAKod,QAAQs0D,OAAS,KAC1Cz9D,GAAO,eAAiBjU,KAAKsiF,IAAIgI,YAAc,KAC/Cr2E,GAAOjU,KAAKod,QAAQutE,0BAA4B,MAC3C,QAAkB5wF,EAAII,GAAG,gBAK1B8Z,GAAO,MAJPA,GAAO,aAAela,EAAII,GAAG,eAAiB,cACvCJ,EAAII,GAAG,gBAKlB8Z,GAAOy5E,EAAK97E,KAAK7X,EAAKI,GAE1B,OAAO8Z,CACX,EACAk2E,EAAarvF,UAAU2xF,qBAAuB,SAAU76E,EAAM4wE,EAAOC,EAAKx6E,EAASs8E,GAC/E,GAAI9B,GAAOA,EAAIj4B,kBAAkB,kBAA6E,IAA1Di4B,EAAIj4B,kBAAkB,gBAAgBzmD,QAAQ,OAC9F,OAAQy+E,EAAMe,gBAAkB,CAAEjoF,OAAQ,GAAI2mF,MAAO,GAAM,GAE/D,GAAIh6E,GAAWjI,KAAKod,QAAQitE,OAAS,IAAS7E,SAASv9E,EAAQ8L,IAAK/T,KAAKod,QAAQitE,QAAyC,SAA/BpiF,EAAQpI,KAAKw/B,cAA0B,CAC9H,IAAI2rD,EAAOvI,EAAIj4B,kBAAkB,gBAC7BsjC,OAAO,EACPC,OAAU,EACV19E,EAAIuB,EAAO,GAGf,GAFAo5E,EAAOA,EAAK5pF,UAAU4pF,EAAKjnF,QAAQ,kBAAoB,GACvDsM,EAAIA,EAAEhM,MAAM2mF,GACR36E,EAAEhW,OAAS,EACX,MAAO,CAAC,EAEZgW,EAAIA,EAAE,GACN,IAAI29E,EAAQ,sDAAsD9pF,KAAKmM,GACnE29E,GACA39E,EAAElM,QAAQ6pF,EAAM,GAAI,IAExB,IAAIC,EAAaD,EAAQA,EAAM,GAAK,GACpC39E,EAAIA,EAAEhM,MAAM4pF,GACZ,IAAK,IAAI9zF,EAAIkW,EAAEhW,OAAQF,GAAK,EAAGA,IACtB,iBAAiBqE,KAAK6R,EAAElW,KAAQ,cAAcqE,KAAK6R,EAAElW,MAG1D2zF,EAAOhyF,SAAS,uBAAuBoI,KAAKmM,EAAElW,IAAI,GAAI,IAClDoqF,EAAQG,aAAaoJ,KACrBC,EAAU,IAAS3qF,MAAM+kF,UAAU,WAAWjkF,KAAKmM,EAAElW,IAAI,KACzD,QAAO,CAAC,EAAGoqF,EAAQG,aAAaoJ,GAAO9tF,KAAKuiF,gBAAgBwL,MAGpE,OAAOxJ,CACX,CACA,OAAO,IACX,EACA4F,EAAarvF,UAAUqyF,iBAAmB,SAAUv7E,EAAM8E,EAAUxY,GAChE,IAAIqQ,EAAQvO,KACZ,OAAI,QAAkB0W,IAGtB7b,OAAOomB,KAAKrP,GAAM4P,SAAQ,SAAUnmB,GAChC,GAAIA,IAAS6C,GAAgB,gBAAT7C,EAChB,GAAI,IAAS6yF,cAAct8E,EAAKvW,IAAQ,CACpCkT,EAAM4+E,iBAAiBv7E,EAAKvW,GAAOqb,EAASrb,IAC5C,IAAI8yF,EAAQtzF,OAAOomB,KAAKrP,EAAKvW,IAAOiJ,QAAO,SAAUsN,GAAQ,MAAgB,gBAATA,CAAwB,IACvE,IAAjBu8E,EAAM9zF,eACCuX,EAAKvW,EAEpB,MACSuW,EAAKvW,KAAUqb,EAASrb,IAGxBuW,EAAKvW,IAASqb,EAASrb,IAASuW,EAAKvW,GAAM+yF,YAAc13E,EAASrb,GAAM+yF,mBAFtEx8E,EAAKvW,EAMxB,IAlBWuW,CAoBf,EACOu4E,CACX,CArwBiC,CAqwB/B/D,GAQEiI,EAAgC,SAAUz1B,GAE1C,SAASy1B,EAAe3sF,GACpB,IAAI6M,EAAQqqD,EAAO59D,KAAKgF,KAAM0B,IAAU1B,KA0BxC,OAxBAuO,EAAM6O,SAAU,QAAO,CAAC,EAAG7O,EAAM6O,QAAS,CACtCukE,YAAa,MACbjQ,OAAQ,iDACR0Y,gBAAiB,kBACjBxI,OAAQ,WACRC,OAAQ,UACRC,KAAM,QACNE,KAAM,OACNC,MAAO,SACP3mE,OAAQ,UACR4mE,MAAO,UACPE,OAAQ,UACRiI,MAAO,SACPC,UAAW,eACXC,SAAU,SACVC,UAAW,eACXC,aAAc,2CACdC,iBAAkB,qEAClBC,0BAA2B,iDAC3BC,WAAY,QACZsC,WAAW,EACXx9E,MAAO,YAEX,QAAOnB,EAAM6O,QAAS1b,GAAS,CAAC,GACzB6M,CACX,CA+NA,OA5PA0pD,EAAUo2B,EAAgBz1B,GAiC1By1B,EAAevzF,UAAU05D,cAAgB,WACrC,MAAO,gBACX,EAOA65B,EAAevzF,UAAUixF,QAAU,SAAU/mF,GACzC,OAAa,IAANA,EAAa,OAAS,EACjC,EAUAqpF,EAAevzF,UAAU+vF,YAAc,SAAUC,EAAWtI,EAAOuI,GAC/D,IAAIzb,EAAc,GACdp1E,EAAM4wF,EAAUjvF,MAChByyF,EAASp0F,aAAe6F,KAC5B,GAAIyiF,aAAiB,IAEjB,IADA,IAAIW,EAAUnjF,KAAKsmF,gBAAgB9D,GAC1BroF,EAAI,EAAGA,EAAIgpF,EAAQwD,QAAQtsF,OAAQF,IACpCgpF,EAAQwD,QAAQxsF,GAAG6K,EAAE9G,MAAQ4sF,EAAUjvF,QACvCkvF,GAAe,GAW3B,OAPAzb,EAAc1W,EAAO99D,UAAU+vF,YAAY7vF,KAAKgF,KAAM8qF,EAAWtI,EAAOuI,GACpEuD,IACAhf,EAAcA,EAAYnrE,QAAQ,kBAAmB,OAErD,IAASf,MAAM8nF,OAAOhxF,KACtBo1E,EAAcA,EAAYnrE,QAAQ,OAAQ,IAAIA,QAAQ,KAAM,KAEzDmrE,CACX,EAaA+e,EAAevzF,UAAU+wF,aAAe,SAAU7mF,GAC9C,IAAIsW,EAAStb,KAAKsiF,IAAIsE,UAAY,GAClCtrE,EAAO9f,KAAKwJ,EAAE9G,KACd8B,KAAKsiF,IAAIsE,SAAWtrE,CACxB,EAMA+yE,EAAevzF,UAAUiqF,SAAW,SAAU//E,GAC1C,OAAOhF,KAAKsiF,IAAIsE,SAAS9oF,KAAK,OAClC,EAQAuwF,EAAevzF,UAAUyzF,SAAW,SAAUvpF,GAC1C,IAAIuJ,EAAQvO,KACRwuF,EAAW,CAAC,EACZ5/D,EAAW,CAAC,EACZo5D,EAAUhjF,EAAEgjF,QAAQrjF,QACpB8pF,EAAQ,GACR1G,EAAU/iF,EAAE+iF,QAAQzjF,QAAO,SAAU/J,GAAQ,OAAOA,EAAKwJ,QAAQ,MAAQ,CAAG,IAgDhF,OA/CAgkF,EAAQvmE,SAAQ,SAAUqgE,GACtB,IAAIr4C,EAASq4C,EAAOx9E,MAAM,KAI1B,GAHMmlC,EAAO,KAAMglD,IACfA,EAAShlD,EAAO,IAAM,IAEJ,IAAlBA,EAAOnvC,OACHm0F,EAAShlD,EAAO,IAAInvC,SAAwD,IAA9CQ,OAAOomB,KAAKutE,GAAUzqF,QAAQylC,EAAO,KAChB,IAA/CglD,EAAShlD,EAAO,IAAI,GAAGzlC,QAAQ,aAAsE,IAAjDyqF,EAAShlD,EAAO,IAAI,GAAGzlC,QAAQ,aACnFyqF,EAAShlD,EAAO,IAAI,GAAKglD,EAAShlD,EAAO,IAAI,GAApBglD,YAA4ChlD,EAAO,GAG5EglD,EAAShlD,EAAO,IAAI,GAAKglD,EAAShlD,EAAO,IAAI,GAAK,IAAMA,EAAO,GAInEglD,EAAShlD,EAAO,IAAIhuC,KAAK,WAAaguC,EAAO,QAGhD,CAID,IAHA,IAAIklD,EAAM,WAAallD,EAAOA,EAAOnvC,OAAS,GAC1C4+E,EAAM,GACN0V,EAAU,GACLx0F,EAAI,EAAGA,EAAIqvC,EAAOnvC,OAAS,EAAGF,IACnC8+E,EAAMA,EAAM,WAAazvC,EAAOrvC,GAAK,IACrCw0F,GAAoB,IAExB,IAAIC,EAAa3V,EAAMyV,EAAMC,EAC7B,GAAIH,EAAShlD,EAAO,IAAInvC,SAAwD,IAA9CQ,OAAOomB,KAAKutE,GAAUzqF,QAAQylC,EAAO,KACnEj7B,EAAMsgF,iBAAiBL,EAAShlD,EAAO,KAAK,GAAO,CACnD,IAAIslD,EAAMvgF,EAAMsgF,iBAAiBL,EAAShlD,EAAO,KACjDglD,EAAShlD,EAAO,IAAIslD,GAAON,EAAShlD,EAAO,IAAIslD,GAAOF,EAAWzqF,QAAQ,WAAY,IACzF,MAEIqqF,EAAShlD,EAAO,IAAIhuC,KAAKozF,EAEjC,CACJ,IAEA/zF,OAAOomB,KAAKutE,GAAUhtE,SAAQ,SAAU4gE,IACF,IAA7B4F,EAAQjkF,QAAQq+E,IACjB4F,EAAQxsF,KAAK4mF,EAErB,IACA4F,EAAQxmE,SAAQ,SAAU4gE,GACtBxzD,EAASwzD,GAAUA,KAAUoM,EAAWpM,EAAS,IAAMoM,EAASpM,GAAQtkF,KAAK,KAAO,IAAMskF,CAC9F,IACAvnF,OAAOomB,KAAK2N,GAAUpN,SAAQ,SAAUutE,GAAM,OAAON,EAAMjzF,KAAKozB,EAASmgE,GAAM,IACxEN,EAAM3wF,KAAK,IACtB,EACAuwF,EAAevzF,UAAU+zF,iBAAmB,SAAUrM,EAAO8F,GACzD,IAAK,IAAInuF,EAAI,EAAGA,EAAIqoF,EAAMnoF,OAAQF,IAC9B,IAAqC,IAAjCqoF,EAAMroF,GAAG4J,QAAQ,WACjB,QAAOukF,GAAkBnuF,EAGjC,OAAOmuF,GAAmB,CAC9B,EAOA+F,EAAevzF,UAAUk0F,WAAa,SAAUC,GAC5C,IAAI9H,EAAS8H,EAAezqF,KAAI,SAAU4+E,GAAS,OAAO+G,EAAac,SAAS7H,EAAQ,IAAGtlF,KAAK,KAChG,MAAO,YAAcqpF,EAAS,IAClC,EAMAkH,EAAevzF,UAAUmrF,SAAW,SAAUjhF,GAC1C,OAAO4zD,EAAO99D,UAAUmrF,SAASjrF,KAAKgF,KAAMgF,EAAEV,QAAO,SAAU/J,GAAQ,OAA8B,IAAvBA,EAAKwJ,QAAQ,IAAa,IAC5G,EAUAsqF,EAAevzF,UAAUmvD,WAAa,SAAUq6B,EAAIr8E,EAAS+jF,GACnC,SAAlBA,EAASnsF,MAAqC,QAAlBmsF,EAASnsF,MAAoC,UAAlBmsF,EAASnsF,MAChEoI,EAAQiN,iBAAiB,SAAU,yBAEvCjN,EAAQiN,iBAAiB,SAAUlV,KAAKod,QAAQs0D,OACpD,EAiBA2c,EAAevzF,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,GAChF,IAAI2K,EAAW,iBACXC,EAAa,WACjB,GAAKlnF,GAA4B,QAAjBA,EAAQpI,OAAoBG,KAAKmsF,UAAYv6E,EAAKs9E,IAAat9E,EAAKu9E,IAAc,CAC9F,IAAIC,EAAUx9E,EAAKs9E,GAAYt9E,EAAKs9E,GAAU7qF,MAAM,eAAiBuN,EAAKu9E,GAAY9qF,MAAM,eAC5FrE,KAAKmsF,QAAUiD,EAAQ,GACvBpvF,KAAKqsF,kBAAoB+C,EAAQ,EACrC,CACA,IAAI3H,EAAU,UACVnF,EAAMr6E,GAAWA,EAAQw/E,GACzB+E,EAAgB5zB,EAAO99D,UAAU2xF,qBAAqBzxF,KAAKgF,KAAM4R,EAAM4wE,EAAOC,EAAKx6E,EAASs8E,GAChG,GAAIiI,EACA,OAAOA,EAEX,IAAIvK,EAAQ,KACRoN,EAAY,eACZC,EAAc,SACd9M,GAASA,EAAMe,kBACX8L,KAAaz9E,EACbqwE,EAAQrwE,EAAKy9E,GAERC,KAAe19E,IACpBqwE,EAAQrwE,EAAK09E,KAGrB19E,GAAQ,QAAkBA,EAAK/V,OAAsB+V,EAAbA,EAAK/V,MAC7C,IAAI+F,EAAO,CAAC,EAIZ,OAHAA,EAAKqgF,MAAQA,EACbrgF,EAAKtG,OAASsW,EACd5R,KAAKwoF,mBAAmBlG,EAAK1wE,EAAMhQ,EAAM,KAAM4gF,GACxC,IAAS0E,OAAOjF,GAASrgF,EAAKtG,OAAS,CAAEA,OAAQsG,EAAKtG,OAAQ2mF,MAAOA,EAAOE,WAAYvgF,EAAKugF,WACxG,EACOkM,CACX,CA9PmC,CA8PjClE,GASEoF,EAA+B,SAAU32B,GAEzC,SAAS22B,IACL,OAAkB,OAAX32B,GAAmBA,EAAOlpD,MAAM1P,KAAMlB,YAAckB,IAC/D,CA4LA,OA/LAi4D,EAAUs3B,EAAe32B,GAIzB22B,EAAcz0F,UAAU05D,cAAgB,WACpC,MAAO,eACX,EASA+6B,EAAcz0F,UAAU6pF,OAAS,SAAUL,EAAI1yE,EAAMs0E,GACjD,MAAO,CACHrmF,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAWtuE,IACnBnC,KAAMlJ,KAAKC,UAAUiJ,GAE7B,EAUA29E,EAAcz0F,UAAUo9B,OAAS,SAAUosD,EAAI6B,EAAUtqF,EAAOqqF,GAC5D,MAAO,CACHrmF,KAAM,SACNkU,IAAKuwE,EAAGjC,WAAWtuE,IAAM,IAAMlY,EAC/B+V,KAAMlJ,KAAKC,UAAU9M,GAE7B,EAUA0zF,EAAcz0F,UAAU+pF,OAAS,SAAUP,EAAI6B,EAAUtqF,EAAOqqF,GAC5D,MAAO,CACHrmF,KAAM,MACNkU,IAAKuwE,EAAGjC,WAAWtuE,IACnBnC,KAAMlJ,KAAKC,UAAU9M,GAE7B,EACA0zF,EAAcz0F,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,GAC1D,IAAIuJ,EAAQvO,KACRotF,EAAcpoF,EAAEgmF,KAAO,IAASqC,QAAQrtF,KAAKod,QAAQmtE,UACrDx2E,EAAMuwE,EAAGjC,WAAWtuE,IAAI5P,QAAQ,OAAQ,IAAMnE,KAAKod,QAAQitE,OAC/DrlF,EAAE+O,IAAM/T,KAAKqsF,kBAAoBrsF,KAAKqsF,kBAAoBrnF,EAAE+O,IAmB5D,IAlBA,IAAIE,EAAM,GACNu2B,EAAU,SAAUrwC,EAAGO,GACvB6pF,EAAQG,aAAaljE,SAAQ,SAAU5e,EAAGyN,GACtC,IAAIq9E,EAAO,CACP,OAAU,QACV,IAAO,SAAU97E,EAAMzX,EAAG+D,GAAO,MAAO,EAAI,EAC5C,KAAQ,SAAU0T,EAAMzX,GAAK,OAAOuO,KAAKC,UAAUiJ,EAAKzX,IAAM,MAAQ,GAE1E8Z,EAAIzY,KAAK,KAAO4xF,GAChBn5E,EAAIzY,KAAK,kDAAmD,IAC5DyY,EAAIzY,KAAK,cAAqB8oF,EAAGjC,WAAWkH,WAAajF,EAAGjC,WAAW2G,SAAWhkF,EAAE+O,KAC9E25E,EAAK35E,IAAIwwE,EAAQG,aAAcvqF,EAAG6K,EAAE9G,KAAO,aACjD+V,EAAIzY,KAAK,iDACTyY,EAAIzY,KAAK,SAAW2D,SAASC,MAC7B6U,EAAIzY,KAAK,GAAIoH,EAAI8F,KAAKC,UAAU/F,GAAK,GACzC,GACJ,EAESzI,EAAI,EAAGO,EAAI6pF,EAAQG,aAAarqF,OAAQF,EAAIO,EAAGP,IACpDqwC,EAAQrwC,EAAGO,GAEf,IAAI80F,EAAU,SAAUr1F,EAAGO,GACvB6pF,EAAQK,eAAepjE,SAAQ,SAAU5e,EAAGyN,GACxC,IAAIq9E,EAAO,CACP,OAAUn/E,EAAM6O,QAAQwtE,WAAa,IACrC,IAAO,SAAUh5E,EAAMzX,EAAG+D,GAAO,MAAO,EAAI,EAC5C,KAAQ,SAAU0T,EAAMzX,GAAK,OAAOuO,KAAKC,UAAUiJ,EAAKzX,IAAM,MAAQ,GAE1E8Z,EAAIzY,KAAK,KAAO4xF,GAChBn5E,EAAIzY,KAAK,kDAAmD,IAC5DyY,EAAIzY,KAAK,aAAoB8oF,EAAGjC,WAAWoH,WAAanF,EAAGjC,WAAW2G,SAAWhkF,EAAE+O,KAC7E25E,EAAK35E,IAAIwwE,EAAQK,eAAgBzqF,EAAG6K,EAAE9G,KAAO,aACnD+V,EAAIzY,KAAK,iDACTyY,EAAIzY,KAAK,SAAW2D,SAASC,MAC7B6U,EAAIzY,KAAK,GAAIoH,EAAI8F,KAAKC,UAAU/F,GAAK,GACzC,GACJ,EAEA,IAASzI,EAAI,EAAGO,EAAI6pF,EAAQK,eAAevqF,OAAQF,EAAIO,EAAGP,IACtDq1F,EAAQr1F,EAAGO,GAEf,IAAI+0F,EAAU,SAAUt1F,EAAGO,GACvB6pF,EAAQE,eAAejjE,SAAQ,SAAU5e,EAAGyN,GACxC,IAAIpK,EAAQ,CACR,IAAO,UACP,IAAO,SAAU2L,EAAMzX,EAAG+D,GACtB,IAAI6V,EAAM,IAAS+gD,UAAU52D,EAAK0T,EAAKzX,IACvC,GAAmB,kBAAR4Z,GAAoB,IAAS3Q,MAAM8nF,OAAOn3E,GACjD,MAAO,IAAMA,EAEZ,GAAIA,aAAehU,KAAM,CAC1B,IAAI2vF,EAAU99E,EAAKzX,GAAG+D,GACtB,MAAO,IAAMwxF,EAAQxvF,QACzB,CAEI,MAAO,KAAO6T,EAAM,GAE5B,EACA,KAAQ,SAAUnC,EAAMzX,GAAK,MAAO,EAAI,GAE5C8Z,EAAIzY,KAAK,KAAO4xF,GAChBn5E,EAAIzY,KAAK,kDAAmD,IAC5DyY,EAAIzY,KAAK,gBAAuB8oF,EAAGjC,WAAW4G,WAAa3E,EAAGjC,WAAW2G,SAAWhkF,EAAE+O,KAChF9N,EAAM8N,IAAIwwE,EAAQE,eAAgBtqF,EAAG6K,EAAE9G,KAAO,aACpD+V,EAAIzY,KAAK,iDACTyY,EAAIzY,KAAK,SAAW2D,SAASC,MAC7B6U,EAAIzY,KAAK,GAAIoH,EAAI8F,KAAKC,UAAU/F,GAAK,GACzC,GACJ,EAEA,IAASzI,EAAI,EAAGO,EAAI6pF,EAAQE,eAAepqF,OAAQF,EAAIO,EAAGP,IACtDs1F,EAAQt1F,EAAGO,GAGf,OADAuZ,EAAIzY,KAAK,KAAO4xF,EAAc,KAAM,IAC7B,CACHvtF,KAAM,OACNkU,IAAKA,EACLq1C,YAAa,6BAA+BgkC,EAC5Cx7E,KAAMqC,EAAInW,KAAK,QAEvB,EAUAyxF,EAAcz0F,UAAUmvD,WAAa,SAAUq6B,EAAIr8E,EAAS+jF,GACxD/jF,EAAQiN,iBAAiB,SAAU,iDACvC,EAiBAq6E,EAAcz0F,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,GAC/E,IAAIkD,EAAU,UACVnF,EAAMr6E,GAAWA,EAAQw/E,GACzBxF,EAAQ,KACRrgF,EAAO,CAAC,EACZ,GAAIqG,GAA0C,SAA/BA,EAAQpI,KAAKw/B,cAA0B,CAClD,IAAIqtD,EAAejK,GAAOx6E,EAAQuiD,kBAAkB,sBAChDj6C,EAAWm8E,GAAgB5wF,SAAS4wF,EAAc,KAAQ,EAC1DlK,GAASA,EAAMe,kBACV,IAAS2D,OAAOt1E,EAAK+9E,SACtB1N,EAAQrwE,EAAK+9E,QAGjBp/E,EAAU,GAAKqB,EAAKg+E,QACpBh+E,EAAOA,EAAKg+E,OAEhBhuF,EAAKqgF,MAAQA,EACbrgF,EAAKtG,OAASsW,EACd5R,KAAKwoF,mBAAmBlG,EAAK1wE,EAAMhQ,EAAM,KAAM4gF,EACnD,CAEA,OADA5gF,EAAKtG,OAASsG,EAAKtG,QAAUsW,EACtB,IAASs1E,OAAOjF,GAASrgF,EAAKtG,OAAS,CAAEA,OAAQsG,EAAKtG,OAAQ2mF,MAAOrgF,EAAKqgF,MAAOE,WAAYvgF,EAAKugF,WAC7G,EACOoN,CACX,CAjMkC,CAiMhCpF,GAOE0F,EAAkC,SAAUj3B,GAE5C,SAASi3B,IACL,OAAkB,OAAXj3B,GAAmBA,EAAOlpD,MAAM1P,KAAMlB,YAAckB,IAC/D,CAmCA,OAtCAi4D,EAAU43B,EAAkBj3B,GAc5Bi3B,EAAiB/0F,UAAU6nF,aAAe,SAAU2B,EAAI9B,EAAO6D,GAC3D,IAAIzrF,GAAM,IAAIwrF,GAAazD,aAAa2B,EAAI9B,EAAO6D,GAC/CyJ,EAAU,OACVl+E,EAAO,IAASxO,MAAM+kF,UAAUvtF,EAAIk1F,IACpCx0F,EAAS,CAAC,EACVO,EAAQ,QACZ,GAAI+V,EAAKg2E,MACL,IAAK,IAAIztF,EAAI,EAAGA,EAAIyX,EAAKg2E,MAAMvtF,OAAQF,IAAK,CACxC,IAAIytF,EAAQh2E,EAAKg2E,MAAMztF,GACnB+D,EAAMrD,OAAOomB,KAAK2mE,GAAO,GAC7BtsF,EAAO4C,GAAO0pF,EAAM1pF,EACxB,CAEJ5C,EAAOO,GAAS+V,EAChB,IAAI61E,EAAU,UACV1zE,EAAM,MACV,MAAO,CACHnC,KAAMlJ,KAAKC,UAAUrN,GACrByY,IAAKnZ,EAAImZ,GACT0zE,QAAS7sF,EAAI6sF,GACb5nF,KAAM,OACNupD,YAAa,kCAErB,EACOymC,CACX,CAxCqC,CAwCnCzJ,GAQE2J,EAAmC,SAAUn3B,GAK7C,SAASm3B,IACL,IAAIxhF,EAAQqqD,EAAO59D,KAAKgF,OAASA,KAEjC,OADA,QAAS,aAAcomF,EAAWtrF,UAAUmvD,WAAY17C,GACjDA,CACX,CAoGA,OA5GA0pD,EAAU83B,EAAmBn3B,GAS7Bm3B,EAAkBj1F,UAAU6pF,OAAS,SAAUL,EAAI1yE,EAAMs0E,EAAW1D,EAAO3jD,GAGvE,OAFA7+B,KAAKsiF,IAAIzjD,SAAWA,EACpB7+B,KAAK4qF,WAAa,MACX,CACH72E,IAAKuwE,EAAGjC,WAAWkH,WAAajF,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACvEnC,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5B9M,MAAO+V,EACPy3E,MAAOnD,EACPtvB,OAAQ,UACT,IAAS0yB,aAAatpF,KAAMskF,EAAI9B,KAE3C,EACAuN,EAAkBj1F,UAAUo9B,OAAS,SAAUosD,EAAI6B,EAAUjsF,EAAKgsF,EAAW1D,GAEzE,OADA5pB,EAAO99D,UAAUo9B,OAAOl9B,KAAKgF,KAAMskF,EAAI6B,EAAUjsF,GAC1C,CACH2F,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAW4G,WAAa3E,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACvEnC,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5BzK,IAAKhE,EACLsvF,UAAWrD,EACXkD,MAAOnD,EACPtvB,OAAQ,UACT,IAAS0yB,aAAatpF,KAAMskF,EAAI9B,KAE3C,EACAuN,EAAkBj1F,UAAU+pF,OAAS,SAAUP,EAAI6B,EAAUjsF,EAAKgsF,EAAW1D,GAGzE,OAFAxiF,KAAK4qF,WAAa,SAClB5qF,KAAKgwF,UAAY7J,EACV,CACHtmF,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAWoH,WAAanF,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACvEnC,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5B9M,MAAO3B,EACP08D,OAAQ,SACR4yB,UAAWrD,EACXjoF,IAAKhE,EAAIisF,GACTkD,MAAOnD,GACR,IAASoD,aAAatpF,KAAMskF,EAAI9B,KAE3C,EACAuN,EAAkBj1F,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,EAASv/E,GAC5F,IAAI7K,EACA81F,EAAUhoF,EAAUS,KAAKtF,MAAM6E,EAAQ2J,MAAQA,EASnD,GARAA,EAA0B,UAAnBq+E,EAAQr5B,OAAqB,IAASxzD,MAAM+kF,UAAUv2E,GAAQA,EAC7C,QAApB5R,KAAK4qF,YACLhyB,EAAO99D,UAAU6pF,OAAO3pF,KAAKgF,KAAM0hF,EAAI9vE,EAAM,KAAM,KAAM5R,KAAKsiF,IAAIzjD,UAE9C,WAApB7+B,KAAK4qF,YACLhyB,EAAO99D,UAAU+pF,OAAO7pF,KAAKgF,KAAM0hF,EAAI1hF,KAAKgwF,UAAWp+E,GAE3D5R,KAAK4qF,gBAAajuF,EACdiV,EAAKu3E,MACL,IAAKhvF,EAAI,EAAGA,EAAIyX,EAAKu3E,MAAM9uF,OAAQF,IAC/By+D,EAAO99D,UAAU6pF,OAAO3pF,KAAKgF,KAAM0hF,EAAI9vE,EAAKu3E,MAAMhvF,IAG1D,GAAIyX,EAAKs3E,QACL,IAAK/uF,EAAI,EAAGA,EAAIyX,EAAKs3E,QAAQ7uF,OAAQF,IACjCy+D,EAAO99D,UAAU+pF,OAAO7pF,KAAKgF,KAAM0hF,EAAI18E,EAAE9G,IAAK0T,EAAKs3E,QAAQ/uF,IAGnE,GAAIyX,EAAKw3E,QACL,IAAKjvF,EAAI,EAAGA,EAAIyX,EAAKw3E,QAAQ/uF,OAAQF,IACjCy+D,EAAO99D,UAAUo9B,OAAOl9B,KAAKgF,KAAM0hF,EAAI18E,EAAE9G,IAAK0T,EAAKw3E,QAAQjvF,IAGnE,OAAOyX,CACX,EAYAm+E,EAAkBj1F,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,EAAGw9E,EAAO9rE,GACxE,MAAO,CACH7W,KAAM,OACNkU,IAAKuwE,EAAGjC,WAAW0G,UAAYzE,EAAGjC,WAAW2G,SAAW1E,EAAGjC,WAAWtuE,IACtEq1C,YAAa,kCACbkB,SAAU,OACV14C,KAAMlJ,KAAKC,WAAU,QAAO,CAAC,EAAG,CAC5BugF,QAAS3E,EAAQK,eACjBuE,MAAO5E,EAAQG,aACf0E,QAAS7E,EAAQE,eACjB7tB,OAAQ,QACRyyB,MAAOrkF,EAAE+O,IACT7V,IAAK8G,EAAE9G,KACR,IAASorF,aAAatpF,KAAMskF,EAAI9B,KAE3C,EACAuN,EAAkBj1F,UAAUovF,UAAY,SAAU9sE,GAC9C,IAAI8yE,EAAY,IAAI9J,EACpB8J,EAAUhG,UAAU9sE,EACxB,EACO2yE,CACX,CA9GsC,CA8GpCrN,GAOEyN,EAAmC,SAAUv3B,GAE7C,SAASu3B,EAAkBzuF,GACvB,IAAI6M,EAAQqqD,EAAO59D,KAAKgF,OAASA,KAUjC,OARAuO,EAAM6O,SAAU,QAAO,CAAC,EAAG7O,EAAM6O,QAAS,CACtC0yE,QAAS,WAAc,EACvBM,UAAW,WAAc,EACzBC,aAAc,WAAc,EAC5BC,aAAc,WAAc,EAC5BC,YAAa,WAAc,KAE/B,QAAOhiF,EAAM6O,QAAS1b,GAAS,CAAC,GACzB6M,CACX,CAIA,OAjBA0pD,EAAUk4B,EAAmBv3B,GAc7Bu3B,EAAkBr1F,UAAU05D,cAAgB,WACxC,MAAO,mBACX,EACO27B,CACX,CAnBsC,CAmBpC/J,GAmJEoK,GA3IgC,SAAU53B,GAE1C,SAAS63B,EAAerzE,GACpB,IAAI7O,EAAQqqD,EAAO59D,KAAKgF,OAASA,KASjC,OARAuO,EAAMkvC,IAAMrgC,EACZ7O,EAAMlS,OAASkS,EAAMkvC,IAAIjhC,SACzBjO,EAAMi0E,MAAQj0E,EAAMkvC,IAAI+kC,MAGxBj0E,EAAMmiF,aAAeniF,EAAMkvC,IAAIizC,aAAeniF,EAAMkvC,IAAIizC,aAAe,WAAc,EAErFniF,EAAMoiF,SAAW,WAAc,OAAOpiF,EAAMi0E,KAAO,EAC5Cj0E,CACX,CAZA0pD,EAAUw4B,EAAgB73B,GAa1B63B,EAAe31F,UAAU05D,cAAgB,WACrC,MAAO,gBACX,EASAi8B,EAAe31F,UAAU6nF,aAAe,SAAUiO,EAAapO,GAC3D,IAAIqO,EAAWj4B,EAAO99D,UAAU6nF,aAAajzE,MAAM1P,KAAMlB,WACrDwlF,EAAK57E,KAAKtF,MAAMytF,EAASj/E,MAEzBqP,EAAO,CAAC,OAAQ,OAAQ,SAAU,QAAS,SAAU,QACrD,SAAU,iBAAkB,aAAc,UAC1C24B,EAAO,CAAC,EACR34C,EAAM,oBACVggB,EAAK3c,QAAO,SAAUU,GAClB40C,EAAK50C,GAAK/D,EAAI8C,QAAQiB,IAAM,EAAI0D,KAAKC,UAAU27E,EAAGt/E,IAAMs/E,EAAGt/E,EAC/D,IACA,IAAI8rF,EAAO9wF,KAAK0wF,gBAAkB,CAAC,EAEnCI,EAAK,eAAiBl3C,EACtB,IAAIhoC,EAAOlJ,KAAKC,UAAU,CACtB65E,MAAOxiF,KAAK2wF,WACZI,UAAWD,IAGf,OADAD,EAASj/E,KAAOA,EACTi/E,CACX,EAiBAJ,EAAe31F,UAAUynF,gBAAkB,SAAUyO,EAAStP,EAAIc,EAAOC,EAAKx6E,GAC1E,IACIg6E,EACAE,EAFAx0C,EAAMqjD,EAGN11F,GAAS,QAAS0E,KAAK3D,OAAOf,OAAQqyC,EAAI/7B,MAC1C5R,KAAK3D,OAAO4lF,QACZA,GAAQ,QAASjiF,KAAK3D,OAAO4lF,MAAOt0C,EAAI/7B,OAExC5R,KAAK3D,OAAO8lF,aACZA,GAAa,QAASniF,KAAK3D,OAAO8lF,WAAYx0C,EAAI/7B,MAClDuwE,GAAc,QAAkBA,GAAqDA,EAAvC,IAAS/+E,MAAM+kF,UAAUhG,IAE3E,IAAIG,EAAMr6E,EAAQw/E,SAAW,CAAC,EAC1B7lF,EAAO,CAAEtG,OAAQA,EAAQ6mF,WAAYA,GACrCvwE,EAAOhQ,EAIX,OAHI0gF,GAAOA,EAAIoE,QAAUpE,EAAIoE,OAAOrsF,QAChC2F,KAAKwoF,mBAAmBlG,EAAK1wE,EAAMhQ,EAAM,KAAM4gF,IAE3C,QAAkBP,GAAyErgF,EAAKtG,OAArE,CAAEA,OAAQsG,EAAKtG,OAAQ2mF,MAAOA,EAAOE,WAAYA,EACxF,EAIAsO,EAAe31F,UAAU6pF,OAAS,WAC9B,IAAIsM,EAAWr4B,EAAO99D,UAAU6pF,OAAOj1E,MAAM1P,KAAMlB,WACnD,OAAOkB,KAAKkxF,iBAAiBD,EAAU,SAC3C,EAIAR,EAAe31F,UAAU+pF,OAAS,WAC9B,IAAIoM,EAAWr4B,EAAO99D,UAAU+pF,OAAOn1E,MAAM1P,KAAMlB,WACnD,OAAOkB,KAAKkxF,iBAAiBD,EAAU,SAC3C,EAIAR,EAAe31F,UAAUo9B,OAAS,WAC9B,IAAI+4D,EAAWr4B,EAAO99D,UAAUo9B,OAAOxoB,MAAM1P,KAAMlB,WACnD,OAAOkB,KAAKkxF,iBAAiBD,EAAU,SAC3C,EAYAR,EAAe31F,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,EAAGw9E,EAAO9rE,GACrE,IAAI2zE,EAAQzxB,EAAO99D,UAAUupF,aAAa30E,MAAM1P,KAAMlB,WAElDqyF,EAAQzoF,KAAKtF,MAAMinF,EAAMz4E,MAG7B,OAFAu/E,EAAMjzF,IAAM8G,EAAE9G,IACdmsF,EAAMz4E,KAAOlJ,KAAKC,UAAUwoF,GACrBnxF,KAAKkxF,iBAAiB7G,EAAO,QACxC,EACAoG,EAAe31F,UAAUo2F,iBAAmB,SAAUE,EAAUx6B,GAC5D,IAAIy6B,EAAS3oF,KAAKtF,MAAMguF,EAASx/E,MAKjC,OAJAw/E,EAASx/E,KAAOlJ,KAAKC,UAAU,CAC3B65E,MAAOxiF,KAAKy9C,IAAI6zC,YAAY16B,GAC5Bm6B,UAAWM,IAERD,CACX,CAEJ,CAnImC,CAmIjChL,GAQgC,SAAUxtB,GAaxC,SAAS43B,EAAae,EAASp3B,EAAWwrB,GACtC,IAAIp3E,EAAQqqD,EAAO59D,KAAKgF,OAASA,KACjCuO,EAAMijF,cAAe,EACrBjjF,EAAMkjF,gBAAiB,GAClB,QAAkBF,KACnBhjF,EAAMmjF,aAAeH,GAEzBhjF,EAAMo3E,SAAWA,EACjBp3E,EAAMojF,OAAS,IAAStE,QAAQ,gBAChC,IAAIzyF,EAAM,CAAEqmB,KAAM,GAAIsrE,QAAS,IAC/BrtF,OAAO+kE,aAAae,QAAQz2D,EAAMojF,OAAQjpF,KAAKC,UAAU/N,IACzD,IAAIowF,EAAOz8E,EAAMojF,OAqBjB,OApBK,QAAkBx3B,IACnB5tB,aAAY,WAGR,IAFA,IAAI36B,EAAO,IAASxO,MAAM+kF,UAAUjpF,OAAO+kE,aAAaC,QAAQ8mB,IAC5D4G,EAAS,GACJz3F,EAAI,EAAGA,EAAIyX,EAAK26E,QAAQlyF,OAAQF,IAAK,CAC1C,IAAI03F,GAAe,IAAI9xF,KACnB+xF,GAAe,IAAI/xF,KAAK6R,EAAK26E,QAAQpyF,GAAGggE,WAC5CvoD,EAAK26E,QAAQpyF,GAAGggE,UAAY03B,EAAcC,EACtCD,EAAcC,EAAc33B,GAC5By3B,EAAOp2F,KAAKrB,EAEpB,CACA,IAASA,EAAI,EAAGA,EAAIy3F,EAAOv3F,OAAQF,IAC/ByX,EAAK26E,QAAQ/jE,OAAOopE,EAAOz3F,GAAI,GAC/ByX,EAAKqP,KAAKuH,OAAOopE,EAAOz3F,GAAI,GAEhC+E,OAAO+kE,aAAa8tB,WAAW/G,GAC/B9rF,OAAO+kE,aAAae,QAAQgmB,EAAMtiF,KAAKC,UAAUiJ,GACrD,GAAGuoD,GAEA5rD,CACX,CA0KA,OAvNA0pD,EAAUu4B,EAAc53B,GAsDxB43B,EAAa11F,UAAUk3F,YAAc,SAAUj+E,EAAKyuE,GAChD,IAAIW,EAAUnjF,KAAKsmF,gBAAgB9D,GAC/B+D,EAAU,IAAMC,iBAAiBhE,EAAMW,QAAS,CAAC,WAAY,SAAU,SAAU,SAAU,YAC3FjlF,EAAM6V,EACN8uE,EAAO,SACPA,KAAQ0D,IACRroF,GAAOqoF,EAAQ1D,GAAM+C,WAEzBzC,EAAQsD,MAAMjlE,SAAQ,SAAU5mB,GAC5BsD,GAAOtD,EAAIoK,EAAE8hF,UAAYlsF,EAAIoK,EAAE0+E,SACnC,IACAP,EAAQuD,OAAOllE,SAAQ,SAAU5mB,GAC7BsD,GAAOtD,EAAIoK,EAAE0+E,SACjB,IACAP,EAAQyD,SAASplE,SAAQ,SAAU5mB,GAC/BsD,GAAOtD,EAAIoK,EAAEkgF,SACjB,IACA,IAAK,IAAI5gF,EAAS,EAAGA,EAAS6+E,EAAQwD,QAAQtsF,OAAQiK,IAAU,CAC5D,IAAI2tF,EAAgB9O,EAAQwD,QAAQriF,GACpC,GAAI2tF,EAAcjtF,EAAE4mF,UAAW,CAC3B,IAAIsG,EAAW1P,EAAM73C,QACrBunD,EAAS/O,QAAU,GACnB,IAAK,IAAIhpF,EAAI,EAAGA,EAAI83F,EAAcjtF,EAAEymF,WAAWpxF,OAAQF,IACnD+3F,EAAS/O,QAAQ3nF,KAAK,CAAExB,GAAI,UAAWgL,EAAGitF,EAAcjtF,EAAEymF,WAAWtxF,GAAImK,OAAQk+E,EAAMW,QAAQ7+E,SAEnGpG,GAAO+zF,EAAcjtF,EAAE2mF,UAAY3rF,KAAKgyF,YAAYj+E,EAAKm+E,EAC7D,MAEIh0F,GAAO+zF,EAAcjtF,EAAEo+E,MAAQ6O,EAAcjtF,EAAEoiF,SAAW6K,EAAcjtF,EAAEnJ,KAElF,CACA,OAAOqC,CACX,EAWAsyF,EAAa11F,UAAU6nF,aAAe,SAAU2B,EAAI9B,EAAO6D,GACvD,IAAInoF,EAAM8B,KAAKgyF,YAAY1N,EAAGjC,WAAWtuE,IAAKyuE,GAC1C2P,EAAc,IAAS/uF,MAAM+kF,UAAUjpF,OAAO+kE,aAAaC,QAAQlkE,KAAK2xF,SACxE//E,EAAOugF,EAAcA,EAAY5F,QAAQ4F,EAAYlxE,KAAKld,QAAQ7F,IAAQ,KAC9E,OAAY,MAAR0T,GAAiB5R,KAAKwxF,cAAiBxxF,KAAKyxF,gBAGhDzxF,KAAKwxF,aAAe,KACpBxxF,KAAKyxF,eAAiB,KAEfzxF,KAAK0xF,aAAa/O,aAAajzE,MAAM1P,KAAK0xF,aAAc,GAAG/sF,MAAM3J,KAAK8D,UAAW,KAL7E8S,CAOf,EAiBA4+E,EAAa11F,UAAUynF,gBAAkB,SAAU3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,GAC9E,GAAIvkF,KAAKyxF,gBAAmBxpF,GAAWjI,KAAK0xF,aAAat0E,QAAQitE,OAC7D,IAAS7E,SAASv9E,EAAQ8L,IAAK/T,KAAK0xF,aAAat0E,QAAQitE,QAAyC,SAA/BpiF,EAAQpI,KAAKw/B,cAChF,OAAOr/B,KAAK0xF,aAAanP,gBAAgB3wE,EAAM8vE,EAAIc,EAAOC,EAAKx6E,EAASs8E,GAG5E3yE,EAAO5R,KAAK0xF,aAAanP,gBAAgB7yE,MAAM1P,KAAK0xF,aAAc,GAAG/sF,MAAM3J,KAAK8D,UAAW,IAE3F,IAAIZ,EAAMskF,EAAQxiF,KAAKgyF,YAAYtQ,EAAGW,WAAWtuE,IAAKyuE,GAASd,EAAGW,WAAWtuE,IACzEnZ,EAAM,CAAC,EACXA,EAAM,IAASwI,MAAM+kF,UAAUjpF,OAAO+kE,aAAaC,QAAQlkE,KAAK2xF,SAChE,IAAI5mF,EAAQnQ,EAAIqmB,KAAKld,QAAQ7F,IACd,IAAX6M,IACAnQ,EAAI2xF,QAAQ/jE,OAAOzd,EAAO,GAC1BnQ,EAAIqmB,KAAKuH,OAAOzd,EAAO,IAE3BnQ,EAAI2xF,QAAQ3xF,EAAIqmB,KAAKzlB,KAAK0C,GAAO,GAAK,CAAE+iB,KAAM/iB,EAAK5C,OAAQsW,EAAKtW,OAAQ6+D,UAAW,IAAIp6D,KAAQkiF,MAAOrwE,EAAKqwE,OAC3G,MAAOrnF,EAAI2xF,QAAQlyF,OAAS2F,KAAK2lF,SAC7B/qF,EAAI2xF,QAAQ/jE,OAAO,EAAG,GACtB5tB,EAAIqmB,KAAKuH,OAAO,EAAG,GAGvB,OADAtpB,OAAO+kE,aAAae,QAAQhlE,KAAK2xF,OAAQjpF,KAAKC,UAAU/N,IACjDgX,CACX,EASA4+E,EAAa11F,UAAUmvD,WAAa,SAAUq6B,EAAIr8E,EAAS+jF,KAClD,QAAkBhsF,KAAK0xF,aAAat0E,QAAQitE,QAAU,IAAS7E,SAASwG,EAASj4E,IAAK/T,KAAK0xF,aAAat0E,QAAQitE,QAC9E,SAAhC2B,EAASnsF,KAAKw/B,eACjBp3B,EAAQiN,iBAAiB,SAAUlV,KAAK0xF,aAAat0E,QAAQgtE,iBAE5D9F,EAAGjC,WAAW+P,aACfnqF,EAAQiN,iBAAiB,SAAUlV,KAAK0xF,aAAat0E,QAAQs0D,OAErE,EASA8e,EAAa11F,UAAU+pF,OAAS,SAAUP,EAAI6B,EAAUtqF,EAAOqqF,GAE3D,OADAlmF,KAAKwxF,cAAe,EACbxxF,KAAK0xF,aAAa7M,OAAOP,EAAI6B,EAAUtqF,EAAOqqF,EACzD,EASAsK,EAAa11F,UAAU6pF,OAAS,SAAUL,EAAI1yE,EAAMs0E,GAEhD,OADAlmF,KAAKyxF,gBAAiB,EACfzxF,KAAK0xF,aAAa/M,OAAOL,EAAI1yE,EAAMs0E,EAC9C,EAUAsK,EAAa11F,UAAUo9B,OAAS,SAAUosD,EAAI6B,EAAUtqF,EAAOqqF,GAE3D,OADAlmF,KAAKwxF,cAAe,EACbxxF,KAAK0xF,aAAax5D,OAAOosD,EAAI6B,EAAUtqF,EAAOqqF,EACzD,EASAsK,EAAa11F,UAAUupF,aAAe,SAAUC,EAAIC,EAASv/E,GACzD,OAAOhF,KAAK0xF,aAAarN,aAAaC,EAAIC,EAASv/E,EACvD,EACOwrF,CACX,CAzNiC,CAyN/BpK,G,2IC9rFEiM,EAA6B,WAY7B,SAASA,EAAYhQ,EAAYG,EAAO+O,GACpC,IAgBI3/E,EAhBArD,EAAQvO,KAoGZ,OAlGAA,KAAKgtF,WAAY,EAEjBhtF,KAAKkoF,kBAAmB,EACxBloF,KAAKsyF,aAAe,CAAC,EACrBtyF,KAAKuyF,eAAgB,EACrBvyF,KAAKooF,SAAW,GAChBpoF,KAAKuyF,eAAgB,EAChBlQ,GAAeriF,KAAKqiF,aACrBA,EAAa,IAEjBkP,EAAUA,GAAWlP,EAAWkP,QAC5BlP,IAA8C,IAAhCA,EAAW6F,mBACzBloF,KAAKkoF,iBAAmB7F,EAAW6F,kBAGnC7F,aAAsBp7E,MACtB2K,EAAO,CACHkxE,KAAMT,EACNmQ,SAAS,GAGc,kBAAfnQ,GACPA,EAAWS,OACZT,EAAWS,KAAO,IAEjBT,EAAW/e,oBACZ+e,EAAW/e,mBAAoB,GAE9B+e,EAAWp5E,KACZo5E,EAAWp5E,GAAK,IAEfo5E,EAAW1c,kBACZ0c,EAAW1c,gBAAkB,IAEjC/zD,EAAO,CACHmC,IAAKsuE,EAAWtuE,IAChBw1E,UAAWlH,EAAWkH,UACtBN,UAAW5G,EAAW4G,UACtBQ,UAAWpH,EAAWoH,UACtBT,QAAS3G,EAAW2G,QACpBD,SAAU1G,EAAW0G,SACrBjG,KAAMT,EAAWS,KACjBn4B,QAAS03B,EAAW13B,QACpB+mB,OAAQ2Q,EAAW3Q,OACnB9/D,KAAMywE,EAAWzwE,KACjB6gF,mBAAoBpQ,EAAWoQ,mBAC/BC,gBAAiBrQ,EAAWqQ,gBAC5BC,cAAetQ,EAAWsQ,cAC1BhR,YAAaU,EAAWV,YACxBzjF,IAAKmkF,EAAWnkF,IAChBk0F,YAAa/P,EAAW+P,YACxBQ,MAAOvQ,EAAWuQ,MAClBtoC,SAAU+3B,EAAW/3B,SACrBkoC,aAAgC71F,IAAvB0lF,EAAWmQ,QAAwBnQ,EAAWmQ,UACjDnQ,EAAWkP,mBAAmB,MAAqBlP,EAAWkP,mBAAmB,QACvElP,EAAWtuE,IAC3B64E,eAAgBvK,EAAWuK,eAC3BtpB,kBAAmB+e,EAAW/e,kBAC9Br6D,GAAIo5E,EAAWp5E,GACf08D,gBAAiB0c,EAAW1c,kBAIhC,IAAS/5B,WAAW,uCAEIjvC,IAAxBiV,EAAKg7E,gBAAiC,IAASiG,WAC/CjhF,EAAKg7E,kBAAiB,QAAkBh7E,EAAKwgF,cAAsBxgF,EAAKwgF,kBAEtDz1F,IAAlBiV,EAAK04C,WACL14C,EAAK04C,SAAW,QAEpBtqD,KAAKqiF,WAAazwE,EAClB5R,KAAK8yF,aAAetQ,EAChBxiF,KAAKqiF,WAAW/e,mBAAqBtjE,KAAKqiF,WAAWp5E,IACrD/J,OAAOsa,iBAAiB,SAAUxZ,KAAKujE,eAAe5jE,KAAKK,OAE3D4R,EAAKmC,KAAOnC,EAAK4gF,UAAY5gF,EAAKkxE,KAAKzoF,QACvC2F,KAAK+yF,iBAAkB,EACvB/yF,KAAKuxF,QAAUA,GAAW,IAAI,KAC9BvxF,KAAKqiF,WAAWmQ,SAAU,EAC1BxyF,KAAKwsC,MAAQxsC,KAAKgzF,aAAaxQ,GAAS,IAAI,KAC5CxiF,KAAKwsC,MAAMlhC,MAAK,SAAUtG,GACtBuJ,EAAM8zE,WAAWmQ,SAAU,EAC3BjkF,EAAMwkF,iBAAkB,EACxBnhF,EAAKkxE,KAAO99E,EAAE1J,OACdiT,EAAMgjF,QAAU,IAAI,IACxB,KAGAvxF,KAAKuxF,QAAU3/E,EAAK4gF,QAAU,IAAI,KAAgB,IAAI,MAErD5gF,EAAKghF,OAAS5yF,KAAKuxF,mBAAmB,OACvC3/E,EAAKghF,MAAQ,YAEjB5yF,KAAKuxF,QAAUA,GAAWvxF,KAAKuxF,QAC3B3/E,EAAK+gF,gBACL3yF,KAAKuxF,QAAU,IAAI,KAAavxF,KAAKuxF,QAAS3/E,EAAK6gF,mBAAoB7gF,EAAK8gF,kBAEzE1yF,IACX,CA+gBA,OAzgBAqyF,EAAYv3F,UAAUm4F,iBAAmB,SAAUhqF,GAC/C,IAAIiqF,EAAgBjvB,aAAaC,QAAQj7D,GAAMjJ,KAAKqiF,WAAWp5E,IAC/D,OAAOP,KAAKtF,MAAM8vF,EACtB,EAQAb,EAAYv3F,UAAUyoE,eAAiB,SAAUv+D,EAAGiE,EAAIkqF,GACpDlvB,aAAae,QAAQ/7D,GAAMjJ,KAAKqiF,WAAWp5E,GAAIP,KAAKC,UAAUwqF,GAAenzF,KAAKsyF,cACtF,EACAD,EAAYv3F,UAAUs4F,gBAAkB,SAAU5Q,GAC9C,IAAIj0E,EAAQvO,KACRqzF,EAAiBrzF,KAAKizF,mBAC1B,GAAIjzF,KAAKuyF,eAAiBc,GAAkBx4F,OAAOomB,KAAKoyE,GAAgBh5F,OAAQ,CAC5E2F,KAAKsyF,aAAee,EACpBrzF,KAAKsyF,aAAanP,QAAUnjF,KAAKsyF,aAAanP,QAAQ7+E,QAAO,SAAUk+E,GACnE,GAAIj0E,EAAM8zE,WAAW1c,iBAAmBp3D,EAAM8zE,WAAW1c,gBAAgBtrE,QACjEmoF,EAAMxoF,IAAMuU,EAAM8zE,WAAW1c,gBAAgB1W,MAAK,SAAUqkC,GAAW,OAAO9Q,EAAMxoF,KAAOs5F,CAAS,IACpG,OAAO,EAGf,GAAiB,YAAb9Q,EAAMxoF,GAAkB,CACxB,IAAIgL,EAAIw9E,EAAMx9E,EACd,GAAIA,GAAKA,EAAE4mF,WAAa5mF,EAAEymF,sBAAsBxkF,MAAO,CACnD,IAAIssF,EAAgBvuF,EAAEymF,WAAWjnF,KAAI,SAAUgvF,GAC3C,GAAIA,EAAa/H,YAAc+H,EAAa/H,sBAAsBxkF,MAAO,CAErE,IAAIwsF,EAAmBD,EAAa/H,WAAWjnF,KAAI,SAAUkvF,GACzD,IAAItQ,EAAQsQ,EAAgBtQ,MAAOgE,EAAWsM,EAAgBtM,SAAUvrF,EAAQ63F,EAAgB73F,MAAOspF,EAAauO,EAAgBvO,WAAYC,EAAesO,EAAgBtO,aAAcuO,EAAYD,EAAgBC,UACzN,OAAO,IAAI,IAAUvQ,EAAOgE,EAAUvrF,EAAOspF,EAAYC,EAAcuO,EAC3E,IACA,MAAkC,QAA3BH,EAAa7H,UAAsB,IAAUiI,IAAIH,GAAoB,IAAU5J,GAAG4J,EAC7F,CAGI,IAAIrQ,EAAQoQ,EAAapQ,MAAOgE,EAAWoM,EAAapM,SAAUvrF,EAAQ23F,EAAa33F,MAAOspF,EAAaqO,EAAarO,WAAYC,EAAeoO,EAAapO,aAAcuO,EAAYH,EAAaG,UACvM,OAAO,IAAI,IAAUvQ,EAAOgE,EAAUvrF,EAAOspF,EAAYC,EAAcuO,EAE/E,IACAnR,EAAMx9E,EAAI,IAAI,IAAUuuF,EAAc,GAAIvuF,EAAE2mF,UAAW4H,EAAc5uF,MAAM,GAC/E,CACJ,CACA,OAAO,CACX,IACA,IAAIutF,GAAW,QAAO,IAAI,IAASlyF,KAAKsyF,cAExC,OADAtyF,KAAKuyF,eAAgB,EACd,CACX,CAII,OAFAvyF,KAAKsyF,aAAe9P,EACpBxiF,KAAKuyF,eAAgB,EACd/P,CAEf,EAMA6P,EAAYv3F,UAAU+4F,gBAAkB,SAAUrR,GAE9C,OADAxiF,KAAK8yF,aAAetQ,EACbxiF,IACX,EAMAqyF,EAAYv3F,UAAUg5F,aAAe,SAAUtR,GACtCxiF,KAAK8yF,cAAkBtQ,aAAiB,KACzC,IAAS52C,WAAW,iEAEnB5rC,KAAKqiF,WAAWS,MACjB,IAASl3C,WAAW,mEAEpB5rC,KAAKqiF,WAAW/e,mBAAqBtjE,KAAKqiF,WAAWp5E,KACrDu5E,EAAQxiF,KAAKozF,gBAAgB5Q,IAEjCA,EAAQA,GAASxiF,KAAK8yF,aACtB,IAAIx3F,EAAS0E,KAAKuxF,QAAQ5O,aAAa3iF,KAAMwiF,GAC7C,GAAIA,EAAMuR,SAAU,CAChB,IAAIp5E,EAAO6nE,EAAMuR,SAASlM,UACtB73D,EAASwyD,EAAMuR,SAASC,QACxBrmD,EAAM60C,EAAMe,gBAAkBjoF,EAAOA,OACrCA,EACA00B,GAAUA,aAAkB/oB,OAC5B,IAASgtF,eAAezR,EAAMuR,SAASrK,KAAM/uE,EAAMgzB,EAAK3d,EAAQwyD,EAAMuR,SAAS71F,KAEnF,IAAK,IAAI0E,EAAI,EAAGA,EAAI+qC,EAAItzC,OAAQuI,IACxB+qC,EAAI/qC,GAAG+X,aAAiB1T,QACxB0mC,EAAI/qC,IAAK,QAAO,CAAC,EAAG,CAAC,EAAG+qC,EAAI/qC,IAC5B+qC,EAAI/qC,GAAG+X,GAAQ3a,KAAKuxF,QAAQhP,gBAAgBC,EAAMuR,SAASG,MAAM,IAAI7B,EAAY1kD,EAAI/qC,GAAG+X,GAAMhW,MAAM,KAAKmvF,eAAgB9zF,KAAMwiF,GAG3I,CACA,OAAOxiF,KAAKuxF,QAAQhP,gBAAgBjnF,EAAQ0E,KAAMwiF,EACtD,EAUA6P,EAAYv3F,UAAUk4F,aAAe,SAAUxQ,EAAO5+D,EAAMg3C,EAAMu5B,GAC9D,IAAI5lF,EAAQvO,KACRo0F,EAAc,cACdp0F,KAAKqiF,WAAW/e,mBAAqBtjE,KAAKqiF,WAAWp5E,KACrDu5E,EAAQxiF,KAAKozF,gBAAgB5Q,IAEZ,oBAAVA,IACP2R,EAASv5B,EACTA,EAAOh3C,EACPA,EAAO4+D,EACPA,EAAQ,MAEPA,IACDA,EAAQxiF,KAAK8yF,cAEXtQ,aAAiB,KACnB,IAAS52C,WAAW,iEAExB,IAAIyoD,EAAW,IAAIC,EACf1yF,EAAO,CAAE4gF,MAAOA,GACpB,IAAKxiF,KAAKqiF,WAAWmQ,cAAoC71F,IAAxBqD,KAAKqiF,WAAWtuE,KAA6C,KAAxB/T,KAAKqiF,WAAWtuE,OAC7E,QAAkB/T,KAAKuxF,QAAQ6C,KAAkBp0F,KAAKu0F,oBAAoBv0F,KAAKuxF,SAAU,CAC9F,IAAIj2F,EAAS0E,KAAKuxF,QAAQ5O,aAAa3iF,KAAMwiF,IACxC,QAAkBxiF,KAAKuxF,QAAQ6C,MAG1B,QAAkB94F,EAAOyY,MAAQ/T,KAAKu0F,oBAAoBv0F,KAAKuxF,UACrEvxF,KAAKooF,SAAW,GAChBpoF,KAAKo0F,YAAY94F,EAAQ+4F,EAAUzyF,EAAM4gF,KAGzC5gF,EAAOywF,EAAYmC,eAAehS,EAAOlnF,EAAQsG,GACjDyyF,EAAS/2E,QAAQ1b,IARjB5B,KAAKuxF,QAAQ6C,GAAa94F,EAAQ+4F,EAAUzyF,EAAM4gF,EAU1D,MAEI6P,EAAYoC,UAAS,WACjB,IAAI9mD,EAAMp/B,EAAMulF,aAAatR,GAC7B5gF,EAAOywF,EAAYmC,eAAehS,EAAO70C,EAAK/rC,GAC9CyyF,EAAS/2E,QAAQ1b,EACrB,IAQJ,OANIgiB,GAAQg3C,IACRy5B,EAASp1E,QAAQ3T,KAAKsY,EAAMg3C,GAE5Bu5B,GACAE,EAASp1E,QAAQ3T,KAAK6oF,EAAQA,GAE3BE,EAASp1E,OACpB,EACAozE,EAAYmC,eAAiB,SAAUhS,EAAOlnF,EAAQsG,GASlD,OARI4gF,EAAMe,iBACN3hF,EAAKtG,OAASA,EAAOA,OACrBsG,EAAKqgF,MAAQ3mF,EAAO2mF,MACpBrgF,EAAKugF,WAAa7mF,EAAO6mF,YAGzBvgF,EAAKtG,OAASA,EAEXsG,CACX,EACAywF,EAAYoC,SAAW,SAAUz6F,IAG5BkF,OAAO0pC,cAAgB1pC,OAAOqM,YAAYvR,EAAI,EAEnD,EACAq4F,EAAYv3F,UAAU45F,cAAgB,SAAU3gF,EAAK4gF,EAAWC,GAC5D,OAAO,QAAO,CAAC,EAAG,CACd/0F,KAAM,MACNyqD,SAAUtqD,KAAKqiF,WAAW/3B,SAC1B8nC,YAAapyF,KAAKqiF,WAAW+P,YAC7BQ,MAAO5yF,KAAKqiF,WAAWuQ,MACvBiC,OAAO,EACPC,aAAa,EACb5qC,UAAWyqC,EACXvqC,UAAWwqC,GACZ7gF,EACP,EAEAs+E,EAAYv3F,UAAUs5F,YAAc,SAAUrgF,EAAKsgF,EAAUzyF,EAAM4gF,GAC/D,IAAIj0E,EAAQvO,KACR+0F,IAAevS,EAAMwS,iBACrBJ,EAAS,SAAU5vF,GACnBpD,EAAKyB,MAAQ2B,EACbqvF,EAAS92E,OAAO3b,EACpB,EACIijC,EAAU,SAAUjzB,EAAMqwE,EAAOQ,EAAKx6E,EAASy+C,EAAQy7B,EAAY8S,GACnErzF,EAAK6gF,IAAMA,EACX7gF,EAAKqgF,MAAQA,EAAQnmF,SAASmmF,EAAMlnF,WAAY,IAAM,EACtD6G,EAAKtG,OAASsW,EACdhQ,EAAKqG,QAAUA,EACfrG,EAAKugF,WAAaA,EAClBvgF,EAAK8kD,OAASA,EACd9kD,EAAKqzF,qBAAuBA,EAC5BZ,EAAS/2E,QAAQ1b,EACrB,EACIszF,EAAe,SAAUtjF,EAAM0/C,GAC/B,IAAI6jC,EAAY,IAAIb,EAChBc,EAAY,CAAEzpD,OAAQ/pC,GAC1B4gF,EAAMuR,SAASsB,SAAU,EACzB,IAAIC,EAAS/mF,EAAMgjF,QAAQ5O,aAAap0E,EAAOi0E,EAAMuR,SAAUniF,EAAOrD,EAAMgjF,QAAQhP,gBAAgB3wE,GAAQ0/C,GACxGikC,EAAWhnF,EAAM6lF,YAAYkB,EAAQH,EAAWC,EAAW5S,EAAMuR,UASrE,OARKgB,GACDI,EAAU7pF,MAAK,SAAUkqF,GACjB5jF,IACA,IAASqiF,eAAezR,EAAMuR,SAASrK,KAAMlH,EAAMuR,SAASlM,UAAWj2E,EAAM4jF,EAAShT,EAAMuR,SAAS71F,KACrG2mC,EAAQjzB,EAAM4jF,EAAQvT,MAAOuT,EAAQ/S,KAE7C,GAAGmS,GAEAW,CACX,EACIZ,EAAY,SAAU/iF,EAAM3J,GAC5B,GAAIsG,EAAMknF,iBAAiBlnF,EAAMgjF,YAExB,QAAkB3/E,EAAK,WAExB,OAAOgjF,EAAOhjF,EAAK,UAAW3J,GAGlCsG,EAAMgmF,oBAAoBhmF,EAAMgjF,WAChCtpF,GAAU,QAAO,CAAC,EAAGsG,EAAMmnF,cAAeztF,KAEgC,IAA1EA,EAAQuhD,YAAYgB,kBAAkB,gBAAgBzmD,QAAQ,QAAiBwK,EAAMy+E,YACrFp7E,EAAO,IAASxO,MAAM+kF,UAAUv2E,IAEpC,IAAItW,EAASiT,EAAMgjF,QAAQhP,gBAAgB3wE,EAAMrD,EAAOi0E,EAAOv6E,EAAQuhD,YAAavhD,GAChFg6E,EAAQ,EACRE,EAAa,KACb8S,EAAuB,uBACvBU,EAAiB/jF,EAAKqjF,GACtBzS,EAAMe,kBACNtB,EAAQ3mF,EAAO2mF,MACfE,EAAa7mF,EAAO6mF,WACpB7mF,EAASA,EAAOA,QAEfknF,EAAMuR,SAINgB,GACDG,EAAa55F,EAAQ2M,GAJrB48B,EAAQvpC,EAAQ2mF,EAAOh6E,EAAQuhD,YAAavhD,EAAQpI,KAAM+R,EAAMuwE,EAAYwT,EAMpF,EACI1hF,EAAMjU,KAAK00F,cAAc3gF,EAAK4gF,EAAWC,GAC7C,GAAK50F,KAAKu0F,oBAAoBv0F,KAAKuxF,SAS9B,CACDvxF,KAAK01F,cAAgBzhF,EACrB,IAAIhM,EAAUgM,EACdjU,KAAKuxF,QAAQn0E,QAAQ0yE,QAAQ,CACzBl+E,KAAM3J,EAAQ2J,KACds4C,UAAWjiD,EAAQiiD,UAAWE,UAAWniD,EAAQmiD,WAEzD,KAhB6C,CACzC,IAAIwrC,EAAS,IAAI,KAAK3hF,GACtB2hF,EAAO3rC,WAAa,WAChB17C,EAAM07C,WAAW2rC,EAAOpsC,YAAaosC,EACzC,EACA3hF,EAAM2hF,EAAOvhF,OACbJ,EAAIgoB,OAAM,SAAUj3B,GAAK,OAAO,CAAM,IACtChF,KAAKooF,SAAS5sF,KAAKo6F,EACvB,CASA,GAAIb,EAAY,CACZ,IAAI91E,OAAU,EACV0uB,EAAM60C,EAAMwS,iBAAiBh6F,KAAKgF,KAAM,CAAEwiF,MAAOA,EAAMuR,SAAUpoD,OAAQ62C,IACzE70C,GAAOA,EAAItzC,QACX4kB,EAAU5B,QAAQ0e,IAAI,CAAC9nB,EAAKihF,EAAa,KAAMvnD,KAC/C1uB,EAAQ3T,MAAK,WAET,IADA,IAAI1J,EAAO,GACF0hB,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC1hB,EAAK0hB,GAAMxkB,UAAUwkB,GAEzB,IAAIhoB,EAASsG,EAAK,GACdi0F,EAAUtnF,EAAMgjF,QAAQhP,gBAAgBjnF,EAAO,GAAIiT,EAAOi0E,EAAOj0E,EAAM65E,SAAS,GAAG5+B,YAAaj7C,EAAM65E,SAAS,IAC/GnG,EAAQ,EACRO,EAAMe,kBACNtB,EAAQ4T,EAAQ5T,MAChB4T,EAAUA,EAAQv6F,QAEtB,IAAIw6F,EAAUvnF,EAAMgjF,QAAQhP,gBAAgBjnF,EAAO,GAAIiT,EAAOi0E,EAAMuR,SAAUxlF,EAAM65E,SAAS,GAAG5+B,YAAaj7C,EAAM65E,SAAS,IAC5HnG,EAAQ,EACJO,EAAMuR,SAASxQ,kBACftB,EAAQ6T,EAAQ7T,MAChB6T,EAAUA,EAAQx6F,QAEtB,IAAS24F,eAAezR,EAAMuR,SAASrK,KAAMlH,EAAMuR,SAASlM,UAAWgO,EAASC,EAAStT,EAAMuR,SAAS71F,KACxG62F,GAAa,EACblwD,EAAQgxD,EAAS5T,EAAO1zE,EAAM65E,SAAS,GAAG5+B,YAC9C,KAGAurC,GAAa,CAErB,CACA,OAAO9gF,CACX,EACAo+E,EAAYv3F,UAAUmvD,WAAa,SAAUhiD,EAAS+jF,GAClDhsF,KAAKuxF,QAAQtnC,WAAWjqD,KAAMiI,EAAS+jF,GAGvC,IAFA,IACItqF,EADAipD,EAAU3qD,KAAKqiF,WAAW13B,QAErBxwD,EAAI,EAAGwwD,GAAWxwD,EAAIwwD,EAAQtwD,OAAQF,IAAK,CAChDuH,EAAQ,GAER,IADA,IAAIuf,EAAOpmB,OAAOomB,KAAK0pC,EAAQxwD,IACtBmpB,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACtD,IAAIjoB,EAAOgvC,EAAO/mB,GAClB5hB,EAAMlG,KAAKH,GACX4M,EAAQiN,iBAAiB7Z,EAAMsvD,EAAQxwD,GAAGkB,GAC9C,CACJ,CACJ,EAYAg3F,EAAYv3F,UAAUs5D,YAAc,SAAUmwB,EAASrmF,EAAKgoF,EAAW1D,EAAO9rE,GAC1E,IAAInI,EAAQvO,KACRkmF,aAAqB,MACrB1D,EAAQ0D,EACRA,EAAY,MAEhB,IAAItkF,EAAO,CACPmS,IAAKmyE,EACLhoF,IAAKA,GAAO8B,KAAKqiF,WAAWnkF,KAE5B+V,EAAMjU,KAAKuxF,QAAQlN,aAAarkF,KAAMukF,EAAS3iF,EAAM4gF,GAAS,IAAI,IAAS9rE,GAC3Eq/E,EAAgB,gBACpB,GAAI/1F,KAAKqiF,WAAWmQ,QAChB,OAAOv+E,EAEX,IAAK,QAAkBjU,KAAKuxF,QAAQwE,IAG/B,IAAK/1F,KAAKu0F,oBAAoBv0F,KAAKuxF,SAuBpC,OAAOvxF,KAAK+1F,cAAc9hF,EAAKjU,KAAKuxF,QAAQn0E,QAAQmzE,aAtBpD,IAAIyF,EAAS,IAAI1B,EACb2B,EAAS,IAAI,KAAKhiF,GAkBtB,OAjBAgiF,EAAOhsC,WAAa,WAChB17C,EAAM07C,WAAWgsC,EAAOzsC,YAAaysC,EACzC,EACAA,EAAO/rC,UAAY,SAAUt4C,EAAM3J,GAC3BsG,EAAMknF,iBAAiBlnF,EAAMgjF,YAExB,QAAkB3/E,EAAK,YAExBqkF,EAAO7rC,UAAU1hD,KAAKC,UAAUiJ,EAAK,aAG7CokF,EAAO14E,QAAQ/O,EAAMgjF,QAAQhP,gBAAgB3wE,EAAMrD,EAAO,KAAMtG,EAAQuhD,YAAavhD,EAASs8E,EAAS3iF,GAC3G,EACAq0F,EAAO7rC,UAAY,SAAUplD,GACzBgxF,EAAOz4E,OAAO,CAAC,CAAEla,MAAO2B,IAC5B,EACAixF,EAAO5hF,OAAO4nB,OAAM,SAAUj3B,GAAK,OAAO,CAAM,IACzCgxF,EAAO/2E,OAIlB,CA1BI,OAAOjf,KAAKuxF,QAAQwE,GAAe9hF,EA2B3C,EASAo+E,EAAYv3F,UAAU6pF,OAAS,SAAU/yE,EAAMs0E,EAAW1D,EAAO3jD,GACzDqnD,aAAqB,MACrB1D,EAAQ0D,EACRA,EAAY,MAEhB,IAAIjyE,EAAMjU,KAAKuxF,QAAQ5M,OAAO3kF,KAAM4R,EAAMs0E,EAAW1D,EAAO3jD,GACxDk3D,EAAgB,gBACpB,OAAI/1F,KAAKqiF,WAAWmQ,QACTv+E,GAEN,QAAkBjU,KAAKuxF,QAAQwE,IAIzB/1F,KAAK+1F,cAAc9hF,EAAKjU,KAAKuxF,QAAQn0E,QAAQgzE,WAH7CpwF,KAAKuxF,QAAQwE,GAAe9hF,EAK3C,EASAo+E,EAAYv3F,UAAUo9B,OAAS,SAAUiuD,EAAUtqF,EAAOqqF,EAAW1D,GAC5C,kBAAV3mF,IACPA,EAAQ,IAASi5D,UAAUqxB,EAAUtqF,IAErCqqF,aAAqB,MACrB1D,EAAQ0D,EACRA,EAAY,MAEhB,IAAIv4C,EAAM3tC,KAAKuxF,QAAQr5D,OAAOl4B,KAAMmmF,EAAUtqF,EAAOqqF,EAAW1D,GAC5DuT,EAAgB,gBACpB,GAAI/1F,KAAKqiF,WAAWmQ,QAChB,OAAO7kD,EAEX,IAAK,QAAkB3tC,KAAKuxF,QAAQwE,IAG/B,CACD,IAAI79D,EAASl4B,KAAKuxF,QAAQn0E,QAAQkzE,aAClC,OAAOtwF,KAAK+1F,cAAcpoD,EAAKzV,EACnC,CALI,OAAOl4B,KAAKuxF,QAAQwE,GAAepoD,EAM3C,EAUA0kD,EAAYv3F,UAAU+pF,OAAS,SAAUsB,EAAUtqF,EAAOqqF,EAAW1D,EAAO9rE,GACpEwvE,aAAqB,MACrB1D,EAAQ0D,EACRA,EAAY,MAEhB,IAAIv4C,EAAM3tC,KAAKuxF,QAAQ1M,OAAO7kF,KAAMmmF,EAAUtqF,EAAOqqF,EAAW1D,EAAO9rE,GACnEq/E,EAAgB,gBACpB,GAAI/1F,KAAKqiF,WAAWmQ,QAChB,OAAO7kD,EAEX,IAAK,QAAkB3tC,KAAKuxF,QAAQwE,IAG/B,CACD,IAAIlR,EAAS7kF,KAAKuxF,QAAQn0E,QAAQizE,aAClC,OAAOrwF,KAAK+1F,cAAcpoD,EAAKk3C,EACnC,CALI,OAAO7kF,KAAKuxF,QAAQwE,GAAepoD,EAM3C,EACA0kD,EAAYv3F,UAAUy5F,oBAAsB,SAAUlS,GAClD,OAAOriF,KAAKuxF,QAAQ/8B,eACiB,sBAAjCx0D,KAAKuxF,QAAQ/8B,eACrB,EACA69B,EAAYv3F,UAAU26F,iBAAmB,SAAUpT,GAC/C,OAAOriF,KAAKuxF,QAAQ/8B,eACiB,mBAAjCx0D,KAAKuxF,QAAQ/8B,eACrB,EACA69B,EAAYv3F,UAAUo7F,YAAc,SAAUC,EAAQluF,GAClD,GAAIjI,KAAKy1F,iBAAiBz1F,KAAKuxF,SAAU,CACrC,IAAI3/E,EAAOlJ,KAAKtF,MAAM+yF,IAEjB,QAAkBvkF,EAAK,YAExB5R,KAAKo2F,YAAY1tF,KAAKC,UAAUiJ,EAAK,WAE7C,CACI5R,KAAKu0F,oBAAoBv0F,KAAKuxF,WAC9BtpF,GAAU,QAAO,CAAC,EAAGjI,KAAK01F,cAAeztF,IAE7C,IACI,IAAS7E,MAAM+kF,UAAUgO,EAC7B,CACA,MAAOnxF,GACHmxF,EAAS,EACb,CACAA,EAASn2F,KAAKuxF,QAAQhP,gBAAgB,IAASn/E,MAAM+kF,UAAUgO,GAASn2F,KAAM,KAAMiI,EAAQuhD,YAAavhD,GACzGjI,KAAKq2F,aAAa/4E,QAAQ64E,EAC9B,EACA9D,EAAYv3F,UAAUs7F,YAAc,SAAUpxF,GAC1ChF,KAAKq2F,aAAa94E,OAAO,CAAC,CAAEla,MAAO2B,IACvC,EACAqtF,EAAYv3F,UAAUi7F,cAAgB,SAAUpoD,EAAK2oD,GACjD,IAAI/nF,EAAQvO,KAOZ,GANA2tC,GAAM,QAAO,CAAC,EAAG,CACb9tC,KAAM,OACNupD,YAAa,kCACb0rC,aAAa,GACdnnD,GACH3tC,KAAKq2F,aAAe,IAAI/B,EACnBt0F,KAAKu0F,oBAAoBv0F,KAAKuxF,SAU/BvxF,KAAK01F,cAAgB/nD,EACrB2oD,EAASt7F,KAAKgF,KAAM,CAChB4R,KAAM+7B,EAAI/7B,KAAMs4C,UAAWlqD,KAAKk2F,YAAYv2F,KAAKK,MACjDoqD,UAAWpqD,KAAKo2F,YAAYz2F,KAAKK,YAbI,CACzC,IAAIu2F,EAAS,IAAI,KAAK5oD,GACtB4oD,EAAOtsC,WAAa,WAChB17C,EAAM07C,WAAWssC,EAAO/sC,YAAa+sC,EACzC,EACAA,EAAOrsC,UAAYlqD,KAAKk2F,YAAYv2F,KAAKK,MACzCu2F,EAAOnsC,UAAYpqD,KAAKo2F,YAAYz2F,KAAKK,MACzCu2F,EAAOliF,OAAO4nB,OAAM,SAAUj3B,GAAK,OAAO,CAAM,GACpD,CAQA,OAAOhF,KAAKq2F,aAAap3E,OAC7B,EACAozE,EAAYv3F,UAAU07F,iBAAmB,WACrCt3F,OAAO0d,oBAAoB,SAAU5c,KAAKujE,eAAe5jE,KAAKK,OAC9DA,KAAKqiF,WAAW/e,mBAAoB,EACpCtjE,KAAKsyF,aAAe,CAAC,EACrBpzF,OAAO+kE,aAAae,QAAQhlE,KAAKqiF,WAAWp5E,GAAI,KACpD,EACOopF,CACX,CAloBgC,GAuoB5BiC,EAA0B,WAC1B,SAASA,IACL,IAAI/lF,EAAQvO,KAIZA,KAAKif,QAAU,IAAI5B,SAAQ,SAAUC,EAASC,GAC1ChP,EAAM+O,QAAUA,EAChB/O,EAAMgP,OAASA,CACnB,IAIAvd,KAAKsL,KAAOtL,KAAKif,QAAQ3T,KAAK3L,KAAKK,KAAKif,SAIxCjf,KAAKi8B,MAAQj8B,KAAKif,QAAQgd,MAAMt8B,KAAKK,KAAKif,QAC9C,CACA,OAAOq1E,CACX,CApB6B,E,sHC1oBzBmC,EAAuB,WAQvB,SAASA,EAAM97E,GAuBX,OArBA3a,KAAK+zF,SAAW,KAEhB/zF,KAAKq1F,SAAU,EAEfr1F,KAAK8nF,UAAY,GACjB9nF,KAAKmjF,QAAU,GACfnjF,KAAK9B,IAAM,GACX8B,KAAK0pF,KAAO,GACQ,kBAAT/uE,EACP3a,KAAK6nF,UAAYltE,EAEZA,GAAQA,aAAgB1T,QAC7BjH,KAAKg0F,QAAUr5E,GAEnB3a,KAAKgoF,QAAU,GACfhoF,KAAK02F,cAAgB,GACrB12F,KAAK22F,eAAiB,GACtB32F,KAAK+zF,SAAW,KAChB/zF,KAAKq1F,SAAU,EACfr1F,KAAK8uB,OAAS,GACd9uB,KAAKgjF,SAAW,GACThjF,IACX,CAgaA,OA1ZAy2F,EAAM37F,UAAUilE,OAAS,SAAUqjB,GAE/B,OADApjF,KAAK9B,IAAMklF,EACJpjF,IACX,EAMAy2F,EAAM37F,UAAUo5F,MAAQ,SAAUtR,GAE9B,OADA5iF,KAAK4iF,YAAcA,EACZ5iF,IACX,EAiBAy2F,EAAM37F,UAAU87F,QAAU,SAAUhU,EAAah/D,EAAMg3C,EAAMu5B,GAEzD,OADAvR,EAAcA,GAAe5iF,KAAK4iF,YAC9BA,EACOA,EAAYoQ,aAAahzF,KAAM4jB,EAAMg3C,EAAMu5B,GAE/C,IAASvoD,WAAW,4GAC/B,EAMA6qD,EAAM37F,UAAUg5F,aAAe,SAAUlR,GAErC,OADAA,EAAcA,GAAe5iF,KAAK4iF,YAC9BA,EACOA,EAAYkR,aAAa9zF,MAE7B,IAAS4rC,WAAW,iHAC/B,EAIA6qD,EAAM37F,UAAU6vC,MAAQ,WACpB,IAAIksD,EAAS,IAAIJ,EAgBjB,OAfAI,EAAO1T,QAAUnjF,KAAKmjF,QAAQx+E,MAAM,GACpCkyF,EAAO34F,IAAM8B,KAAK9B,IAClB24F,EAAOxB,QAAUr1F,KAAKq1F,QACtBwB,EAAOjU,YAAc5iF,KAAK4iF,YAC1BiU,EAAOhP,UAAY7nF,KAAK6nF,UACxBgP,EAAO/nE,OAAS9uB,KAAK8uB,OAAOnqB,MAAM,GAClCkyF,EAAO7O,QAAUhoF,KAAKgoF,QAAQrjF,MAAM,GACpCkyF,EAAOH,cAAgB12F,KAAK02F,cAAc/xF,MAAM,GAChDkyF,EAAOF,eAAiB32F,KAAK22F,eAAehyF,MAAM,GAClDkyF,EAAO7B,iBAAmBh1F,KAAKg1F,iBAC/B6B,EAAO9C,SAAW/zF,KAAK+zF,SACvB8C,EAAOnN,KAAO1pF,KAAK0pF,KACnBmN,EAAOtT,gBAAkBvjF,KAAKujF,gBAC9BsT,EAAO/O,UAAY9nF,KAAK8nF,UAAUnjF,MAAM,GACxCkyF,EAAO7T,SAAWhjF,KAAKgjF,SAASr+E,MAAM,GAC/BkyF,CACX,EAMAJ,EAAM37F,UAAU6f,KAAO,SAAUurE,GAE7B,OADAlmF,KAAK6nF,UAAY3B,EACVlmF,IACX,EAOAy2F,EAAM37F,UAAUovF,UAAY,SAAUhsF,EAAKrC,GAOvC,MANqB,oBAAVA,EACPmE,KAAK8uB,OAAOtzB,KAAK,CAAE0C,IAAKA,EAAKlE,GAAI6B,IAGjCmE,KAAK8uB,OAAOtzB,KAAK,CAAE0C,IAAKA,EAAKrC,MAAOA,IAEjCmE,IACX,EAKAy2F,EAAM37F,UAAUg8F,SAAW,SAAU3P,GAOjC,OALInnF,KAAK8nF,UADa,kBAAXX,EACU,GAAGxiF,MAAM3J,KAAK,CAACmsF,GAAS,GAGxBA,EAAOxiF,MAAM,GAE3B3E,IACX,EAMAy2F,EAAM37F,UAAUsnF,OAAS,SAAU2U,GAO/B,OALI/2F,KAAKgoF,QADa,kBAAX+O,EACQ,GAAGpyF,MAAM3J,KAAK,CAAC+7F,GAAS,GAGxBA,EAAOpyF,MAAM,GAEzB3E,IACX,EAYAy2F,EAAM37F,UAAUonF,MAAQ,SAAUwB,EAAW0D,EAAUvrF,EAAOspF,EAAYC,EAAcuO,GACpFvM,EAAWA,EAAW,EAAW/nD,cAAgB,KACjD,IAAIyrD,EAAY,KAWhB,MAVyB,kBAAdpH,EACPoH,EAAY,IAAIkM,EAAUtT,EAAW0D,EAAUvrF,EAAOspF,EAAYC,EAAcuO,GAE3EjQ,aAAqBsT,IAC1BlM,EAAYpH,GAEhB1jF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,UACJgL,EAAG8lF,IAEA9qF,IACX,EAWAy2F,EAAM37F,UAAUwgB,OAAS,SAAU4pE,EAAWF,EAAYoC,EAAUjC,EAAYC,GAClD,kBAAfJ,IACPA,EAAa,CAACA,IAEboC,GAAyB,SAAbA,IACbA,EAAW,YAEf,IAAIzD,EAAW,IAASsT,YAAY7P,GAYpC,OAXApnF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,WACJgL,EAAG,CACCggF,WAAYA,EACZoC,SAAUA,EACVlC,UAAWA,EACXC,WAAYA,EACZC,aAAcA,EACdzB,SAAUA,KAGX3jF,IACX,EASAy2F,EAAM37F,UAAU8mF,OAAS,SAAU8B,EAAWC,EAAUuT,GACpD,OAAOl3F,KAAKm3F,iBAAiBzT,EAAWC,EAAUuT,EACtD,EAUAT,EAAM37F,UAAUq8F,iBAAmB,SAAUzT,EAAWC,EAAUuT,EAAapQ,GAC3E,IACIL,EACA7sC,EAFAw9C,GAAS,QAAkBtQ,GAAyB,YAAZA,EAW5C,GARyB,kBAAdpD,GAA0B,IAAS8B,SAAS9B,EAAUrkD,cAAe,WAC5EqkD,EAAYA,EAAUv/E,QAAQ,UAAW,IACzCw/E,EAAW,cAEVA,GAAgC,kBAAbA,IACpByT,EAAQzT,EAAWA,EAAStkD,cAAgB,YAC5CskD,EAAW,IAAS8B,OAAO9B,IAE3BuT,EAAa,CACbzQ,EAAQgQ,EAAMtS,cAAcnkF,KAAKmjF,QAAS,YAC1C,IAAK,IAAIhpF,EAAI,EAAGA,EAAIssF,EAAMpsF,OAAQF,IAE9B,GADAy/C,EAAO6sC,EAAMtsF,GAAG6K,EAAE0+E,UACE,kBAAT9pC,GACP,GAAIA,IAAS8pC,EACT,OAAO1jF,UAGV,GAAI45C,aAAgB3yC,MACrB,IAAK,IAAIrE,EAAI,EAAGA,EAAIg3C,EAAKv/C,OAAQuI,IAC7B,GAAIg3C,EAAKh3C,KAAO8gF,GAAaA,EAAUrkD,gBAAkBua,EAAKh3C,GAAK,QAC/D,OAAO5C,IAK3B,CASA,OARAA,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,WACJgL,EAAG,CACC0+E,UAAWA,EACXC,SAAUA,EACVmD,UAAWsQ,KAGZp3F,IACX,EAMAy2F,EAAM37F,UAAUu8F,WAAa,SAAU3T,GACnC,OAAO1jF,KAAK4hF,OAAO8B,EAAW,aAClC,EAQA+S,EAAM37F,UAAUinF,MAAQ,SAAU2B,EAAW1pF,EAAIu5C,GAU7C,OATAvzC,KAAK4hF,OAAO8B,EAAW,MAAM,GAC7B1jF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,UACJgL,EAAG,CACC0+E,UAAWA,EACXC,SAAU3pF,GAAU,KACpBu5C,OAAQA,GAAkB,QAG3BvzC,IACX,EAOAy2F,EAAM37F,UAAU+nF,KAAO,SAAU+C,EAAWD,GAQxC,OAPA3lF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,SACJgL,EAAG,CACC4gF,UAAWA,EACXD,SAAUA,KAGX3lF,IACX,EAOAy2F,EAAM37F,UAAU0/C,MAAQ,SAAUjiC,EAAOC,GAQrC,OAPAxY,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,UACJgL,EAAG,CACCuT,MAAOA,EACPC,IAAKA,KAGNxY,IACX,EAMAy2F,EAAM37F,UAAUknF,KAAO,SAAU+D,GAO7B,OANA/lF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,SACJgL,EAAG,CACC+gF,IAAKA,KAGN/lF,IACX,EAMAy2F,EAAM37F,UAAUgnF,KAAO,SAAUiE,GAK7B,OAJA/lF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,SACJgL,EAAG,CAAE+gF,IAAKA,KAEP/lF,IACX,EAMAy2F,EAAM37F,UAAU+mF,OAAS,SAAUmD,GAQ/B,MAP0B,kBAAfA,IACPA,EAAa,GAAGrgF,MAAM3J,KAAK,CAACgqF,GAAa,IAE7ChlF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,WACJgL,EAAG,CAAEggF,WAAYA,KAEdhlF,IACX,EAOAy2F,EAAM37F,UAAUw8F,UAAY,SAAU9U,EAAO+U,GAGzC,OAFAv3F,KAAKg1F,iBAAmBuC,EACxBv3F,KAAK+zF,SAAWvR,EACTxiF,IACX,EAMAy2F,EAAM37F,UAAU08F,WAAa,SAAUt5F,GAEnC,OADA8B,KAAK0pF,KAAOxrF,EACL8B,IACX,EAIAy2F,EAAM37F,UAAU28F,cAAgB,WAE5B,OADAz3F,KAAKujF,iBAAkB,EAChBvjF,IACX,EAQAy2F,EAAM37F,UAAUivF,UAAY,SAAUlqF,EAAMujF,GAKxC,OAJApjF,KAAKmjF,QAAQ3nF,KAAK,CACdxB,GAAI,eACJgL,EAAG,CAAEo+E,MAAOA,EAAOvjF,KAAMA,KAEtBG,IACX,EAQAy2F,EAAMtS,cAAgB,SAAUhB,EAAShjF,GACrC,OAAOgjF,EAAQ7+E,QAAO,SAAUozF,GAC5B,OAAOA,EAAE19F,KAAOmG,CACpB,GACJ,EAQAs2F,EAAMjQ,iBAAmB,SAAUrD,EAASoD,GAKxC,IAJA,IAAIniF,EAAW++E,EAAQ7+E,QAAO,SAAUozF,GACpC,OAAkC,IAA3BnR,EAAQxiF,QAAQ2zF,EAAE19F,GAC7B,IACI2zC,EAAM,CAAC,EACFxzC,EAAI,EAAGA,EAAIiK,EAAS/J,OAAQF,IAC5BwzC,EAAIvpC,EAASjK,GAAGH,MACjB2zC,EAAIvpC,EAASjK,GAAGH,IAAMoK,EAASjK,GAAG6K,GAG1C,OAAO2oC,CACX,EACO8oD,CACX,CAjc0B,GAuctBO,EAA2B,WAY3B,SAASA,EAAU5T,EAAOgE,EAAUvrF,EAAOspF,EAAYC,EAAcuO,GA8BjE,YA7BmB,IAAfxO,IAAyBA,GAAa,GAE1CnlF,KAAKolF,cAAe,EAEpBplF,KAAK4rF,WAAY,EACI,kBAAVxI,GACPpjF,KAAKojF,MAAQA,EACbpjF,KAAKonF,SAAWA,EAAS/nD,cACzBr/B,KAAKnE,MAAQA,EACbmE,KAAK2zF,UAAYA,EACjB3zF,KAAKmlF,WAAaA,EAClBnlF,KAAKolF,aAAeA,EACpBplF,KAAK4rF,WAAY,EACjB5rF,KAAK2jF,SAAW,IAASsT,YAAYU,gBAAgB33F,KAAKonF,YAErDhE,aAAiB4T,GAAan7F,aAAiBm7F,GAAan7F,aAAiBoL,SAClFjH,KAAK4rF,WAAY,EACjB5rF,KAAK2rF,UAAYvE,EAAS/nD,cAC1Br/B,KAAKyrF,WAAa,CAACrI,GACnBpjF,KAAK2zF,UAAYvQ,EAAMuQ,UACvB3zF,KAAKmlF,WAAa/B,EAAM+B,WACxBnlF,KAAKolF,aAAehC,EAAMgC,aACtBvpF,aAAiBoL,MACjB,GAAGzL,KAAKkU,MAAM1P,KAAKyrF,WAAY5vF,GAG/BmE,KAAKyrF,WAAWjwF,KAAKK,IAGtBmE,IACX,CA+NA,OAzNAg3F,EAAUpD,IAAM,WAEZ,IADA,IAAIhyF,EAAO,GACF0hB,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC1hB,EAAK0hB,GAAMxkB,UAAUwkB,GAEzB,OAAO0zE,EAAUY,kBAAkB,GAAGjzF,MAAM3J,KAAK4G,EAAM,GAAI,MAC/D,EAYAo1F,EAAUl8F,UAAU84F,IAAM,SAAUxQ,EAAOgE,EAAUvrF,EAAOspF,EAAYC,GACpE,OAAO4R,EAAUa,QAAQ73F,KAAMojF,EAAOgE,EAAUvrF,EAAO,MAAOspF,EAAYC,EAC9E,EAMA4R,EAAUnN,GAAK,WAEX,IADA,IAAIjoF,EAAO,GACF0hB,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC1hB,EAAK0hB,GAAMxkB,UAAUwkB,GAEzB,OAAO0zE,EAAUY,kBAAkB,GAAGjzF,MAAM3J,KAAK4G,EAAM,GAAI,KAC/D,EAYAo1F,EAAUl8F,UAAU+uF,GAAK,SAAUzG,EAAOgE,EAAUvrF,EAAOspF,EAAYC,GACnE,OAAO4R,EAAUa,QAAQ73F,KAAMojF,EAAOgE,EAAUvrF,EAAO,KAAMspF,EAAYC,EAC7E,EAMA4R,EAAUc,MAAQ,WAEd,IADA,IAAIl2F,EAAO,GACF0hB,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC1hB,EAAK0hB,GAAMxkB,UAAUwkB,GAEzB,OAAO0zE,EAAUY,kBAAkB,GAAGjzF,MAAM3J,KAAK4G,EAAM,GAAI,SAC/D,EAYAo1F,EAAUl8F,UAAUg9F,MAAQ,SAAU1U,EAAOgE,EAAUvrF,EAAOspF,EAAYC,GACtE,OAAO4R,EAAUa,QAAQ73F,KAAMojF,EAAOgE,EAAUvrF,EAAO,QAASspF,EAAYC,EAChF,EAMA4R,EAAUe,OAAS,WAEf,IADA,IAAIn2F,EAAO,GACF0hB,EAAK,EAAGA,EAAKxkB,UAAUzE,OAAQipB,IACpC1hB,EAAK0hB,GAAMxkB,UAAUwkB,GAEzB,OAAO0zE,EAAUY,kBAAkB,GAAGjzF,MAAM3J,KAAK4G,EAAM,GAAI,UAC/D,EAYAo1F,EAAUl8F,UAAUi9F,OAAS,SAAU3U,EAAOgE,EAAUvrF,EAAOspF,EAAYC,GACvE,OAAO4R,EAAUa,QAAQ73F,KAAMojF,EAAOgE,EAAUvrF,EAAO,SAAUspF,EAAYC,EACjF,EAMA4R,EAAUgB,SAAW,SAAUlV,GAC3B,GAAIA,aAAgB77E,MAAO,CAEvB,IADA,IAAI0mC,EAAM,GACDxzC,EAAI,EAAGC,EAAM0oF,EAAKzoF,OAAQF,EAAIC,EAAKD,IACxCwzC,EAAInyC,KAAKwE,KAAKi4F,aAAanV,EAAK3oF,KAEpC,OAAOwzC,CACX,CACA,IAAIuqD,EAAOpV,EACX,OAAO9iF,KAAKi4F,aAAaC,EAC7B,EAMAlB,EAAUl8F,UAAU2B,SAAW,SAAU05F,GACrC,IACI9qF,EACA8sF,EAFArN,EAAY9qF,KAAKyrF,WAAazrF,KAAKyrF,WAAa,GAGpD,IAAKzrF,KAAK4rF,WAAa5rF,KAAK2jF,SACxB,OAAI3jF,KAAK2rF,YAAgD,IAAnC3rF,KAAK2rF,UAAU5nF,QAAQ,QACzC/D,KAAK2rF,UAA+C,KAAnC3rF,KAAK2rF,UAAUtnF,MAAM,OAAO,QAAY1H,EAAYqD,KAAK2rF,UAAUtnF,MAAM,OAAO,IACzFrE,KAAK2jF,SAAS3oF,KAAKgF,KAAM,IAAS80D,UAAU90D,KAAKojF,MAAO+S,GAASn2F,KAAKnE,MAAOmE,KAAKmlF,WAAYnlF,KAAKolF,eAGpGplF,KAAK2jF,SAAS3oF,KAAKgF,KAAM,IAAS80D,UAAU90D,KAAKojF,MAAO+S,GAASn2F,KAAKnE,MAAOmE,KAAKmlF,WAAYnlF,KAAKolF,cAI9G+S,EADAn4F,KAAK2rF,YAAgD,IAAnC3rF,KAAK2rF,UAAU5nF,QAAQ,QACE,IAAnC/D,KAAK2rF,UAAU5nF,QAAQ,OAGJ,QAAnB/D,KAAK2rF,UAEjB,IAAK,IAAIxxF,EAAI,EAAGA,EAAI2wF,EAAUzwF,OAAQF,IAKlC,GAJIA,EAAI,GAAK6F,KAAK2rF,YAAgD,IAAnC3rF,KAAK2rF,UAAU5nF,QAAQ,SAClD+mF,EAAU3wF,GAAGwxF,UAAYb,EAAU3wF,GAAGwxF,UAAYb,EAAU3wF,GAAGwxF,UAAY,MAAQ,OAEvFtgF,EAAMy/E,EAAU3wF,GAAGsC,SAAS05F,GACxBgC,GACA,IAAK9sF,EACD,OAAO,OAIX,GAAIA,EACA,OAAO,EAInB,OAAO8sF,CACX,EAKAnB,EAAUl8F,UAAUksF,OAAS,WACzB,IAAIyE,EACA/sF,EACJ,GAAIsB,KAAK4rF,UAAW,CAChBH,EAAa,GACb/sF,EAAIsB,KAAKyrF,WACT,IAAK,IAAItxF,EAAI,EAAGA,EAAIuE,EAAErE,OAAQF,IAC1BsxF,EAAWjwF,KAAKkD,EAAEvE,GAAG6sF,SAE7B,CACA,MAAO,CACH4E,UAAW5rF,KAAK4rF,UAChBxI,MAAOpjF,KAAKojF,MACZgE,SAAUpnF,KAAKonF,SACfvrF,MAAOmE,KAAKnE,MACZspF,WAAYnlF,KAAKmlF,WACjBC,aAAcplF,KAAKolF,aACnBuG,UAAW3rF,KAAK2rF,UAChBF,WAAYA,EACZkI,UAAW3zF,KAAK2zF,UAExB,EACAqD,EAAUY,kBAAoB,SAAUnM,EAAYrE,GAChD,GAA0B,IAAtBqE,EAAWpxF,OAAc,CACzB,KAAMoxF,EAAW,aAAcxkF,OAC3B,OAAOwkF,EAAW,GAEtBA,EAAaA,EAAW,EAC5B,CACA,OAAO,IAAIuL,EAAUvL,EAAW,GAAIrE,EAAUqE,EAAW9mF,MAAM,GACnE,EACAqyF,EAAUa,QAAU,SAAUK,EAAM9U,EAAOgE,EAAUvrF,EAAO8vF,EAAWxG,EAAYC,GAC/E,OAAIhC,aAAiB4T,EACVA,EAAUrL,GAAWuM,EAAM9U,GAEjB,kBAAVA,EACA4T,EAAUrL,GAAWuM,EAAM,IAAIlB,EAAU5T,EAAOgE,EAAUvrF,EAAOspF,EAAYC,IAEjF,IAASx5C,WAAW,eAAiB+/C,EAAY,uBAC5D,EACAqL,EAAUiB,aAAe,SAAUnV,GAK/B,IAJA,IAGIxnF,EAHA88F,EAAQtV,EAAK2I,YAAc,GAC3BrxF,EAAMg+F,EAAM/9F,OACZoxF,EAAa,GAERtxF,EAAI,EAAGA,EAAIC,EAAKD,IACrBsxF,EAAWjwF,KAAKwE,KAAKi4F,aAAaG,EAAMj+F,KAQ5C,OAFImB,EAJCwnF,EAAK8I,UAIG,IAAIoL,EAAUvL,EAAW,GAAI3I,EAAK6I,UAAWF,EAAW9mF,MAAM,IAH9D,IAAIqyF,EAAUlU,EAAKM,MAAON,EAAKsE,SAAUtE,EAAKjnF,MAAOinF,EAAKqC,WAAYrC,EAAKsC,cAKjF9pF,CACX,EACO07F,CACX,CA3Q8B,E,0GCzc1BzV,EAAS,CAAEC,UAAW,mBAMtB6W,EAA0B,WAC1B,SAASA,IACT,CAg0EA,OAtzEAA,EAAS7qC,SAAW,SAAU3xD,EAAOixC,GACjC,MAAqB,oBAAVjxC,EACAA,EAAMb,KAAK8xC,GAAQ,CAAC,GAExBjxC,CACX,EAOAw8F,EAAS7S,SAAW,SAAUvF,EAAOj0E,GACjC,OAAOi0E,EAAMt7E,OAASs7E,EAAMt7E,OAAOqH,EAAO3R,UAAY2R,CAC1D,EAOAqsF,EAASC,YAAc,SAAUrY,EAAOj0E,GACpC,OAAOi0E,EAAMt7E,OAASs7E,EAAMt7E,OAAOqH,EAAO3R,UAAY2R,CAC1D,EASAqsF,EAAS54D,WAAa,SAAUwgD,EAAO1nE,GACnC,OAAO0nE,EAAMt7E,MAAM,EAAG4T,EAAMle,UAAYke,CAC5C,EASA8/E,EAASE,cAAgB,SAAUtY,EAAO1nE,GACtC,OAAO0nE,EAAMt7E,MAAM,EAAG4T,EAAMle,UAAYke,CAC5C,EASA8/E,EAASG,SAAW,SAAUvY,EAAOpsC,GACjC,IAAI4kD,EACAC,EAWJ,IAT8B,IAA1B7kD,EAAQ9vC,QAAQ,OAChB8vC,EAAUA,EAAQxvC,MAAM,KAAKvG,KAAK,SAER,IAA1B+1C,EAAQ9vC,QAAQ,OAChB8vC,EAAUA,EAAQxvC,MAAM,KAAKvG,KAAK,SAER,IAA1B+1C,EAAQ9vC,QAAQ,OAChB8vC,EAAUA,EAAQxvC,MAAM,KAAKvG,KAAK,SAER,IAA1B+1C,EAAQ9vC,QAAQ,KAAa,CACH,MAAtB8vC,EAAQ3yC,OAAO,KACf2yC,EAAU,IAAMA,GAEuB,MAAvCA,EAAQ3yC,OAAO2yC,EAAQx5C,OAAS,KAChCw5C,GAAoB,KAExB4kD,EAAgB5kD,EAAQxvC,MAAM,KAC9B,IAAK,IAAIlK,EAAI,EAAGA,EAAIs+F,EAAcp+F,OAAQF,KACC,IAAnCs+F,EAAct+F,GAAG4J,QAAQ,KACzB00F,EAAct+F,GAAKs+F,EAAct+F,GAAK,KAGtCs+F,EAAct+F,GAAKs+F,EAAct+F,GAAK,IAG9C05C,EAAU4kD,EAAc36F,KAAK,GACjC,EACgC,IAA5B+1C,EAAQ9vC,QAAQ,SAA2C,IAA1B8vC,EAAQ9vC,QAAQ,OACjD20F,GAA4C,IAA5B7kD,EAAQ9vC,QAAQ,OAAgB8vC,EAAQxvC,MAAM,OAASwvC,EAAQxvC,MAAM,KACrFwvC,EAAU6kD,EAAc56F,KAAK,MAGjC,IAAI66F,EAAe,IAAIzxF,OAAO2sC,EAAS,KACvC,OAAO8kD,EAAan6F,KAAKyhF,EAC7B,EASAoY,EAASO,KAAO,SAAU3Y,EAAOpsC,GAC7B,OAA8B,IAA1BA,EAAQ9vC,QAAQ,OACU,MAAtB8vC,EAAQ3yC,OAAO,IAAc2yC,EAAQ8F,YAAY,KAAO,GACxD9F,EAAUA,EAAQzyC,UAAU,EAAGyyC,EAAQx5C,QAChCg+F,EAAS54D,WAAW44D,EAASh5D,YAAY4gD,GAAQoY,EAASh5D,YAAYwU,KAEjC,MAAvCA,EAAQ3yC,OAAO2yC,EAAQx5C,OAAS,IAAcw5C,EAAQ9vC,QAAQ,KAAO8vC,EAAQx5C,OAAS,GAC3Fw5C,EAAUA,EAAQzyC,UAAU,EAAGyyC,EAAQx5C,OAAS,GACzCg+F,EAAS7S,SAAS6S,EAASh5D,YAAY4gD,GAAQoY,EAASh5D,YAAYwU,KAEtEA,EAAQ8F,YAAY,OAAS9F,EAAQ9vC,QAAQ,MAAQ8vC,EAAQ8F,YAAY,KAAO9F,EAAQ9vC,QAAQ,KAAO,GAC5G8vC,EAAUA,EAAQzyC,UAAUyyC,EAAQ9vC,QAAQ,KAAO,EAAG8vC,EAAQ8F,YAAY,OACvC,IAA5BsmC,EAAMl8E,QAAQ8vC,KAGc,IAA5BosC,EAAMl8E,QAAQ8vC,GAMjC,EAOAwkD,EAAS5S,OAAS,SAAU2R,GAExB,OADAA,EAAQA,EAAQiB,EAASh5D,YAAY+3D,GAAS,YAChC,cAAVA,EACOp3F,KAAK64F,YAET74F,KAAK84F,YAChB,EAQAT,EAASQ,YAAc,SAAUn+F,EAAGguB,GAChC,OAAI,QAAkBhuB,KAAM,QAAkBguB,IAGpC,OAANA,QAAoB/rB,IAAN+rB,GAFN,EAKK,kBAANhuB,EACAA,EAAEq+F,cAAcrwE,GAEjB,OAANhuB,QAAoBiC,IAANjC,EACP,EAEJA,EAAIguB,CACf,EAQA2vE,EAASS,aAAe,SAAUp+F,EAAGguB,GACjC,OAAI,QAAkBhuB,KAAM,QAAkBguB,IAClC,EAEF,OAANA,QAAoB/rB,IAAN+rB,EACP,EAEM,kBAANhuB,GACsB,EAAtBA,EAAEq+F,cAAcrwE,GAEjB,OAANhuB,QAAoBiC,IAANjC,GACN,EAELguB,EAAIhuB,CACf,EACA29F,EAASW,cAAgB,SAAUp+F,EAAKusF,GAEpC,IADA,IAAIrhB,EAAS,CAAC,EACL3rE,EAAI,EAAGA,EAAIgtF,EAAO9sF,OAAQF,IAC/B2rE,EAAS9lE,KAAKypC,SAAS09C,EAAOhtF,GAAI6F,KAAK80D,UAAUqyB,EAAOhtF,GAAIS,GAAMkrE,GAEtE,OAAOA,CACX,EAOAuyB,EAASxW,OAAS,SAAUoX,EAAW9R,GAEnC,IADA,IAAI8I,EAAU,GACL91F,EAAI,EAAGA,EAAI8+F,EAAU5+F,OAAQF,IAClC81F,EAAQz0F,KAAKwE,KAAKg5F,cAAcC,EAAU9+F,GAAIgtF,IAElD,OAAO8I,CACX,EAiBAoI,EAAStW,MAAQ,SAAUkX,EAAW7V,EAAOjB,EAAY4B,EAAOsE,EAAS90C,EAAQ2lD,GAC7EnV,EAAQA,GAAS,EACjB,IAAIoV,EAAWF,EACXjO,EAAO,YACX,GAAImO,EAAS3X,YAAcD,EAAOyJ,GAAO,CAerC,IAdA,IAAIxgD,EAAU,SAAU5nC,GACpB,IAAK,QAAkBylF,GAQnB8Q,EAASv2F,GAAG6lF,MAAQziB,EAAO+b,MAAMoX,EAASv2F,GAAG6lF,MAAOrF,EAAOjB,EAAYgX,EAASpV,MAAQ,EAAG,KAAMxwC,EAAQ2lD,GACzGC,EAASv2F,GAAGq/E,MAAQkX,EAASv2F,GAAG6lF,MAAMpuF,WATT,CAC7B,IAAI++F,GAAQ,EACRx/C,EAAOyuC,EAAQ/jF,QAAO,SAAUU,GAAK,OAAOA,EAAE9G,MAAQi7F,EAASv2F,GAAG1E,GAAK,IAC3Ek7F,EAAO/Q,EAAQtkF,QAAQ61C,EAAK,IAC5Bu/C,EAASv2F,GAAG6lF,MAAQziB,EAAO+b,MAAMoX,EAASv2F,GAAG6lF,MAAOrF,EAAOjB,EAAYgX,EAASpV,MAAQ,EAAGsE,EAAQ+Q,GAAM3Q,MAAOl1C,EAAQ2lD,GACxHC,EAASv2F,GAAGq/E,MAAQoG,EAAQ+Q,GAAMnX,KACtC,CAKJ,EACIjc,EAAShmE,KACJ4C,EAAI,EAAGA,EAAIu2F,EAAS9+F,OAAQuI,IACjC4nC,EAAQ5nC,GAGZ,OADAu2F,EAASE,aAAe,EACjBF,CACX,CACA,IAAIG,EAAU,CAAC,EACXC,EAAe,GACnBA,EAAa/X,UAAYD,EAAOyJ,GAChCuO,EAAaxV,MAAQA,EACrBwV,EAAaF,YAAc,EAC3BE,EAAatV,QAAUkV,EA0BvB,IAzBA,IAAI3J,EAAU,SAAUr1F,GACpB,IAAID,EAAMs/F,EAAOC,OAAON,EAAUh/F,EAAGipF,GAIrC,IAHK,QAAkB7vC,KACnBr5C,EAAMq5C,EAAOr5C,EAAKkpF,KAEjBkW,EAAQp/F,KACTo/F,EAAQp/F,GAAO,CACXgE,IAAKhE,EACL+nF,MAAO,EACPwG,MAAO,GACPtG,WAAY,CAAC,EACbiB,MAAOA,GAEXmW,EAAa/9F,KAAK89F,EAAQp/F,MACrB,QAAkBmuF,IAAU,CAC7B,IAAIqR,EAAUrR,EAAQ/jF,QAAO,SAAUU,GAAK,OAAOA,EAAE9G,MAAQo7F,EAAQp/F,GAAKgE,GAAK,IAC/Eo7F,EAAQp/F,GAAK+nF,MAAQyX,EAAQ,GAAGzX,KACpC,CAEJqX,EAAQp/F,GAAK+nF,OAAS,QAAkBoG,GAAgCiR,EAAQp/F,GAAK+nF,OAAS,EAA3CqX,EAAQp/F,GAAK+nF,QAC3DiX,GAAeA,GAAc/W,EAAW9nF,SACzCi/F,EAAQp/F,GAAKuuF,MAAMjtF,KAAK29F,EAASh/F,GAEzC,EACIq/F,EAASx5F,KACJ7F,EAAI,EAAGA,EAAIg/F,EAAS9+F,OAAQF,IACjCq1F,EAAQr1F,GAEZ,GAAIgoF,GAAcA,EAAW9nF,OACzB,KAAIo1F,EAAU,SAAUt1F,GAIpB,IAHA,IAAIwzC,EAAM,CAAC,EACP3zC,OAAK,EACL2/F,EAAOxX,EACFv/E,EAAI,EAAGA,EAAIu/E,EAAW9nF,OAAQuI,IAEnC,GADA5I,EAAKq+F,EAASlW,WAAWA,EAAWv/E,GAAG/C,OAClC,QAAkBwoF,GAOfruF,IACA2zC,EAAIgsD,EAAK/2F,GAAGwgF,MAAQ,MAAQuW,EAAK/2F,GAAG/C,MAAQ7F,EAAGu/F,EAAap/F,GAAGsuF,MAAOkR,EAAK/2F,GAAGwgF,YARrD,CAC7B,IAAIxpC,EAAOyuC,EAAQ/jF,QAAO,SAAUU,GAAK,OAAOA,EAAE9G,MAAQq7F,EAAap/F,GAAG+D,GAAK,IAC3ElE,IACA2zC,EAAIgsD,EAAK/2F,GAAGwgF,MAAQ,MAAQuW,EAAK/2F,GAAG/C,MAAQ7F,EAAG4/C,EAAK,GAAG6uC,MAAOkR,EAAK/2F,GAAGwgF,OAE9E,CAOJmW,EAAap/F,GAAGgoF,WAAax0C,CACjC,EACA,IAASxzC,EAAI,EAAGA,EAAIo/F,EAAal/F,OAAQF,IACrCs1F,EAAQt1F,EAFX,CAKL,GAAI++F,GAAcK,EAAal/F,QAAU8nF,EAAW9nF,OAChD,IAASF,EAAI,EAAGA,EAAIo/F,EAAal/F,OAAQF,IACrCo/F,EAAap/F,GAAGsuF,MAAQ,GAGhC,OAAO0Q,EAAS9+F,QAAUk/F,GAAgBJ,CAC9C,EAcAd,EAASpE,eAAiB,SAAUvK,EAAM/uE,EAAM5b,EAAQixB,EAAQ25D,GAC5D,IAAIxvF,EAEAy/C,EADAggD,EAAM,CAAC,EAQX,IANI5pE,EAAO10B,SACP00B,EAASA,EAAO10B,QAEhB00B,EAAOwxD,WACPxhF,KAAK4rC,WAAW,0DAEfzxC,EAAI,EAAGA,EAAI61B,EAAO31B,OAAQF,IAAK,CAChC,IAAI0/F,EAAW75F,KAAK80D,UAAU40B,EAAM15D,EAAO71B,IAC3Cy/C,EAAOggD,EAAIC,KAAcD,EAAIC,GAAY,IACzCjgD,EAAKp+C,KAAKw0B,EAAO71B,GACrB,CACA,IAAKA,EAAI,EAAGA,EAAI4E,EAAO1E,OAAQF,IAAK,CAC5B0/F,EAAW75F,KAAK80D,UAAU60B,GAAQD,EAAM3qF,EAAO5E,IACnD4E,EAAO5E,GAAGwgB,GAAQi/E,EAAIC,EAC1B,CACJ,EAWAxB,EAASpT,aAAe,SAAUrqF,EAAKusF,EAAQ75D,GAI3C,QAHe3wB,IAAX2wB,IACAA,EAAS,SAEE3wB,IAAXwqF,GAAmC,OAAXA,EACxB,OAAOnnF,KAAKilF,aAAarqF,EAAK,GAAI0yB,GAItC,IAFA,IAAIwsE,EAAUl/F,EACVqmB,EAAOpmB,OAAOomB,KAAKrmB,GACd0oB,EAAK,EAAG+mB,EAASppB,EAAMqC,EAAK+mB,EAAOhwC,OAAQipB,IAAM,CACtD,IAAIjoB,EAAOgvC,EAAO/mB,GACW,kBAAlBw2E,EAAQz+F,IAAwBy+F,EAAQz+F,aAAiB4L,MAIhEkgF,EAAO3rF,KAAK8xB,EAASjyB,GAHrB2E,KAAKilF,aAAa6U,EAAQz+F,GAAO8rF,EAAQ75D,EAASjyB,EAAO,IAKjE,CACA,OAAO8rF,CACX,EAQAkR,EAASvjC,UAAY,SAAUvrB,EAAW5uB,GACtC,IAAK4uB,EACD,OAAO5uB,EAEX,GAAKA,EAAL,CAGA,IAAgC,IAA5B4uB,EAAUxlC,QAAQ,KAAa,CAC/B,IAAIg2F,EAAqBxwD,EAAUroC,OAAO,GAAGm+B,cAAgBkK,EAAU5kC,MAAM,GACzEq1F,EAAqBzwD,EAAUroC,OAAO,GAAGC,cAAgBooC,EAAU5kC,MAAM,GAC7E,OAAK,QAAkBgW,EAAK4uB,KAInB,QAAkB5uB,EAAKo/E,KAGlB,QAAkBp/E,EAAKq/E,IAItB,KAHAr/E,EAAKq/E,GAHLr/E,EAAKo/E,GAJTp/E,EAAK4uB,EAapB,CAGA,IAFA,IAAI1tC,EAAQ8e,EACR6uB,EAASD,EAAUllC,MAAM,KACpBlK,EAAI,EAAGA,EAAIqvC,EAAOnvC,OAAQF,IAAK,CACpC,GAAa,MAAT0B,EACA,MAGJ,GADAA,EAAQA,EAAM2tC,EAAOrvC,SACPwC,IAAVd,EAAqB,CACrB,IAAIo+F,EAASzwD,EAAOrvC,GAAG+G,OAAO,GAAGC,cAAgBqoC,EAAOrvC,GAAGwK,MAAM,GACjE9I,EAAQ8e,EAAKs/E,IAAWt/E,EAAKs/E,EAAO/4F,OAAO,GAAGm+B,cAAgB46D,EAAOt1F,MAAM,KAAO,IACtF,CACAgW,EAAO9e,CACX,CACA,OAAOA,CAhCP,CAiCJ,EAUAw8F,EAAS5uD,SAAW,SAAUF,EAAW1tC,EAAOjB,GAC5C,IAGIT,EAEA+D,EALA+iB,EAAOsoB,EAAUxuC,WAAWsJ,MAAM,KAClCkU,EAAQ3d,GAAO,CAAC,EAChB8uC,EAAUnxB,EAEVle,EAAS4mB,EAAK5mB,OAElB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IACpB+D,EAAM+iB,EAAK9mB,GACPA,EAAI,IAAME,EACVqvC,EAAQxrC,QAAiBvB,IAAVd,OAAsBc,EAAYd,GAE5C,QAAkB6tC,EAAQxrC,MAC/BwrC,EAAQxrC,GAAO,CAAC,GAEpBwrC,EAAUA,EAAQxrC,GAEtB,OAAOqa,CACX,EAQA8/E,EAAS9S,KAAO,SAAU7D,EAAI0B,EAAOO,GACjC,GAAIjC,EAAGrnF,QAAU,EACb,OAAOqnF,EAEX,IAAIwY,EAASp+F,UAAU4lF,EAAGrnF,OAAS,GAAGU,WAAY,IAC9CghE,EAAO2lB,EAAG/8E,MAAM,EAAGu1F,GACnBl+B,EAAQ0lB,EAAG/8E,MAAMu1F,GAGrB,OAFAn+B,EAAO/7D,KAAKulF,KAAKxpB,EAAMqnB,EAAOO,GAC9B3nB,EAAQh8D,KAAKulF,KAAKvpB,EAAOonB,EAAOO,GACzB3jF,KAAKm6F,MAAMp+B,EAAMC,EAAOonB,EAAOO,EAC1C,EACA0U,EAAS+B,iBAAmB,SAAUv+F,GAClC,GAAqB,kBAAVA,EACP,OAAOA,EAEX,IAAIP,EAASO,EAAMwI,MAAM,IACrBgwD,EAAW/4D,EAAOkJ,KAAI,SAAUo1C,GAAQ,OAAOA,KAAQy+C,EAASgC,WAAahC,EAASgC,WAAWzgD,GAAQA,CAAM,IACnH,OAAOya,EAASv2D,KAAK,GACzB,EACAu6F,EAAS8B,MAAQ,SAAUp+B,EAAMC,EAAO0nB,EAAWC,GAC/C,IACI2W,EADAh/F,EAAS,GAEb,MAAOygE,EAAK1hE,OAAS,GAAK2hE,EAAM3hE,OAAS,EAG7BigG,EAFJv+B,EAAK1hE,OAAS,GAAK2hE,EAAM3hE,OAAS,EAC9BspF,EACUA,EAAS3jF,KAAKy5F,OAAO19B,EAAM,EAAG2nB,GAAY1jF,KAAKy5F,OAAOz9B,EAAO,EAAG0nB,GAAY3nB,EAAK,GAAIC,EAAM,KAAO,EAAID,EAAOC,EAG7GD,EAAK,GAAG2nB,GAAa3nB,EAAK,GAAG2nB,GAAa3nB,EAAOC,EAIrDD,EAAK1hE,OAAS,EAAI0hE,EAAOC,EAEvC1gE,EAAOE,KAAK8+F,EAAQ90F,SAExB,OAAOlK,CACX,EACA+8F,EAASoB,OAAS,SAAUhwE,EAAO1e,EAAOq4E,GACtC,OAAOA,EAAQpjF,KAAK80D,UAAUsuB,EAAO35D,EAAM1e,IAAU0e,EAAM1e,EAC/D,EACAstF,EAASh5D,YAAc,SAAUnlC,GAC7B,OAAOA,EAAqB,kBAARA,EAAmBA,EAAImlC,cAAgBnlC,EAAIa,WAAsB,IAARb,IAAqB,IAARA,EAAiBA,EAAIa,WAAa,EAChI,EAYAs9F,EAASxR,oBAAsB,SAAU0K,EAASgJ,EAAQC,EAAQC,GAC9D,GAAIF,KAAUhJ,EAAS,CACnB,IAAI5jD,EAAM4jD,EAAQgJ,GAAQC,EAAQC,IAC7B,QAAkB9sD,KACnB6sD,EAAS7sD,EAEjB,CACA,OAAO6sD,CACX,EACAnC,EAAS/O,aAAe,SAAUoR,EAAKpW,EAAI9B,GACvC,IAAIvuE,EAAM,CAAC,EAOX,OANAokF,EAASxR,oBAAoB6T,EAAK,YAAa,CAC3CpW,GAAIA,EACJ9B,MAAOA,EACP1zD,OAAQ0zD,EAAM1zD,OACdw4D,UAAWrzE,IAERA,CACX,EAMAokF,EAASnK,cAAgB,SAAUtzF,GAC/B,QAAUA,GAASA,EAAI8lB,cAAgB7lB,MAC3C,EAIAw9F,EAASxF,OAAS,WACd,IAAIpQ,EAAM,KACNx6E,EAAU,iBACd,IACIw6E,EAAM,IAAIvjF,OAAO+I,EACrB,CACA,MAAOjD,GAEP,CACA,QAASy9E,GAAQ,oBAAqBA,CAC1C,EAMA4V,EAAShL,QAAU,SAAU//D,GACzB,IACIqtE,EADAC,EAAO,mBAEX,OAAQttE,GAAU,IAAM,uCAAuCnpB,QAAQ,MAAM,SAAUjK,EAAKC,GACxF,GAAI,WAAY+E,QAAU,oBAAqB+pC,OAAQ,CACnD,IAAIlvC,EAAM,IAAI8gG,WAAW,GACzB37F,OAAO+pC,OAAOC,gBAAgBnvC,GAC9B4gG,EAAO5gG,EAAI,GAAK,GAAK,CACzB,MAEI4gG,EAAuB,GAAhB7tF,KAAKG,SAAgB,EAEhC,OAAO2tF,EAAW,KAANzgG,EAAkB,EAAPwgG,EAAa,EAAMA,EAC9C,GACJ,EAOAtC,EAASnR,OAAS,SAAUhtF,GACxB,YAAeyC,IAARzC,GAA6B,OAARA,CAChC,EAUAm+F,EAASyC,oBAAsB,SAAUrxE,EAAO25D,EAAOO,GACnD,IAAInQ,EACA8mB,EACAp8F,EACA/D,EAAI,EACJ4gG,EAA2D,kBAArC1C,EAASoB,OAAOhwE,EAAO,EAAG25D,GACpD,GAAI35D,EAAMpvB,OACN,OAAO,QAAkBm5E,IAAWr5E,EAAIsvB,EAAMpvB,OAC1Cm5E,EAAS6kB,EAASoB,OAAOhwE,EAAOtvB,EAAGipF,GACnCllF,EAAMurB,EAAMtvB,KAGpB,KAAOA,EAAIsvB,EAAMpvB,OAAQF,IACrBmgG,EAAUjC,EAASoB,OAAOhwE,EAAOtvB,EAAGipF,IAChC,QAAkBkX,KAGlBS,IACAvnB,GAAUA,EACV8mB,GAAWA,GAEX3W,EAASnQ,EAAQ8mB,GAAW,IAC5B9mB,EAAS8mB,EACTp8F,EAAMurB,EAAMtvB,KAGpB,OAAO+D,CACX,EAYAm6F,EAASvB,SAAW,SAAUhU,EAAMY,EAAWsX,GAC3CA,IAAyB,QAAkBA,IAAkCA,EAC7E,IACI9gG,EADAoB,EAAS,GAET8oF,EAAM,CAAC,EAQX,OAPAtB,EAAKthE,SAAQ,SAAU5P,EAAM7G,GACzB7Q,EAA+B,kBAAjB4oF,EAAK/3E,GAAuBstF,EAASoB,OAAO3W,EAAM/3E,EAAO24E,GAAaZ,EAAK/3E,GACnF7Q,KAAOkqF,IACT9oF,EAAOE,KAAMw/F,EAA+BlY,EAAK/3E,GAAX7Q,GACtCkqF,EAAIlqF,GAAO,EAEnB,IACOoB,CACX,EAQA+8F,EAASvD,YAAc,SAAUxQ,EAAIL,GACjC,IAAIzB,EAAQxiF,KAAKi7F,aAAa3W,GAC1B4W,EAAa,IAAI,IAAYjX,GAC7BK,EAAG6W,gBACH3Y,EAAMiV,gBAIV,IAAIn8F,EAAS4/F,EAAWpH,aAAatR,GAEjClT,EAAc,CACdh0E,OAAQgpF,EAAG6W,eAAiB7/F,EAAOA,OAASA,EAC5C2mF,MAAO3mF,EAAO2mF,MACdE,WAAYz5E,KAAKC,UAAUrN,EAAO6mF,aAEtC,OAAOmC,EAAG6W,eAAiB7rB,EAAch0E,CAC7C,EACA+8F,EAAS4C,aAAe,SAAU3W,GAC9B,IAAI/1E,EAAQvO,KACRwiF,EAAQ,IAAI,IAIhB,GAHI8B,EAAGzC,QACHW,EAAMX,OAAOyC,EAAGzC,QAEhByC,EAAGpC,MAAO,CACV,IAAIA,EAAQmW,EAASj1F,MAAM+kF,UAAU7D,EAAGpC,OACxCA,EAAM59E,QAAO,SAAU4zF,GACnB,IAAI,QAAkBA,EAAKvM,WACvBnJ,EAAMN,MAAMgW,EAAK9U,MAAO8U,EAAK9Q,SAAU8Q,EAAKr8F,MAAOq8F,EAAK/S,WAAY+S,EAAK9S,kBAExE,CACD,IAAIgW,EAAgB,GAChBlD,EAAK9U,MACLgY,EAAc5/F,KAAK,IAAI,IAAU08F,EAAK9U,MAAO8U,EAAK9Q,SAAU8Q,EAAKr8F,MAAOq8F,EAAK/S,WAAY+S,EAAK9S,eAG9FgW,EAAgBA,EAAc5gG,OAAO+T,EAAM8sF,aAAanD,EAAKzM,aAE1C,OAAnByM,EAAKvM,UACLnJ,EAAMN,MAAM,IAAU2H,GAAGuR,IAED,QAAnBlD,EAAKvM,WACVnJ,EAAMN,MAAM,IAAU0R,IAAIwH,GAElC,CACJ,GACJ,CACA,GAAI9W,EAAGhpE,OAAQ,CACX,IAAIA,EAAS+8E,EAASj1F,MAAM+kF,UAAU7D,EAAGhpE,QAEzCA,EAAOhX,QAAO,SAAUU,GAAK,OAAOw9E,EAAMlnE,OAAOtW,EAAE9G,IAAK8G,EAAEmiF,OAAQniF,EAAE,YAEpEA,EAAE,cAAeA,EAAE,gBAAkB,GACzC,CAgBA,OAfIs/E,EAAGnC,YACHmC,EAAGnC,WAAW79E,QAAO,SAAUU,GAAK,OAAOw9E,EAAMuH,UAAU/kF,EAAEnF,KAAMmF,EAAEo+E,MAAQ,IAE7EkB,EAAGgX,QACHhX,EAAGgX,OAAOh3F,QAAO,SAAUU,GAAK,OAAOw9E,EAAMZ,OAAO58E,EAAE7E,KAAM6E,EAAE8hF,UAAY,IAE1ExC,EAAGxC,MACHU,EAAMV,KAAKwC,EAAGxC,MAEdwC,EAAGtC,MACHQ,EAAMR,KAAKsC,EAAGtC,MAEdsC,EAAGvC,OACHuC,EAAGvC,MAAMz9E,QAAO,SAAUs1F,GAAO,OAAOpX,EAAMT,MAAM6X,EAAM,IAEvDpX,CACX,EACA6V,EAASgD,aAAe,SAAUnD,GAE9B,IADA,IAAIqD,EAAW,GACNphG,EAAI,EAAGA,EAAI+9F,EAAK79F,OAAQF,IAAK,CAClC,IAAI6K,EAAIkzF,EAAK/9F,GACb,GAAI6K,EAAEo+E,MACFmY,EAAS//F,KAAK,IAAI,IAAUwJ,EAAEo+E,MAAOp+E,EAAEoiF,SAAUpiF,EAAEnJ,MAAOmJ,EAAEmgF,WAAYngF,EAAEogF,mBAEzE,CAID,IAHA,IAAIoW,EAAY,GAEZC,EAAOz7F,KAAKq7F,aAAar2F,EAAEymF,YACtBnoE,EAAK,EAAGupB,EAAKhyC,OAAOomB,KAAKw6E,GAAOn4E,EAAKupB,EAAGxyC,OAAQipB,IAAM,CAC3D,IAAIjoB,EAAOwxC,EAAGvpB,GACdk4E,EAAUhgG,KAAKigG,EAAKpgG,GACxB,CACAkgG,EAAS//F,KAAqB,OAAhBwJ,EAAE2mF,UAAqB,IAAU9B,GAAG2R,GAAa,IAAU5H,IAAI4H,GACjF,CACJ,CACA,OAAOD,CACX,EAMAlD,EAASqD,qBAAuB,KAMhCrD,EAASnQ,kBAAmB,EAO5BmQ,EAASzsD,WAAa,SAAUvoC,GAC5B,IACI,MAAM,IAAIO,MAAMP,EACpB,CACA,MAAO2B,GAEH,MAAMA,EAAExI,QAAU,KAAOwI,EAAExB,KAC/B,CACJ,EACA60F,EAASlW,WAAa,CAOlBwZ,IAAK,SAAUja,EAAI0B,GAIf,IAHA,IACIlpF,EADAoB,EAAS,EAETy/F,EAAwD,kBAAlC1C,EAASoB,OAAO/X,EAAI,EAAG0B,GACxCjpF,EAAI,EAAGA,EAAIunF,EAAGrnF,OAAQF,IAC3BD,EAAMm+F,EAASoB,OAAO/X,EAAIvnF,EAAGipF,GACxBviF,MAAM3G,IAAgB,OAARA,IACX6gG,IACA7gG,GAAOA,GAEXoB,GAAUpB,GAGlB,OAAOoB,CACX,EAOAsgG,QAAS,SAAUla,EAAI0B,GACnB,OAAOiV,EAASlW,WAAWwZ,IAAIja,EAAI0B,GAAS1B,EAAGrnF,MACnD,EAOAqB,IAAK,SAAUgmF,EAAI0B,GACf,IAAIO,EAKJ,MAJqB,oBAAVP,IACPO,EAAWP,EACXA,EAAQ,MAELiV,EAASvjC,UAAUsuB,EAAOiV,EAASyC,oBAAoBpZ,EAAI0B,EAAOO,GAAY0U,EAASQ,aAClG,EAQAl9F,IAAK,SAAU+lF,EAAI0B,GACf,IAAIO,EAKJ,MAJqB,oBAAVP,IACPO,EAAWP,EACXA,EAAQ,MAELiV,EAASvjC,UAAUsuB,EAAOiV,EAASyC,oBAAoBpZ,EAAI0B,EAAOO,GAAY0U,EAASS,cAClG,EAOA+C,UAAW,SAAUna,EAAI0B,GACrB,OAAO,IAAI,IAAY1B,GAAIoS,cAAa,IAAI,KAAQ5R,MAAMkB,EAAO,SAAS,GAAM,IAAO/oF,MAC3F,EAOAyhG,WAAY,SAAUpa,EAAI0B,GACtB,OAAO,IAAI,IAAY1B,GAAIoS,cAAa,IAAI,KAAQ5R,MAAMkB,EAAO,SAAS,GAAO,IAAO/oF,MAC5F,EASA4nF,MAAO,SAAUP,EAAI0B,GACjB,OAAO1B,EAAGrnF,MACd,GAKJg+F,EAAS0D,gBAAkB,CACvB,IAAK,WACL,IAAK,cACL,KAAM,kBACN,KAAM,qBACN,KAAM,QACN,KAAM,WACN,KAAM,WACN,KAAM,WACN,KAAM,cAMV1D,EAASlN,aAAe,CACpB,IAAK,OACL,IAAK,OACL,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,OACN,SAAY,OACZ,gBAAmB,OACnB,YAAe,OACf,mBAAsB,OACtB,MAAS,OACT,SAAY,QAMhBkN,EAASjN,cAAgB,CACrB,KAAM,WACN,KAAM,aACN,KAAM,cACN,SAAY,WACZ,WAAc,aACd,SAAY,cACZ,eAAkB,eAClB,iBAAoB,iBACpB,eAAkB,kBAClB,SAAY,WACZ,KAAQ,QAMZiN,EAAShN,gBAAkB,CACvB,KAAM,WACN,KAAM,aACN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,WACZ,eAAkB,eAClB,iBAAoB,iBACpB,eAAkB,eAClB,SAAY,WACZ,KAAQ,QAEZgN,EAASgC,WAAa,CAClB,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU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","sources":["webpack://test1/./node_modules/@bugsnag/browser/dist/bugsnag.js","webpack://test1/./node_modules/@bugsnag/js/browser/notifier.js","webpack://test1/./node_modules/@bugsnag/plugin-vue/dist/bugsnag-vue.js","webpack://test1/./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack://test1/./node_modules/@fortawesome/vue-fontawesome/index.es.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/util.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/observer.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/ajax.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/browser.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/fetch.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/dom.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/base.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/animation.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/child-property.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/component.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/draggable.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/droppable.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/l10n.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/touch.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/template.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack://test1/./node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack://test1/./node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack://test1/./node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack://test1/./node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack://test1/./node_modules/@syncfusion/ej2-data/src/manager.js","webpack://test1/./node_modules/@syncfusion/ej2-data/src/query.js","webpack://test1/./node_modules/@syncfusion/ej2-data/src/util.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/css-constants.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/date-processor.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/utils.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack://test1/./node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/common/position.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/popup/popup.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","webpack://test1/./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/crud-actions.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/selection.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/constant.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/enum.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/column.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/loading-indicator.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/filter-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/textwrap-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-grids/src/grid/actions/logger.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/logger.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/clipboard.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/print.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/search-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/selection-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/renderer/render.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/data.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/page-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/summary.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/edit-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/sort-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/infinite-scroll-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/treegrid.js","webpack://test1/./node_modules/@syncfusion/ej2-treegrid/src/treegrid/utils.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-base/src/component-base.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-base/src/template.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/task-processor.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/actions/chart-scroll.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/virtual-content-render.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/gantt-chart.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/timeline.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/column.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/tree-grid.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/sort-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/loading-indicator.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/day-working-time.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/holiday.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/event-marker.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/task-fields.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/timeline-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/edit-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/selection-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/label-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/tooltip-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/filter-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/splitter-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/resource-fields.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/models/search-settings.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/chart-rows.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/actions/dependency.js","webpack://test1/./node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","webpack://test1/./node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","webpack://test1/./node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","webpack://test1/./node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/connector-line.js","webpack://test1/./node_modules/@syncfusion/ej2-layouts/src/splitter/splitter.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/splitter.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/tooltip.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/actions/keyboard.js","webpack://test1/./node_modules/@syncfusion/ej2-gantt/src/gantt/base/gantt.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/columns.directive.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/adddialogfields.directive.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/editdialogfields.directive.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/dayworkingtime.directive.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/holidays.directive.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/eventmarkers.directive.js","webpack://test1/./node_modules/@syncfusion/ej2-vue-gantt/src/gantt/gantt.component.js","webpack://test1/./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://test1/./node_modules/@vue/composition-api/dist/vue-composition-api.umd.js","webpack://test1/./node_modules/axios/index.js","webpack://test1/./node_modules/axios/lib/adapters/xhr.js","webpack://test1/./node_modules/axios/lib/axios.js","webpack://test1/./node_modules/axios/lib/cancel/Cancel.js","webpack://test1/./node_modules/axios/lib/cancel/CancelToken.js","webpack://test1/./node_modules/axios/lib/cancel/isCancel.js","webpack://test1/./node_modules/axios/lib/core/Axios.js","webpack://test1/./node_modules/axios/lib/core/InterceptorManager.js","webpack://test1/./node_modules/axios/lib/core/buildFullPath.js","webpack://test1/./node_modules/axios/lib/core/createError.js","webpack://test1/./node_modules/axios/lib/core/dispatchRequest.js","webpack://test1/./node_modules/axios/lib/core/enhanceError.js","webpack://test1/./node_modules/axios/lib/core/mergeConfig.js","webpack://test1/./node_modules/axios/lib/core/settle.js","webpack://test1/./node_modules/axios/lib/core/transformData.js","webpack://test1/./node_modules/axios/lib/defaults.js","webpack://test1/./node_modules/axios/lib/helpers/bind.js","webpack://test1/./node_modules/axios/lib/helpers/buildURL.js","webpack://test1/./node_modules/axios/lib/helpers/combineURLs.js","webpack://test1/./node_modules/axios/lib/helpers/cookies.js","webpack://test1/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://test1/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://test1/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://test1/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://test1/./node_modules/axios/lib/helpers/spread.js","webpack://test1/./node_modules/axios/lib/utils.js","webpack://test1/./node_modules/clipboard/dist/clipboard.min.js","webpack://test1/./node_modules/entities/lib/decode.js","webpack://test1/./node_modules/entities/lib/decode_codepoint.js","webpack://test1/./node_modules/entities/lib/encode.js","webpack://test1/./node_modules/entities/lib/index.js","webpack://test1/./node_modules/eventemitter3/index.js","webpack://test1/./node_modules/jquery/dist/jquery.js","webpack://test1/./node_modules/klona/dist/index.js","webpack://test1/./node_modules/linkify-it/index.js","webpack://test1/./node_modules/linkify-it/lib/re.js","webpack://test1/./node_modules/lodash/_DataView.js","webpack://test1/./node_modules/lodash/_Hash.js","webpack://test1/./node_modules/lodash/_ListCache.js","webpack://test1/./node_modules/lodash/_Map.js","webpack://test1/./node_modules/lodash/_MapCache.js","webpack://test1/./node_modules/lodash/_Promise.js","webpack://test1/./node_modules/lodash/_Set.js","webpack://test1/./node_modules/lodash/_SetCache.js","webpack://test1/./node_modules/lodash/_Stack.js","webpack://test1/./node_modules/lodash/_Symbol.js","webpack://test1/./node_modules/lodash/_Uint8Array.js","webpack://test1/./node_modules/lodash/_WeakMap.js","webpack://test1/./node_modules/lodash/_apply.js","webpack://test1/./node_modules/lodash/_arrayFilter.js","webpack://test1/./node_modules/lodash/_arrayIncludes.js","webpack://test1/./node_modules/lodash/_arrayIncludesWith.js","webpack://test1/./node_modules/lodash/_arrayLikeKeys.js","webpack://test1/./node_modules/lodash/_arrayMap.js","webpack://test1/./node_modules/lodash/_arrayPush.js","webpack://test1/./node_modules/lodash/_arrayReduce.js","webpack://test1/./node_modules/lodash/_arraySome.js","webpack://test1/./node_modules/lodash/_asciiToArray.js","webpack://test1/./node_modules/lodash/_asciiWords.js","webpack://test1/./node_modules/lodash/_assocIndexOf.js","webpack://test1/./node_modules/lodash/_baseAssignValue.js","webpack://test1/./node_modules/lodash/_baseDifference.js","webpack://test1/./node_modules/lodash/_baseEach.js","webpack://test1/./node_modules/lodash/_baseFindIndex.js","webpack://test1/./node_modules/lodash/_baseFlatten.js","webpack://test1/./node_modules/lodash/_baseFor.js","webpack://test1/./node_modules/lodash/_baseForOwn.js","webpack://test1/./node_modules/lodash/_baseGet.js","webpack://test1/./node_modules/lodash/_baseGetAllKeys.js","webpack://test1/./node_modules/lodash/_baseGetTag.js","webpack://test1/./node_modules/lodash/_baseHasIn.js","webpack://test1/./node_modules/lodash/_baseIndexOf.js","webpack://test1/./node_modules/lodash/_baseIsArguments.js","webpack://test1/./node_modules/lodash/_baseIsEqual.js","webpack://test1/./node_modules/lodash/_baseIsEqualDeep.js","webpack://test1/./node_modules/lodash/_baseIsMatch.js","webpack://test1/./node_modules/lodash/_baseIsNaN.js","webpack://test1/./node_modules/lodash/_baseIsNative.js","webpack://test1/./node_modules/lodash/_baseIsTypedArray.js","webpack://test1/./node_modules/lodash/_baseIteratee.js","webpack://test1/./node_modules/lodash/_baseKeys.js","webpack://test1/./node_modules/lodash/_baseMap.js","webpack://test1/./node_modules/lodash/_baseMatches.js","webpack://test1/./node_modules/lodash/_baseMatchesProperty.js","webpack://test1/./node_modules/lodash/_baseOrderBy.js","webpack://test1/./node_modules/lodash/_baseProperty.js","webpack://test1/./node_modules/lodash/_basePropertyDeep.js","webpack://test1/./node_modules/lodash/_basePropertyOf.js","webpack://test1/./node_modules/lodash/_baseRest.js","webpack://test1/./node_modules/lodash/_baseSetToString.js","webpack://test1/./node_modules/lodash/_baseSlice.js","webpack://test1/./node_modules/lodash/_baseSortBy.js","webpack://test1/./node_modules/lodash/_baseTimes.js","webpack://test1/./node_modules/lodash/_baseToString.js","webpack://test1/./node_modules/lodash/_baseTrim.js","webpack://test1/./node_modules/lodash/_baseUnary.js","webpack://test1/./node_modules/lodash/_cacheHas.js","webpack://test1/./node_modules/lodash/_castPath.js","webpack://test1/./node_modules/lodash/_castSlice.js","webpack://test1/./node_modules/lodash/_compareAscending.js","webpack://test1/./node_modules/lodash/_compareMultiple.js","webpack://test1/./node_modules/lodash/_coreJsData.js","webpack://test1/./node_modules/lodash/_createBaseEach.js","webpack://test1/./node_modules/lodash/_createBaseFor.js","webpack://test1/./node_modules/lodash/_createCaseFirst.js","webpack://test1/./node_modules/lodash/_createCompounder.js","webpack://test1/./node_modules/lodash/_deburrLetter.js","webpack://test1/./node_modules/lodash/_defineProperty.js","webpack://test1/./node_modules/lodash/_equalArrays.js","webpack://test1/./node_modules/lodash/_equalByTag.js","webpack://test1/./node_modules/lodash/_equalObjects.js","webpack://test1/./node_modules/lodash/_freeGlobal.js","webpack://test1/./node_modules/lodash/_getAllKeys.js","webpack://test1/./node_modules/lodash/_getMapData.js","webpack://test1/./node_modules/lodash/_getMatchData.js","webpack://test1/./node_modules/lodash/_getNative.js","webpack://test1/./node_modules/lodash/_getRawTag.js","webpack://test1/./node_modules/lodash/_getSymbols.js","webpack://test1/./node_modules/lodash/_getTag.js","webpack://test1/./node_modules/lodash/_getValue.js","webpack://test1/./node_modules/lodash/_hasPath.js","webpack://test1/./node_modules/lodash/_hasUnicode.js","webpack://test1/./node_modules/lodash/_hasUnicodeWord.js","webpack://test1/./node_modules/lodash/_hashClear.js","webpack://test1/./node_modules/lodash/_hashDelete.js","webpack://test1/./node_modules/lodash/_hashGet.js","webpack://test1/./node_modules/lodash/_hashHas.js","webpack://test1/./node_modules/lodash/_hashSet.js","webpack://test1/./node_modules/lodash/_isFlattenable.js","webpack://test1/./node_modules/lodash/_isIndex.js","webpack://test1/./node_modules/lodash/_isKey.js","webpack://test1/./node_modules/lodash/_isKeyable.js","webpack://test1/./node_modules/lodash/_isMasked.js","webpack://test1/./node_modules/lodash/_isPrototype.js","webpack://test1/./node_modules/lodash/_isStrictComparable.js","webpack://test1/./node_modules/lodash/_listCacheClear.js","webpack://test1/./node_modules/lodash/_listCacheDelete.js","webpack://test1/./node_modules/lodash/_listCacheGet.js","webpack://test1/./node_modules/lodash/_listCacheHas.js","webpack://test1/./node_modules/lodash/_listCacheSet.js","webpack://test1/./node_modules/lodash/_mapCacheClear.js","webpack://test1/./node_modules/lodash/_mapCacheDelete.js","webpack://test1/./node_modules/lodash/_mapCacheGet.js","webpack://test1/./node_modules/lodash/_mapCacheHas.js","webpack://test1/./node_modules/lodash/_mapCacheSet.js","webpack://test1/./node_modules/lodash/_mapToArray.js","webpack://test1/./node_modules/lodash/_matchesStrictComparable.js","webpack://test1/./node_modules/lodash/_memoizeCapped.js","webpack://test1/./node_modules/lodash/_nativeCreate.js","webpack://test1/./node_modules/lodash/_nativeKeys.js","webpack://test1/./node_modules/lodash/_nodeUtil.js","webpack://test1/./node_modules/lodash/_objectToString.js","webpack://test1/./node_modules/lodash/_overArg.js","webpack://test1/./node_modules/lodash/_overRest.js","webpack://test1/./node_modules/lodash/_root.js","webpack://test1/./node_modules/lodash/_setCacheAdd.js","webpack://test1/./node_modules/lodash/_setCacheHas.js","webpack://test1/./node_modules/lodash/_setToArray.js","webpack://test1/./node_modules/lodash/_setToString.js","webpack://test1/./node_modules/lodash/_shortOut.js","webpack://test1/./node_modules/lodash/_stackClear.js","webpack://test1/./node_modules/lodash/_stackDelete.js","webpack://test1/./node_modules/lodash/_stackGet.js","webpack://test1/./node_modules/lodash/_stackHas.js","webpack://test1/./node_modules/lodash/_stackSet.js","webpack://test1/./node_modules/lodash/_strictIndexOf.js","webpack://test1/./node_modules/lodash/_stringToArray.js","webpack://test1/./node_modules/lodash/_stringToPath.js","webpack://test1/./node_modules/lodash/_toKey.js","webpack://test1/./node_modules/lodash/_toSource.js","webpack://test1/./node_modules/lodash/_trimmedEndIndex.js","webpack://test1/./node_modules/lodash/_unicodeToArray.js","webpack://test1/./node_modules/lodash/_unicodeWords.js","webpack://test1/./node_modules/lodash/camelCase.js","webpack://test1/./node_modules/lodash/capitalize.js","webpack://test1/./node_modules/lodash/constant.js","webpack://test1/./node_modules/lodash/debounce.js","webpack://test1/./node_modules/lodash/deburr.js","webpack://test1/./node_modules/lodash/differenceWith.js","webpack://test1/./node_modules/lodash/eq.js","webpack://test1/./node_modules/lodash/get.js","webpack://test1/./node_modules/lodash/hasIn.js","webpack://test1/./node_modules/lodash/identity.js","webpack://test1/./node_modules/lodash/isArguments.js","webpack://test1/./node_modules/lodash/isArray.js","webpack://test1/./node_modules/lodash/isArrayLike.js","webpack://test1/./node_modules/lodash/isArrayLikeObject.js","webpack://test1/./node_modules/lodash/isBuffer.js","webpack://test1/./node_modules/lodash/isEmpty.js","webpack://test1/./node_modules/lodash/isEqual.js","webpack://test1/./node_modules/lodash/isFunction.js","webpack://test1/./node_modules/lodash/isLength.js","webpack://test1/./node_modules/lodash/isObject.js","webpack://test1/./node_modules/lodash/isObjectLike.js","webpack://test1/./node_modules/lodash/isSymbol.js","webpack://test1/./node_modules/lodash/isTypedArray.js","webpack://test1/./node_modules/lodash/keys.js","webpack://test1/./node_modules/lodash/last.js","webpack://test1/./node_modules/lodash/lodash.js","webpack://test1/./node_modules/lodash/mapKeys.js","webpack://test1/./node_modules/lodash/memoize.js","webpack://test1/./node_modules/lodash/now.js","webpack://test1/./node_modules/lodash/orderBy.js","webpack://test1/./node_modules/lodash/property.js","webpack://test1/./node_modules/lodash/startCase.js","webpack://test1/./node_modules/lodash/stubArray.js","webpack://test1/./node_modules/lodash/stubFalse.js","webpack://test1/./node_modules/lodash/toNumber.js","webpack://test1/./node_modules/lodash/toString.js","webpack://test1/./node_modules/lodash/upperFirst.js","webpack://test1/./node_modules/lodash/words.js","webpack://test1/./node_modules/markdown-it-emoji/bare.js","webpack://test1/./node_modules/markdown-it-emoji/index.js","webpack://test1/./node_modules/markdown-it-emoji/lib/data/shortcuts.js","webpack://test1/./node_modules/markdown-it-emoji/lib/normalize_opts.js","webpack://test1/./node_modules/markdown-it-emoji/lib/render.js","webpack://test1/./node_modules/markdown-it-emoji/lib/replace.js","webpack://test1/./node_modules/markdown-it-footnote/index.js","webpack://test1/./node_modules/markdown-it-video/index.js","webpack://test1/./node_modules/markdown-it/index.js","webpack://test1/./node_modules/markdown-it/lib/common/entities.js","webpack://test1/./node_modules/markdown-it/lib/common/html_blocks.js","webpack://test1/./node_modules/markdown-it/lib/common/html_re.js","webpack://test1/./node_modules/markdown-it/lib/common/utils.js","webpack://test1/./node_modules/markdown-it/lib/helpers/index.js","webpack://test1/./node_modules/markdown-it/lib/helpers/parse_link_destination.js","webpack://test1/./node_modules/markdown-it/lib/helpers/parse_link_label.js","webpack://test1/./node_modules/markdown-it/lib/helpers/parse_link_title.js","webpack://test1/./node_modules/markdown-it/lib/index.js","webpack://test1/./node_modules/markdown-it/lib/parser_block.js","webpack://test1/./node_modules/markdown-it/lib/parser_core.js","webpack://test1/./node_modules/markdown-it/lib/parser_inline.js","webpack://test1/./node_modules/markdown-it/lib/presets/commonmark.js","webpack://test1/./node_modules/markdown-it/lib/presets/default.js","webpack://test1/./node_modules/markdown-it/lib/presets/zero.js","webpack://test1/./node_modules/markdown-it/lib/renderer.js","webpack://test1/./node_modules/markdown-it/lib/ruler.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/blockquote.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/code.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/fence.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/heading.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/hr.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/html_block.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/lheading.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/list.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/paragraph.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/reference.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/state_block.js","webpack://test1/./node_modules/markdown-it/lib/rules_block/table.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/block.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/inline.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/linkify.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/normalize.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/replacements.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/smartquotes.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/state_core.js","webpack://test1/./node_modules/markdown-it/lib/rules_core/text_join.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/autolink.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/backticks.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/balance_pairs.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/emphasis.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/entity.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/escape.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/fragments_join.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/html_inline.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/image.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/link.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/linkify.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/newline.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/state_inline.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/strikethrough.js","webpack://test1/./node_modules/markdown-it/lib/rules_inline/text.js","webpack://test1/./node_modules/markdown-it/lib/token.js","webpack://test1/./node_modules/mdurl/decode.js","webpack://test1/./node_modules/mdurl/encode.js","webpack://test1/./node_modules/mdurl/format.js","webpack://test1/./node_modules/mdurl/index.js","webpack://test1/./node_modules/mdurl/parse.js","webpack://test1/./node_modules/p-finally/index.js","webpack://test1/./node_modules/p-queue/dist/index.js","webpack://test1/./node_modules/p-queue/dist/lower-bound.js","webpack://test1/./node_modules/p-queue/dist/priority-queue.js","webpack://test1/./node_modules/p-timeout/index.js","webpack://test1/./node_modules/parse-srcset/src/parse-srcset.js","webpack://test1/./node_modules/portal-vue/dist/portal-vue.common.js","webpack://test1/./node_modules/punycode/punycode.es6.js","webpack://test1/./node_modules/sanitize-html/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/deepmerge/dist/cjs.js","webpack://test1/./node_modules/sanitize-html/node_modules/dom-serializer/lib/foreignNames.js","webpack://test1/./node_modules/sanitize-html/node_modules/dom-serializer/lib/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/domelementtype/lib/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/domhandler/lib/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/domhandler/lib/node.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/helpers.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/legacy.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/manipulation.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/querying.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/stringify.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/tagtypes.js","webpack://test1/./node_modules/sanitize-html/node_modules/domutils/lib/traversal.js","webpack://test1/./node_modules/sanitize-html/node_modules/escape-string-regexp/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/htmlparser2/lib/FeedHandler.js","webpack://test1/./node_modules/sanitize-html/node_modules/htmlparser2/lib/Parser.js","webpack://test1/./node_modules/sanitize-html/node_modules/htmlparser2/lib/Tokenizer.js","webpack://test1/./node_modules/sanitize-html/node_modules/htmlparser2/lib/index.js","webpack://test1/./node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/at-rule.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/comment.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/container.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/css-syntax-error.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/declaration.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/fromJSON.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/input.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/lazy-result.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/list.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/map-generator.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/node.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/parse.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/parser.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/postcss.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/previous-map.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/processor.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/result.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/root.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/rule.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/stringifier.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/stringify.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/symbols.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/tokenize.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/warn-once.js","webpack://test1/./node_modules/sanitize-html/node_modules/postcss/lib/warning.js","webpack://test1/./node_modules/scrollparent/scrollparent.js","webpack://test1/./node_modules/signalr/jquery.signalR.js","webpack://test1/./node_modules/sortablejs/modular/sortable.esm.js","webpack://test1/./node_modules/source-map/lib/array-set.js","webpack://test1/./node_modules/source-map/lib/base64-vlq.js","webpack://test1/./node_modules/source-map/lib/base64.js","webpack://test1/./node_modules/source-map/lib/binary-search.js","webpack://test1/./node_modules/source-map/lib/mapping-list.js","webpack://test1/./node_modules/source-map/lib/quick-sort.js","webpack://test1/./node_modules/source-map/lib/source-map-consumer.js","webpack://test1/./node_modules/source-map/lib/source-map-generator.js","webpack://test1/./node_modules/source-map/lib/source-node.js","webpack://test1/./node_modules/source-map/lib/util.js","webpack://test1/./node_modules/source-map/source-map.js","webpack://test1/./node_modules/uc.micro/categories/Cc/regex.js","webpack://test1/./node_modules/uc.micro/categories/Cf/regex.js","webpack://test1/./node_modules/uc.micro/categories/P/regex.js","webpack://test1/./node_modules/uc.micro/categories/Z/regex.js","webpack://test1/./node_modules/uc.micro/index.js","webpack://test1/./node_modules/uc.micro/properties/Any/regex.js","webpack://test1/./node_modules/v-viewer/dist/v-viewer.js","webpack://test1/./node_modules/viewerjs/dist/viewer.js","webpack://test1/./node_modules/resize-detector/esm/index.js","webpack://test1/./node_modules/vue-clamp/Clamp.js","webpack://test1/./node_modules/vue-clipboard2/vue-clipboard.js","webpack://test1/./node_modules/vue-composable/dist/vue-composable.esm-bundler.js","webpack://test1/./node_modules/vue-router/dist/vue-router.esm.js","webpack://test1/./node_modules/vue-the-mask/dist/vue-the-mask.js","webpack://test1/./node_modules/vue-timeago/dist/vue-timeago.es.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/compare_asc/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/compare_desc/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/difference_in_calendar_months/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/difference_in_milliseconds/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/difference_in_months/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/difference_in_seconds/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/distance_in_words/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/distance_in_words_to_now/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/is_date/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/locale/en/build_format_locale/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/locale/en/index.js","webpack://test1/./node_modules/vue-timeago/node_modules/date-fns/parse/index.js","webpack://test1/./node_modules/vue-upload-component/dist/vue-upload-component.js","webpack://test1/./node_modules/vue-resize/dist/vue-resize.esm.js","webpack://test1/./node_modules/vue-observe-visibility/dist/vue-observe-visibility.esm.js","webpack://test1/./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js","webpack://test1/./node_modules/vue/dist/vue.runtime.esm.js","webpack://test1/./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack://test1/./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack://test1/./node_modules/vuetify/lib/components/VAlert/VAlert.js","webpack://test1/./node_modules/vuetify/lib/mixins/scrollable/index.js","webpack://test1/./node_modules/vuetify/lib/components/VAppBar/VAppBar.js","webpack://test1/./node_modules/vuetify/lib/components/VAppBar/VAppBarNavIcon.js","webpack://test1/./node_modules/vuetify/lib/components/VApp/VApp.js","webpack://test1/./node_modules/vuetify/lib/components/VAvatar/VAvatar.js","webpack://test1/./node_modules/vuetify/lib/components/VBadge/VBadge.js","webpack://test1/./node_modules/vuetify/lib/components/VProgressCircular/index.js","webpack://test1/./node_modules/vuetify/lib/components/VBtn/VBtn.js","webpack://test1/./node_modules/vuetify/lib/components/VBtn/index.js","webpack://test1/./node_modules/vuetify/lib/components/VCard/VCard.js","webpack://test1/./node_modules/vuetify/lib/components/VCard/index.js","webpack://test1/./node_modules/vuetify/lib/components/VCheckbox/VCheckbox.js","webpack://test1/./node_modules/vuetify/lib/components/VChip/VChip.js","webpack://test1/./node_modules/vuetify/lib/components/VDialog/VDialog.js","webpack://test1/./node_modules/vuetify/lib/components/VDivider/VDivider.js","webpack://test1/./node_modules/vuetify/lib/components/VForm/VForm.js","webpack://test1/./node_modules/vuetify/lib/components/VGrid/VSpacer.js","webpack://test1/./node_modules/vuetify/lib/components/VHover/VHover.js","webpack://test1/./node_modules/vuetify/lib/components/VIcon/VIcon.js","webpack://test1/./node_modules/vuetify/lib/components/VIcon/index.js","webpack://test1/./node_modules/vuetify/lib/components/VResponsive/VResponsive.js","webpack://test1/./node_modules/vuetify/lib/components/VResponsive/index.js","webpack://test1/./node_modules/vuetify/lib/components/VImg/VImg.js","webpack://test1/./node_modules/vuetify/lib/components/VMessages/VMessages.js","webpack://test1/./node_modules/vuetify/lib/components/VMessages/index.js","webpack://test1/./node_modules/vuetify/lib/components/VInput/VInput.js","webpack://test1/./node_modules/vuetify/lib/components/VInput/index.js","webpack://test1/./node_modules/vuetify/lib/components/VItemGroup/VItemGroup.js","webpack://test1/./node_modules/vuetify/lib/components/VLabel/VLabel.js","webpack://test1/./node_modules/vuetify/lib/components/VLabel/index.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VList.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VListGroup.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VListItem.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VListItemAction.js","webpack://test1/./node_modules/vuetify/lib/components/VAvatar/index.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VListItemAvatar.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VListItemGroup.js","webpack://test1/./node_modules/vuetify/lib/components/VList/VListItemIcon.js","webpack://test1/./node_modules/vuetify/lib/components/VList/index.js","webpack://test1/./node_modules/vuetify/lib/components/VMain/VMain.js","webpack://test1/./node_modules/vuetify/lib/components/VMenu/VMenu.js","webpack://test1/./node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.js","webpack://test1/./node_modules/vuetify/lib/components/VOverlay/VOverlay.js","webpack://test1/./node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js","webpack://test1/./node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.js","webpack://test1/./node_modules/vuetify/lib/components/VSheet/VSheet.js","webpack://test1/./node_modules/vuetify/lib/components/VSheet/index.js","webpack://test1/./node_modules/vuetify/lib/components/VSkeletonLoader/VSkeletonLoader.js","webpack://test1/./node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.js","webpack://test1/./node_modules/vuetify/lib/components/VSnackbar/VSnackbar.js","webpack://test1/./node_modules/vuetify/lib/components/VTabs/VTab.js","webpack://test1/./node_modules/vuetify/lib/components/VWindow/VWindowItem.js","webpack://test1/./node_modules/vuetify/lib/components/VTabs/VTabItem.js","webpack://test1/./node_modules/vuetify/lib/components/VTabs/VTabsBar.js","webpack://test1/./node_modules/vuetify/lib/components/VWindow/VWindow.js","webpack://test1/./node_modules/vuetify/lib/components/VTabs/VTabsItems.js","webpack://test1/./node_modules/vuetify/lib/components/VTabs/VTabsSlider.js","webpack://test1/./node_modules/vuetify/lib/components/VTabs/VTabs.js","webpack://test1/./node_modules/vuetify/lib/components/VCounter/VCounter.js","webpack://test1/./node_modules/vuetify/lib/components/VCounter/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/intersectable/index.js","webpack://test1/./node_modules/vuetify/lib/components/VTextField/VTextField.js","webpack://test1/./node_modules/vuetify/lib/components/VTextarea/VTextarea.js","webpack://test1/./node_modules/vuetify/lib/components/VThemeProvider/VThemeProvider.js","webpack://test1/./node_modules/vuetify/lib/components/VToolbar/VToolbar.js","webpack://test1/./node_modules/vuetify/lib/components/VToolbar/index.js","webpack://test1/./node_modules/vuetify/lib/components/VTooltip/VTooltip.js","webpack://test1/./node_modules/vuetify/lib/components/transitions/createTransition.js","webpack://test1/./node_modules/vuetify/lib/components/transitions/expand-transition.js","webpack://test1/./node_modules/vuetify/lib/components/transitions/index.js","webpack://test1/./node_modules/vuetify/lib/directives/click-outside/index.js","webpack://test1/./node_modules/vuetify/lib/directives/intersect/index.js","webpack://test1/./node_modules/vuetify/lib/directives/resize/index.js","webpack://test1/./node_modules/vuetify/lib/directives/ripple/index.js","webpack://test1/./node_modules/vuetify/lib/directives/scroll/index.js","webpack://test1/./node_modules/vuetify/lib/directives/touch/index.js","webpack://test1/./node_modules/vuetify/lib/install.js","webpack://test1/./node_modules/vuetify/lib/locale/en.js","webpack://test1/./node_modules/vuetify/lib/presets/default/index.js","webpack://test1/./node_modules/vuetify/lib/services/service/index.js","webpack://test1/./node_modules/vuetify/lib/services/presets/index.js","webpack://test1/./node_modules/vuetify/lib/services/application/index.js","webpack://test1/./node_modules/vuetify/lib/services/breakpoint/index.js","webpack://test1/./node_modules/vuetify/lib/services/goto/easing-patterns.js","webpack://test1/./node_modules/vuetify/lib/services/goto/util.js","webpack://test1/./node_modules/vuetify/lib/services/goto/index.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/mdi-svg.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/md.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/mdi.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/fa.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/fa4.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/fa-svg.js","webpack://test1/./node_modules/vuetify/lib/services/icons/presets/index.js","webpack://test1/./node_modules/vuetify/lib/services/icons/index.js","webpack://test1/./node_modules/vuetify/lib/services/lang/index.js","webpack://test1/./node_modules/vuetify/lib/util/color/transformCIELAB.js","webpack://test1/./node_modules/vuetify/lib/services/theme/utils.js","webpack://test1/./node_modules/vuetify/lib/services/theme/index.js","webpack://test1/./node_modules/vuetify/lib/framework.js","webpack://test1/./node_modules/vuetify/lib/mixins/activatable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/applicationable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/binds-attrs/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/bootable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/colorable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/comparable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/delayable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/dependent/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/detachable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/elevatable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/groupable/index.js","webpack://test1/./node_modules/vuetify/lib/components/VProgressLinear/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/loadable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/measurable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/menuable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/mobile/index.js","webpack://test1/./node_modules/vuetify/lib/components/VOverlay/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/overlayable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/positionable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/proxyable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/registrable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/returnable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/rippleable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/roundable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/routable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/selectable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/sizeable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/ssr-bootable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/stackable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/themeable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/toggleable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/transitionable/index.js","webpack://test1/./node_modules/vuetify/lib/mixins/validatable/index.js","webpack://test1/./node_modules/vuetify/lib/util/colorUtils.js","webpack://test1/./node_modules/vuetify/lib/util/color/transformSRGB.js","webpack://test1/./node_modules/vuetify/lib/util/colors.js","webpack://test1/./node_modules/vuetify/lib/util/console.js","webpack://test1/./node_modules/vuetify/lib/util/helpers.js","webpack://test1/./node_modules/vuetify/lib/util/mergeData.js","webpack://test1/./node_modules/vuetify/lib/util/mixins.js","webpack://test1/./node_modules/core-js/internals/a-callable.js","webpack://test1/./node_modules/core-js/internals/a-set.js","webpack://test1/./node_modules/core-js/internals/an-instance.js","webpack://test1/./node_modules/core-js/internals/an-object.js","webpack://test1/./node_modules/core-js/internals/array-includes.js","webpack://test1/./node_modules/core-js/internals/array-set-length.js","webpack://test1/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://test1/./node_modules/core-js/internals/classof-raw.js","webpack://test1/./node_modules/core-js/internals/classof.js","webpack://test1/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://test1/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://test1/./node_modules/core-js/internals/create-iter-result-object.js","webpack://test1/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://test1/./node_modules/core-js/internals/create-property-descriptor.js","webpack://test1/./node_modules/core-js/internals/create-property.js","webpack://test1/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://test1/./node_modules/core-js/internals/define-built-in.js","webpack://test1/./node_modules/core-js/internals/define-built-ins.js","webpack://test1/./node_modules/core-js/internals/define-global-property.js","webpack://test1/./node_modules/core-js/internals/descriptors.js","webpack://test1/./node_modules/core-js/internals/document-create-element.js","webpack://test1/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://test1/./node_modules/core-js/internals/enum-bug-keys.js","webpack://test1/./node_modules/core-js/internals/environment-user-agent.js","webpack://test1/./node_modules/core-js/internals/environment-v8-version.js","webpack://test1/./node_modules/core-js/internals/export.js","webpack://test1/./node_modules/core-js/internals/fails.js","webpack://test1/./node_modules/core-js/internals/function-bind-context.js","webpack://test1/./node_modules/core-js/internals/function-bind-native.js","webpack://test1/./node_modules/core-js/internals/function-call.js","webpack://test1/./node_modules/core-js/internals/function-name.js","webpack://test1/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://test1/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://test1/./node_modules/core-js/internals/function-uncurry-this.js","webpack://test1/./node_modules/core-js/internals/get-built-in.js","webpack://test1/./node_modules/core-js/internals/get-iterator-direct.js","webpack://test1/./node_modules/core-js/internals/get-iterator-method.js","webpack://test1/./node_modules/core-js/internals/get-iterator.js","webpack://test1/./node_modules/core-js/internals/get-method.js","webpack://test1/./node_modules/core-js/internals/get-set-record.js","webpack://test1/./node_modules/core-js/internals/global-this.js","webpack://test1/./node_modules/core-js/internals/has-own-property.js","webpack://test1/./node_modules/core-js/internals/hidden-keys.js","webpack://test1/./node_modules/core-js/internals/html.js","webpack://test1/./node_modules/core-js/internals/ie8-dom-define.js","webpack://test1/./node_modules/core-js/internals/indexed-object.js","webpack://test1/./node_modules/core-js/internals/inspect-source.js","webpack://test1/./node_modules/core-js/internals/internal-state.js","webpack://test1/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://test1/./node_modules/core-js/internals/is-array.js","webpack://test1/./node_modules/core-js/internals/is-callable.js","webpack://test1/./node_modules/core-js/internals/is-forced.js","webpack://test1/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://test1/./node_modules/core-js/internals/is-object.js","webpack://test1/./node_modules/core-js/internals/is-pure.js","webpack://test1/./node_modules/core-js/internals/is-symbol.js","webpack://test1/./node_modules/core-js/internals/iterate-simple.js","webpack://test1/./node_modules/core-js/internals/iterate.js","webpack://test1/./node_modules/core-js/internals/iterator-close.js","webpack://test1/./node_modules/core-js/internals/iterator-create-proxy.js","webpack://test1/./node_modules/core-js/internals/iterator-map.js","webpack://test1/./node_modules/core-js/internals/iterators-core.js","webpack://test1/./node_modules/core-js/internals/iterators.js","webpack://test1/./node_modules/core-js/internals/length-of-array-like.js","webpack://test1/./node_modules/core-js/internals/make-built-in.js","webpack://test1/./node_modules/core-js/internals/math-trunc.js","webpack://test1/./node_modules/core-js/internals/object-create.js","webpack://test1/./node_modules/core-js/internals/object-define-properties.js","webpack://test1/./node_modules/core-js/internals/object-define-property.js","webpack://test1/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://test1/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://test1/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://test1/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://test1/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://test1/./node_modules/core-js/internals/object-keys-internal.js","webpack://test1/./node_modules/core-js/internals/object-keys.js","webpack://test1/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://test1/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://test1/./node_modules/core-js/internals/own-keys.js","webpack://test1/./node_modules/core-js/internals/require-object-coercible.js","webpack://test1/./node_modules/core-js/internals/set-clone.js","webpack://test1/./node_modules/core-js/internals/set-difference.js","webpack://test1/./node_modules/core-js/internals/set-helpers.js","webpack://test1/./node_modules/core-js/internals/set-intersection.js","webpack://test1/./node_modules/core-js/internals/set-is-disjoint-from.js","webpack://test1/./node_modules/core-js/internals/set-is-subset-of.js","webpack://test1/./node_modules/core-js/internals/set-is-superset-of.js","webpack://test1/./node_modules/core-js/internals/set-iterate.js","webpack://test1/./node_modules/core-js/internals/set-method-accept-set-like.js","webpack://test1/./node_modules/core-js/internals/set-size.js","webpack://test1/./node_modules/core-js/internals/set-symmetric-difference.js","webpack://test1/./node_modules/core-js/internals/set-union.js","webpack://test1/./node_modules/core-js/internals/shared-key.js","webpack://test1/./node_modules/core-js/internals/shared-store.js","webpack://test1/./node_modules/core-js/internals/shared.js","webpack://test1/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://test1/./node_modules/core-js/internals/to-absolute-index.js","webpack://test1/./node_modules/core-js/internals/to-indexed-object.js","webpack://test1/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://test1/./node_modules/core-js/internals/to-length.js","webpack://test1/./node_modules/core-js/internals/to-object.js","webpack://test1/./node_modules/core-js/internals/to-primitive.js","webpack://test1/./node_modules/core-js/internals/to-property-key.js","webpack://test1/./node_modules/core-js/internals/to-string-tag-support.js","webpack://test1/./node_modules/core-js/internals/to-string.js","webpack://test1/./node_modules/core-js/internals/try-to-string.js","webpack://test1/./node_modules/core-js/internals/uid.js","webpack://test1/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://test1/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://test1/./node_modules/core-js/internals/validate-arguments-length.js","webpack://test1/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://test1/./node_modules/core-js/internals/well-known-symbol.js","webpack://test1/./node_modules/core-js/modules/es.array.push.js","webpack://test1/./node_modules/core-js/modules/es.iterator.constructor.js","webpack://test1/./node_modules/core-js/modules/es.iterator.filter.js","webpack://test1/./node_modules/core-js/modules/es.iterator.find.js","webpack://test1/./node_modules/core-js/modules/es.iterator.for-each.js","webpack://test1/./node_modules/core-js/modules/es.iterator.map.js","webpack://test1/./node_modules/core-js/modules/es.iterator.some.js","webpack://test1/./node_modules/core-js/modules/es.set.difference.v2.js","webpack://test1/./node_modules/core-js/modules/es.set.intersection.v2.js","webpack://test1/./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js","webpack://test1/./node_modules/core-js/modules/es.set.is-subset-of.v2.js","webpack://test1/./node_modules/core-js/modules/es.set.is-superset-of.v2.js","webpack://test1/./node_modules/core-js/modules/es.set.symmetric-difference.v2.js","webpack://test1/./node_modules/core-js/modules/es.set.union.v2.js","webpack://test1/./node_modules/core-js/modules/esnext.iterator.constructor.js","webpack://test1/./node_modules/core-js/modules/esnext.iterator.filter.js","webpack://test1/./node_modules/core-js/modules/esnext.iterator.find.js","webpack://test1/./node_modules/core-js/modules/esnext.iterator.for-each.js","webpack://test1/./node_modules/core-js/modules/esnext.iterator.map.js","webpack://test1/./node_modules/core-js/modules/esnext.iterator.some.js","webpack://test1/./node_modules/core-js/modules/web.url-search-params.delete.js","webpack://test1/./node_modules/core-js/modules/web.url-search-params.has.js","webpack://test1/./node_modules/core-js/modules/web.url-search-params.size.js","webpack://test1/./node_modules/nanoid/non-secure/index.cjs","webpack://test1/./node_modules/@fortawesome/free-brands-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/pro-duotone-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/pro-light-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/pro-regular-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/pro-solid-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/pro-thin-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/sharp-light-svg-icons/index.mjs","webpack://test1/./node_modules/@fortawesome/sharp-regular-svg-icons/index.mjs","webpack://test1/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://test1/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://test1/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://test1/./node_modules/@babel/runtime/helpers/esm/defineProperty.js"],"sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bugsnag = f()}})(function(){var define,module,exports;\nvar _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'];\n\n// Array#reduce\nvar _$reduce_17 = function (arr, fn, accum) {\n var val = accum;\n\n for (var i = 0, len = arr.length; i < len; i++) {\n val = fn(val, arr[i], i, arr);\n }\n\n return val;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#filter\n\n\nvar _$filter_12 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#includes\n\n\nvar _$includes_13 = function (arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n};\n\n// Array#isArray\nvar _$isArray_14 = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar _hasDontEnumBug = !{\n toString: null\n}.propertyIsEnumerable('toString');\n\nvar _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; // Object#keys\n\nvar _$keys_15 = function (obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n\n if (!_hasDontEnumBug) return result;\n\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n\n return result;\n};\n\nvar _$intRange_24 = function (min, max) {\n if (min === void 0) {\n min = 1;\n }\n\n if (max === void 0) {\n max = Infinity;\n }\n\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n};\n\n/* removed: var _$filter_12 = require('../es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('../es-utils/is-array'); */;\n\nvar _$listOfFunctions_25 = function (value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n};\n\nvar _$stringWithLength_26 = function (value) {\n return typeof value === 'string' && !!value.length;\n};\n\nvar _$config_5 = {};\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$intRange_24 = require('./lib/validators/int-range'); */;\n\n/* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */;\n\n/* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar defaultErrorTypes = function () {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n};\n\n_$config_5.schema = {\n apiKey: {\n defaultValue: function () {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function () {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function (value) {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false;\n var providedKeys = _$keys_15(value);\n var defaultKeys = _$keys_15(defaultErrorTypes()); // ensure it only has a subset of the allowed keys\n\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false; // ensure all of the values are boolean\n\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function () {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function (val) {\n return (// first, ensure it's an object\n val && typeof val === 'object' && // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) && // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function (val) {\n return true;\n },\n message: 'should be true|false',\n validate: function (val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function () {\n return null;\n },\n message: 'should be an array of strings',\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function () {\n return 'production';\n },\n message: 'should be a string',\n validate: function (value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function () {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function (value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function () {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function (value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object',\n validate: function (value) {\n return typeof value === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function (value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function () {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && typeof p === 'object' && typeof p.load === 'function';\n }).length;\n }\n }\n};\n\n// extends helper from babel\n// https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\nvar _$assign_11 = 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/* removed: var _$reduce_17 = require('./reduce'); */; // Array#map\n\n\nvar _$map_16 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n};\n\nvar schema = _$config_5.schema;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function () {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function () {\n return (// set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n};\n\nvar getPrefixedConsole = function () {\n var logger = {};\n var consoleLog = console.log;\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n return logger;\n};\n\nvar Breadcrumb =\n/*#__PURE__*/\nfunction () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n\n var _proto = Breadcrumb.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n\n return Breadcrumb;\n}();\n\nvar _$Breadcrumb_3 = Breadcrumb;\n\nvar _$stackframe_34 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof _$stackframe_34 === 'object') {\n _$stackframe_34 = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n\n return StackFrame;\n});\n\nvar _$errorStackParser_31 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof _$errorStackParser_31 === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '('); // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/); // remove the parenthesized location from the line, if it was matched\n\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1); // if a location was matched, pass it to extractLocation() otherwise pop the last token\n\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});\n\nvar _$errorStackParser_10 = _$errorStackParser_31;\n\n// Given `err` which may be an error, does it have a stack property which is a string?\nvar _$hasStack_18 = function (err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n};\n\n/**\n * Expose `isError`.\n */\nvar _$isError_32 = isError;\n/**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\nfunction isError(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n\n case '[object Exception]':\n return true;\n\n case '[object DOMException]':\n return true;\n\n default:\n return value instanceof Error;\n }\n}\n\nvar _$iserror_19 = _$isError_32;\n\nvar _$jsRuntime_20 = \"yes\" ? 'browserjs' : typeof navigator !== 'undefined' && navigator.product === 'ReactNative' ? typeof Expo !== 'undefined' ? 'expojs' : 'reactnativejs' : 'nodejs';\n\n/* removed: var _$assign_11 = require('./es-utils/assign'); */;\n\nvar add = function (state, section, keyOrObj, maybeVal) {\n var _updates;\n\n if (!section) return;\n var updates; // addMetadata(\"section\", null) -> clears section\n\n if (keyOrObj === null) return clear(state, section); // normalise the two supported input types into object form\n\n if (typeof keyOrObj === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates); // exit if we don't have an updates object at this point\n\n if (!updates) return; // ensure a section with this name exists\n\n if (!state[section]) state[section] = {}; // merge the updates with the existing section\n\n state[section] = _$assign_11({}, state[section], updates);\n};\n\nvar get = function (state, section, key) {\n if (typeof section !== 'string') return undefined;\n\n if (!key) {\n return state[section];\n }\n\n if (state[section]) {\n return state[section][key];\n }\n\n return undefined;\n};\n\nvar clear = function (state, section, key) {\n if (typeof section !== 'string') return; // clear an entire section\n\n if (!key) {\n delete state[section];\n return;\n } // clear a single value from a section\n\n\n if (state[section]) {\n delete state[section][key];\n }\n};\n\nvar _$metadataDelegate_22 = {\n add: add,\n get: get,\n clear: clear\n};\n\nvar _$stackGenerator_33 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof _$stackGenerator_33 === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n\n return stack;\n }\n };\n});\n\n/* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */;\n\n/* removed: var _$stackGenerator_33 = require('stack-generator'); */;\n\n/* removed: var _$hasStack_18 = require('./lib/has-stack'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$jsRuntime_20 = require('./lib/js-runtime'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$iserror_19 = require('./lib/iserror'); */;\n\nvar Event =\n/*#__PURE__*/\nfunction () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this._metadata = {};\n this._user = {};\n this._session = undefined;\n this.errors = [{\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: _$jsRuntime_20,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame); // don't include a stackframe if none of its properties are defined\n\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n }]; // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session\n };\n };\n\n return Event;\n}(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n// and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n\n\nvar formatStackframe = function (frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }; // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n\n return f;\n};\n\nvar normaliseFunctionName = function (name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n};\n\nvar defaultHandledState = function () {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n};\n\nvar ensureString = function (str) {\n return typeof str === 'string' ? str : '';\n}; // Helpers\n\n\nEvent.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_18(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip); // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n};\n\nEvent.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n\n var event;\n\n try {\n var stacktrace = Event.getStacktrace(error, // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0, // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n\n return event;\n};\n\nvar makeSerialisable = function (err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n};\n\nvar normaliseError = function (maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n\n var createAndLogInputError = function (reason) {\n if (logger) logger.warn(component + \" received a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" received a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n }; // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n\n\n if (!tolerateNonErrors) {\n if (_$iserror_19(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(typeof maybeError);\n internalFrames += 2;\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n\n case 'object':\n if (maybeError !== null && _$iserror_19(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n\n break;\n\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n\n if (!_$hasStack_18(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_18(e)) {\n error = e; // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n\n internalFrames = 1;\n }\n }\n }\n\n return [error, internalFrames];\n};\n\nvar hasNecessaryFields = function (error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n};\n\nvar _$Event_6 = Event;\n\n// This is a heavily modified/simplified version of\n// https://github.com/othiym23/async-some\n// with the logic flipped so that it is akin to the\n// synchronous \"every\" method instead of \"some\".\n// run the asynchronous test function (fn) over each item in the array (arr)\n// in series until:\n// - fn(item, cb) => calls cb(null, false)\n// - or the end of the array is reached\n// the callback (cb) will be passed (null, false) if any of the items in arr\n// caused fn to call back with false, otherwise it will be passed (null, true)\nvar _$asyncEvery_7 = function (arr, fn, cb) {\n var index = 0;\n\n var next = function () {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n\n next();\n};\n\n/* removed: var _$asyncEvery_7 = require('./async-every'); */;\n\nvar _$callbackRunner_9 = function (callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function (fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event); // check if it returned a \"thenable\" (promise)\n\n if (ret && typeof ret.then === 'function') {\n return ret.then( // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n }, // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n\n return cb(null, ret);\n } // if function is async…\n\n\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n};\n\nvar _$syncCallbackRunner_23 = function (callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n\n while (!ignore) {\n if (!cbs.length) break;\n\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n\n return ignore;\n};\n\nvar _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_29 = require('./pad.js'); */;\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\n\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\n\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n\nvar _$fingerprint_28 = function fingerprint() {\n return clientId;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_29 = require('./lib/pad.js'); */;\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n}\n\nfunction safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n}\n\nfunction cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = _$fingerprint_28;\nvar _$cuid_27 = cuid;\n\n/* removed: var _$cuid_27 = require('@bugsnag/cuid'); */;\n\nvar Session =\n/*#__PURE__*/\nfunction () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n\n var _proto = Session.prototype;\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n\n return Session;\n}();\n\nvar _$Session_35 = Session;\n\n/* removed: var _$config_5 = require('./config'); */;\n\n/* removed: var _$Event_6 = require('./event'); */;\n\n/* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */;\n\n/* removed: var _$Session_35 = require('./session'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar noop = function () {};\n\nvar Client =\n/*#__PURE__*/\nfunction () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n\n if (internalPlugins === void 0) {\n internalPlugins = [];\n }\n\n // notifier id\n this._notifier = notifier; // intialise opts and config\n\n this._config = {};\n this._schema = schema; // i/o\n\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n }; // plugins\n\n this._plugins = {}; // state\n\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._context = undefined;\n this._user = {}; // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }; // expose internal constructors\n\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n }); // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n\n var _proto = Client.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.getContext = function getContext() {\n return this._context;\n };\n\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema); // accumulate configuration and error messages\n\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set'); // warn about an apikey that is not of the expected format\n\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n } // update and elevate some options\n\n\n this._metadata = _$assign_11({}, config.metadata);\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger; // add callbacks\n\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession); // finally warn about any invalid config where we fell back to the default\n\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n\n return config;\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this); // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user); // run onSession callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n\n return this;\n }\n\n return this._sessionDelegate.startSession(this, session);\n };\n\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn) {\n this._cbs.b.push(fn);\n };\n\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}; // if no message, discard\n\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type); // run onBreadcrumb callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n\n return;\n } // push the valid crumb onto the queue and maintain the length\n\n\n this._breadcrumbs.push(crumb);\n\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n\n _proto.notify = function notify(maybeError, onError, cb) {\n if (cb === void 0) {\n cb = noop;\n }\n\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n\n this._notify(event, onError, cb);\n };\n\n _proto._notify = function _notify(event, onError, cb) {\n var _this2 = this;\n\n if (cb === void 0) {\n cb = noop;\n }\n\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice();\n\n if (this._session) {\n this._session._track(event);\n\n event._session = this._session;\n } // exit early if events should not be sent on the current releaseStage\n\n\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n\n return cb(null, event);\n }\n\n var originalSeverity = event.severity;\n\n var onCallbackError = function (err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n\n _this2._logger.error(err);\n };\n\n var callbacks = [].concat(this._cbs.e).concat(onError);\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n\n return cb(null, event);\n }\n\n if (_$includes_13(_this2._config.enabledBreadcrumbTypes, 'error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return cb(err, event);\n });\n });\n };\n\n return Client;\n}();\n\nvar generateConfigErrorMessage = function (errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n};\n\nvar stringify = function (val) {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n\n default:\n return String(val);\n }\n};\n\nvar _$Client_4 = Client;\n\nvar _$safeJsonStringify_30 = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n};\n\nvar MAX_DEPTH = 20;\nvar MAX_EDGES = 25000;\nvar MIN_PRESERVED_DEPTH = 8;\nvar REPLACEMENT_NODE = '...';\n\nfunction __isError_30(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n}\n\nfunction throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n}\n\nfunction find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n\n return false;\n} // returns true if the string `path` starts with any of the provided `paths`\n\n\nfunction isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n\n return false;\n}\n\nfunction shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i] === key) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n\n return false;\n}\n\nfunction __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n\nfunction safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n}\n\nfunction prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n\n var edges = 0;\n\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || typeof obj !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n\n var er = __isError_30(obj);\n\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n\n if (__isArray_30(obj)) {\n var aResult = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n\n seen.pop();\n return aResult;\n }\n\n var result = {};\n\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n\n seen.pop();\n return result;\n }\n\n return visit(obj, []);\n}\n\nvar _$jsonPayload_21 = {};\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nvar EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n\n_$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit');\n }\n\n return payload;\n};\n\n_$jsonPayload_21.session = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null);\n if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit');\n return payload;\n};\n\nvar _$delivery_36 = {};\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\n_$delivery_36 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'notify', '4', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.event(event, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n }\n };\n};\n\nvar getApiUrl = function (config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n};\n\nvar matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n};\n\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\nvar _$delivery_37 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.event(event, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n};\n\n/*\n * Sets the default context to be the current URL\n */\nvar _$context_38 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Automatically detects browser device details\n */\n\n\nvar _$device_39 = function (nav) {\n if (nav === void 0) {\n nav = navigator;\n }\n\n return {\n load: function (client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device);\n }); // add time just as the event is sent\n\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n }, true);\n }\n };\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Sets the event request: { url } to be the current href\n */\n\n\nvar _$request_40 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n};\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n\nvar _$session_41 = {\n load: function (client) {\n client._sessionDelegate = sessionDelegate;\n }\n};\nvar sessionDelegate = {\n startSession: function (client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null; // exit early if the current releaseStage is not enabled\n\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n\n return sessionClient;\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n\n return sessionClient;\n },\n resumeSession: function (client) {\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n } else {\n return client.startSession();\n }\n },\n pauseSession: function (client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Prevent collection of user IPs\n */\n\n\nvar _$clientIp_42 = {\n load: function (client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n }\n }\n};\n\nvar _$consoleBreadcrumbs_43 = {};\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n * Leaves breadcrumbs when console log methods are called\n */\n\n\n_$consoleBreadcrumbs_43.load = function (client) {\n var isDev = /^dev(elopment)?$/.test(client._config.releaseStage);\n if (!client._config.enabledBreadcrumbTypes || !_$includes_13(client._config.enabledBreadcrumbTypes, 'log') || isDev) return;\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]'; // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n\n try {\n stringified = String(arg);\n } catch (e) {} // if it stringifies to [object Object] attempt to JSON stringify\n\n\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n};\n\nif (\"production\" !== 'production') {\n _$consoleBreadcrumbs_43.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n}\n\nvar CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n});\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n\nvar MAX_LINE_LENGTH = 200;\nvar MAX_SCRIPT_LENGTH = 500000;\n\nvar _$inlineScriptContent_44 = function (doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = '';\n var DOMContentLoaded = false;\n\n var getHtml = function () {\n return doc.documentElement.outerHTML;\n }; // get whatever HTML exists at this point in time\n\n\n html = getHtml();\n var prev = doc.onreadystatechange; // then update it when the DOM content has loaded\n\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n\n var _lastScript = null;\n\n var updateLastScript = function (script) {\n _lastScript = script;\n };\n\n var getCurrentScript = function () {\n var script = doc.currentScript || _lastScript;\n\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n\n return script;\n };\n\n var addSurroundingCode = function (lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml(); // simulate the raw html\n\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0]; // if frame.file exists and is not the original location of the page, this can't be an inline script\n\n if (frame && frame.file && frame.file.replace(/#.*$/, '') !== originalLocation.replace(/#.*$/, '')) return; // grab the last script known to have run\n\n var currentScript = getCurrentScript();\n\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH));\n } // only attempt to grab some surrounding code if we have a line number\n\n\n if (!frame || !frame.lineNumber) return;\n frame.code = addSurroundingCode(frame.lineNumber);\n }, true); // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function () {\n return args[0];\n },\n replace: function (fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0]; // Proxy all the host objects whose prototypes have an addEventListener function\n\n\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript(); // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script); // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {} // swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n // IE8 doesn't let you call .apply() on setTimeout/setInterval\n\n\n if (fn.apply) return fn.apply(this, args);\n\n switch (args.length) {\n case 1:\n return fn(args[0]);\n\n case 2:\n return fn(args[0], args[1]);\n\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nfunction __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n}\n\nfunction eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n}\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\n\n\nvar _$interactionBreadcrumbs_45 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._config.enabledBreadcrumbTypes || !_$includes_13(client._config.enabledBreadcrumbTypes, 'user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n}; // extract text content from a element\n\n\nvar getNodeText = function (el) {\n var text = el.textContent || el.innerText || '';\n if (!text && (el.type === 'submit' || el.type === 'button')) text = el.value;\n text = text.replace(/^\\s+|\\s+$/g, ''); // trim whitespace\n\n return truncate(text, 140);\n}; // Create a label from tagname, id and css class of the element\n\n\nfunction getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.')); // Can't get much more advanced with the current browser\n\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n } // try to get a more specific selector if this one matches more than one element\n\n\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join(''); // try prepending the parent node selector\n\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n}\n\nfunction truncate(value, length) {\n var ommision = '(...)';\n if (value && value.length <= length) return value;\n return value.slice(0, length - ommision.length) + ommision;\n}\n\nvar _$navigationBreadcrumbs_46 = {};\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n* Leaves breadcrumbs when navigation methods are called or events are emitted\n*/\n\n\n_$navigationBreadcrumbs_46 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._config.enabledBreadcrumbTypes || !_$includes_13(client._config.enabledBreadcrumbTypes, 'navigation')) return; // returns a function that will drop a breadcrumb with a given name\n\n var drop = function (name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n }; // simple drops – just names, no meta\n\n\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true); // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n }); // hashchange has some metadata that we care about\n\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true); // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n client.leaveBreadcrumb('Bugsnag loaded', {}, 'navigation');\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n }\n\n return plugin;\n};\n\nif (\"production\" !== 'production') {\n _$navigationBreadcrumbs_46.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n} // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n// just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n\n\nvar relativeLocation = function (url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n};\n\nvar stateChangeToMetadata = function (win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n};\n\nvar wrapHistoryFn = function (client, target, fn, win) {\n var orig = target[fn];\n\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation'); // if throttle plugin is in use, reset the event sent count\n\n if (typeof client.resetEventCount === 'function') client.resetEventCount(); // if the client is operating in auto session-mode, a new route should trigger a new session\n\n if (client._config.autoTrackSessions) client.startSession(); // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n};\n\nvar getCurrentState = function (win) {\n try {\n return win.history.state;\n } catch (e) {}\n};\n\nvar BREADCRUMB_TYPE = 'request'; // keys to safely store metadata on the request object\n\nvar REQUEST_SETUP_KEY = 'BS~~S';\nvar REQUEST_URL_KEY = 'BS~~U';\nvar REQUEST_METHOD_KEY = 'BS~~M';\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n * Leaves breadcrumbs when network requests occur\n */\n\n\nvar _$networkBreadcrumbs_47 = function (_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n\n if (win === void 0) {\n win = window;\n }\n\n var restoreFunctions = [];\n var plugin = {\n load: function (client) {\n if (!client._config.enabledBreadcrumbTypes || !_$includes_13(client._config.enabledBreadcrumbTypes, 'request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch(); // XMLHttpRequest monkey patch\n\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open; // override native open()\n\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n // store url and HTTP method for later\n this[REQUEST_URL_KEY] = url;\n this[REQUEST_METHOD_KEY] = method; // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n\n if (this[REQUEST_SETUP_KEY]) {\n this.removeEventListener('load', handleXHRLoad);\n this.removeEventListener('error', handleXHRError);\n } // attach load event listener\n\n\n this.addEventListener('load', handleXHRLoad); // attach error event listener\n\n this.addEventListener('error', handleXHRError);\n this[REQUEST_SETUP_KEY] = true;\n nativeOpen.apply(this, arguments);\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n\n function handleXHRLoad() {\n if (_$includes_13(ignoredUrls, this[REQUEST_URL_KEY])) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n\n var metadata = {\n status: this.status,\n request: this[REQUEST_METHOD_KEY] + \" \" + this[REQUEST_URL_KEY]\n };\n\n if (this.status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n\n function handleXHRError() {\n if (_$includes_13(ignoredUrls, this[REQUEST_URL_KEY])) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n } // failed to contact server\n\n\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: this[REQUEST_METHOD_KEY] + \" \" + this[REQUEST_URL_KEY]\n }, BREADCRUMB_TYPE);\n } // window.fetch monkey patch\n\n\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url;\n\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n\n if (method === undefined) {\n method = 'GET';\n }\n\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n\n var handleFetchSuccess = function (response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n\n var handleFetchError = function (method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n\n return plugin;\n};\n\n/* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */;\n/*\n * Throttles and dedupes events\n */\n\n\nvar _$throttle_48 = {\n load: function (client) {\n // track sent events for each init of the plugin\n var n = 0; // add onError hook\n\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) return false;\n n++;\n });\n\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function () {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function (val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n};\n\nvar _$stripQueryString_49 = {};\n/*\n * Remove query strings (and fragments) from stacktraces\n */\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n_$stripQueryString_49 = {\n load: function (client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n};\n\nvar strip = _$stripQueryString_49._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n};\n\n/*\n * Automatically notifies Bugsnag when window.onerror is called\n */\nvar _$onerror_50 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event; // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, 'window onerror', 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if ( // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n typeof messageOrEvent === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error'; // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, 'window onerror', 1); // provide the original thing onerror received – not our error-like object we passed to _notify\n\n event.originalError = messageOrEvent; // include the raw input as metadata – it might contain more info than we extracted\n\n event.addMetadata('window onerror', {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, 'window onerror', 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n\n client._notify(event);\n }\n\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n}; // Sometimes the stacktrace has less information than was passed to window.onerror.\n// This function will augment the first stackframe with any useful info that was\n// received as arguments to the onerror callback.\n\n\nvar decorateStack = function (stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n};\n\nvar isActualNumber = function (n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n};\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$iserror_19 = require('@bugsnag/core/lib/iserror'); */;\n\nvar _listener;\n/*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n\n\nvar _$unhandledRejection_51 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n\n var listener = function (evt) {\n var error = evt.reason;\n var isBluebird = false; // accessing properties on evt.detail can throw errors (see #394)\n\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n\n client._notify(event, function (event) {\n if (_$iserror_19(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n\n _listener = listener;\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n\n _listener = null;\n };\n }\n\n return plugin;\n}; // The stack parser on bluebird stacks in FF get a suprious first frame:\n//\n// Error: derp\n// b@http://localhost:5000/bluebird.html:22:24\n// a@http://localhost:5000/bluebird.html:18:9\n// @http://localhost:5000/bluebird.html:14:9\n//\n// results in\n// […]\n// 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n// 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n// 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n// 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n//\n// so the following reduce/accumulator function removes such frames\n//\n// Bluebird pads method names with spaces so trim that too…\n// https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n\n\nvar fixBluebirdStacktrace = function (error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n};\n\nvar _$notifier_2 = {};\nvar name = 'Bugsnag JavaScript';\nvar version = '7.1.1';\nvar url = 'https://github.com/bugsnag/bugsnag-js';\n\n/* removed: var _$Client_4 = require('@bugsnag/core/client'); */;\n\n/* removed: var _$Event_6 = require('@bugsnag/core/event'); */;\n\n/* removed: var _$Session_35 = require('@bugsnag/core/session'); */;\n\n/* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */; // extend the base config schema with some browser-specific options\n\n\nvar __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n\n/* removed: var _$onerror_50 = require('@bugsnag/plugin-window-onerror'); */;\n\n/* removed: var _$unhandledRejection_51 = require('@bugsnag/plugin-window-unhandled-rejection'); */;\n\n/* removed: var _$device_39 = require('@bugsnag/plugin-browser-device'); */;\n\n/* removed: var _$context_38 = require('@bugsnag/plugin-browser-context'); */;\n\n/* removed: var _$request_40 = require('@bugsnag/plugin-browser-request'); */;\n\n/* removed: var _$throttle_48 = require('@bugsnag/plugin-simple-throttle'); */;\n\n/* removed: var _$consoleBreadcrumbs_43 = require('@bugsnag/plugin-console-breadcrumbs'); */;\n\n/* removed: var _$networkBreadcrumbs_47 = require('@bugsnag/plugin-network-breadcrumbs'); */;\n\n/* removed: var _$navigationBreadcrumbs_46 = require('@bugsnag/plugin-navigation-breadcrumbs'); */;\n\n/* removed: var _$interactionBreadcrumbs_45 = require('@bugsnag/plugin-interaction-breadcrumbs'); */;\n\n/* removed: var _$inlineScriptContent_44 = require('@bugsnag/plugin-inline-script-content'); */;\n\n/* removed: var _$session_41 = require('@bugsnag/plugin-browser-session'); */;\n\n/* removed: var _$clientIp_42 = require('@bugsnag/plugin-client-ip'); */;\n\n/* removed: var _$stripQueryString_49 = require('@bugsnag/plugin-strip-query-string'); */; // delivery mechanisms\n\n\n/* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */;\n\n/* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */;\n\nvar Bugsnag = {\n _client: null,\n createClient: function (opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [// add browser-specific plugins\n _$device_39(), _$context_38(), _$request_40(), _$throttle_48, _$session_41, _$clientIp_42, _$stripQueryString_49, _$onerror_50(), _$unhandledRejection_51(), _$navigationBreadcrumbs_46(), _$interactionBreadcrumbs_45(), _$networkBreadcrumbs_47(), _$consoleBreadcrumbs_43, // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_44()]; // configure a client with user supplied options\n\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n\n bugsnag._logger.debug('Loaded!');\n\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function (opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n\n return Bugsnag._client;\n }\n\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n }\n};\n_$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n\n Bugsnag._client._depth -= 1;\n return ret;\n };\n});\n_$notifier_2 = Bugsnag;\n_$notifier_2.Client = _$Client_4;\n_$notifier_2.Event = _$Event_6;\n_$notifier_2.Session = _$Session_35;\n_$notifier_2.Breadcrumb = _$Breadcrumb_3; // Export a \"default\" property for compatibility with ESM imports\n\n_$notifier_2[\"default\"] = Bugsnag;\n\nreturn _$notifier_2;\n\n});\n//# sourceMappingURL=bugsnag.js.map\n","module.exports = require('@bugsnag/browser')\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BugsnagPluginVue = f()}})(function(){var define,module,exports;\nvar _$src_1 = {};\nvar _this = this;\n\n_$src_1 =\n/*#__PURE__*/\nfunction () {\n function BugsnagPluginVue() {\n this.name = 'vue';\n this.lazy = arguments.length === 0 && !window.Vue;\n\n if (!this.lazy) {\n this.Vue = (arguments.length <= 0 ? undefined : arguments[0]) || window.Vue;\n if (!this.Vue) throw new Error('@bugsnag/plugin-vue reference to `Vue` was undefined');\n }\n }\n\n var _proto = BugsnagPluginVue.prototype;\n\n _proto.load = function load(client) {\n if (this.Vue) {\n install(this.Vue, client);\n return {\n installVueErrorHandler: function () {\n return client._logger.warn('installVueErrorHandler() was called unnecessarily');\n }\n };\n }\n\n return {\n installVueErrorHandler: function (Vue) {\n if (!Vue) client._logger.error(new Error('@bugsnag/plugin-vue reference to `Vue` was undefined'));\n install(Vue, client);\n }\n };\n };\n\n return BugsnagPluginVue;\n}();\n\nvar install = function (Vue, client) {\n var prev = Vue.config.errorHandler;\n\n var handler = function (err, vm, info) {\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event = client.Event.create(err, true, handledState, 1);\n event.addMetadata('vue', {\n errorInfo: info,\n component: vm ? formatComponentName(vm, true) : undefined,\n props: vm ? vm.$options.propsData : undefined\n });\n\n client._notify(event);\n\n if (typeof console !== 'undefined' && typeof console.error === 'function') console.error(err);\n if (typeof prev === 'function') prev.call(_this, err, vm, info);\n };\n\n Vue.config.errorHandler = handler;\n}; // taken and reworked from Vue.js source\n\n\nvar formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) return '';\n var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (name ? '<' + classify(name) + '>' : '') + (file && includeFile !== false ? ' at ' + file : '');\n}; // taken and reworked from Vue.js source\n\n\nvar classify = _$src_1.classify = function (str) {\n return str.replace(/(?:^|[-_])(\\w)/g, function (c) {\n return c.toUpperCase();\n }).replace(/[-_]/g, '');\n};\n\nreturn _$src_1;\n\n});\n//# sourceMappingURL=bugsnag-vue.js.map\n","/*!\n * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2022 Fonticons, Inc.\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\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 _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar PREFIX_TO_LONG_STYLE = {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n};\nvar LONG_STYLE_TO_PREFIX = {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n};\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa[srltdbk\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n styleDefault: 'solid',\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_config).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0);\\n animation-delay: var(--fa-animation-delay, 0);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = Object.values(PREFIX_TO_LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = Object.keys(PREFIX_TO_STYLE);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault);\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault);\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var style = PREFIX_TO_STYLE[styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[styleOrPrefix] || STYLE_TO_PREFIX[style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nfunction getCanonicalIcon(values) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var givenPrefix = null;\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE.includes(cls) ? LONG_STYLE_TO_PREFIX[cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES.indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls);\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]);\n var longPrefix = PREFIX_TO_LONG_STYLE[key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\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 var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.familyPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.0.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$2);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon, config, text } from '@fortawesome/fontawesome-svg-core';\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar humps = createCommonjsModule(function (module) {\n(function(global) {\n\n var _processKeys = function(convert, obj, options) {\n if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n return obj;\n }\n\n var output,\n i = 0,\n l = 0;\n\n if(_isArray(obj)) {\n output = [];\n for(l=obj.length; i= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = 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 styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = humps.camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n\n acc[prop] = value;\n\n return acc;\n }, {});\n}\n\nfunction classToObject(cls) {\n return cls.split(/\\s+/).reduce(function (acc, c) {\n acc[c] = true;\n\n return acc;\n }, {});\n}\n\nfunction combineClassObjects() {\n for (var _len = arguments.length, objs = Array(_len), _key = 0; _key < _len; _key++) {\n objs[_key] = arguments[_key];\n }\n\n return objs.reduce(function (acc, obj) {\n if (Array.isArray(obj)) {\n acc = acc.concat(obj);\n } else {\n acc.push(obj);\n }\n\n return acc;\n }, []);\n}\n\nfunction convert(h, element) {\n var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var children = (element.children || []).map(convert.bind(null, h));\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc['class'] = classToObject(val);\n break;\n case 'style':\n acc['style'] = styleToObject(val);\n break;\n default:\n acc.attrs[key] = val;\n }\n\n return acc;\n }, { 'class': {}, style: {}, attrs: {} });\n\n var _data$class = data.class,\n dClass = _data$class === undefined ? {} : _data$class,\n _data$style = data.style,\n dStyle = _data$style === undefined ? {} : _data$style,\n _data$attrs = data.attrs,\n dAttrs = _data$attrs === undefined ? {} : _data$attrs,\n remainingData = objectWithoutProperties(data, ['class', 'style', 'attrs']);\n\n\n if (typeof element === 'string') {\n return element;\n } else {\n return h(element.tag, _extends({\n class: combineClassObjects(mixins.class, dClass),\n style: _extends({}, mixins.style, dStyle),\n attrs: _extends({}, mixins.attrs, dAttrs)\n }, remainingData, {\n props: props\n }), children);\n }\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction objectWithKey(key, value) {\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? defineProperty({}, key, value) : {};\n}\n\nfunction classList(props) {\n var _classes;\n\n var classes = (_classes = {\n 'fa-spin': props.spin,\n 'fa-spin-pulse': props.spinPulse,\n 'fa-spin-reverse': props.spinReverse,\n 'fa-pulse': props.pulse,\n 'fa-beat': props.beat,\n 'fa-fade': props.fade,\n 'fa-flash': props.flash,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-li': props.listItem,\n 'fa-inverse': props.inverse,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both'\n }, defineProperty(_classes, 'fa-' + props.size, props.size !== null), defineProperty(_classes, 'fa-rotate-' + props.rotation, props.rotation !== null), defineProperty(_classes, 'fa-pull-' + props.pull, props.pull !== null), defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes);\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\nfunction addStaticClass(to, what) {\n var val = (to || '').length === 0 ? [] : [to];\n\n return val.concat(what).join(' ');\n}\n\nfunction normalizeIconArgs(icon$$1) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon$$1 && (typeof icon$$1 === 'undefined' ? 'undefined' : _typeof(icon$$1)) === 'object' && icon$$1.prefix && icon$$1.iconName && icon$$1.icon) {\n return icon$$1;\n }\n\n if (parse.icon) {\n return parse.icon(icon$$1);\n }\n\n if (icon$$1 === null) {\n return null;\n }\n\n if ((typeof icon$$1 === 'undefined' ? 'undefined' : _typeof(icon$$1)) === 'object' && icon$$1.prefix && icon$$1.iconName) {\n return icon$$1;\n }\n\n if (Array.isArray(icon$$1) && icon$$1.length === 2) {\n return { prefix: icon$$1[0], iconName: icon$$1[1] };\n }\n\n if (typeof icon$$1 === 'string') {\n return { prefix: 'fas', iconName: icon$$1 };\n }\n}\n\nvar FontAwesomeIcon = {\n name: 'FontAwesomeIcon',\n\n functional: true,\n\n props: {\n beat: {\n type: Boolean,\n default: false\n },\n border: {\n type: Boolean,\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n },\n fixedWidth: {\n type: Boolean,\n default: false\n },\n flash: {\n type: Boolean,\n default: false\n },\n flip: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['horizontal', 'vertical', 'both'].indexOf(value) > -1;\n }\n },\n icon: {\n type: [Object, Array, String],\n required: true\n },\n mask: {\n type: [Object, Array, String],\n default: null\n },\n listItem: {\n type: Boolean,\n default: false\n },\n pull: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['right', 'left'].indexOf(value) > -1;\n }\n },\n pulse: {\n type: Boolean,\n default: false\n },\n rotation: {\n type: [String, Number],\n default: null,\n validator: function validator(value) {\n return [90, 180, 270].indexOf(parseInt(value, 10)) > -1;\n }\n },\n swapOpacity: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x'].indexOf(value) > -1;\n }\n },\n spin: {\n type: Boolean,\n default: false\n },\n spinPulse: {\n type: Boolean,\n default: false\n },\n spinReverse: {\n type: Boolean,\n default: false\n },\n transform: {\n type: [String, Object],\n default: null\n },\n symbol: {\n type: [Boolean, String],\n default: false\n },\n title: {\n type: String,\n default: null\n },\n inverse: {\n type: Boolean,\n default: false\n }\n },\n\n render: function render(createElement, context) {\n var props = context.props;\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n title = props.title;\n\n var icon$$1 = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', classList(props));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(icon$$1, _extends({}, classes, transform, mask, { symbol: symbol, title: title }));\n\n if (!renderedIcon) {\n return log('Could not find one or more icon(s)', icon$$1, mask);\n }\n\n var abstract = renderedIcon.abstract;\n\n var convertCurry = convert.bind(null, createElement);\n\n return convertCurry(abstract[0], {}, context.data);\n }\n};\n\nvar FontAwesomeLayers = {\n name: 'FontAwesomeLayers',\n\n functional: true,\n\n props: {\n fixedWidth: {\n type: Boolean,\n default: false\n }\n },\n\n render: function render(createElement, context) {\n var familyPrefix = config.familyPrefix;\n var staticClass = context.data.staticClass;\n\n\n var classes = [familyPrefix + '-layers'].concat(toConsumableArray(context.props.fixedWidth ? [familyPrefix + '-fw'] : []));\n\n return createElement('div', _extends({}, context.data, {\n staticClass: addStaticClass(staticClass, classes)\n }), context.children);\n }\n};\n\nvar FontAwesomeLayersText = {\n name: 'FontAwesomeLayersText',\n\n functional: true,\n\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n transform: {\n type: [String, Object],\n default: null\n },\n counter: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['bottom-left', 'bottom-right', 'top-left', 'top-right'].indexOf(value) > -1;\n }\n }\n },\n\n render: function render(createElement, context) {\n var familyPrefix = config.familyPrefix;\n var props = context.props;\n\n\n var classes = objectWithKey('classes', [].concat(toConsumableArray(props.counter ? [familyPrefix + '-layers-counter'] : []), toConsumableArray(props.position ? [familyPrefix + '-layers-' + props.position] : [])));\n\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n\n var renderedText = text(props.value.toString(), _extends({}, transform, classes));\n\n var abstract = renderedText.abstract;\n\n\n if (props.counter) {\n abstract[0].attributes.class = abstract[0].attributes.class.replace('fa-layers-text', '');\n }\n\n var convertCurry = convert.bind(null, createElement);\n\n return convertCurry(abstract[0], {}, context.data);\n }\n};\n\nexport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText };\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n '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 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\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 '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n '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 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\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 },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '22';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjI=&utm_source=license&utm_medium=listing&utm_campaign=license-information\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: function () { }\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","/**\n * CSS Constants\n */\n/** @hidden */\nexport var root = 'e-gantt';\nexport var ganttChartPane = 'e-gantt-chart-pane';\nexport var treeGridPane = 'e-gantt-tree-grid-pane';\nexport var splitter = 'e-gantt-splitter';\nexport var ganttChart = 'e-gantt-chart';\nexport var chartBodyContainer = 'e-chart-root-container';\nexport var toolbar = 'e-gantt-toolbar';\nexport var chartScrollElement = 'e-chart-scroll-container';\nexport var chartBodyContent = 'e-chart-rows-container';\nexport var scrollContent = 'e-content';\nexport var adaptive = 'e-device';\nexport var focusCell = 'e-grid';\n// Timeline-Class\nexport var taskTable = 'e-task-table';\nexport var zeroSpacing = 'e-zero-spacing';\nexport var timelineHeaderContainer = 'e-timeline-header-container';\nexport var timelineHeaderTableContainer = 'e-timeline-header-table-container';\nexport var timelineHeaderTableBody = 'e-timeline-header-table-body';\nexport var timelineTopHeaderCell = 'e-timeline-top-header-cell';\nexport var timelineHeaderCellLabel = 'e-header-cell-label';\nexport var weekendHeaderCell = 'e-weekend-header-cell';\nexport var timelineSingleHeaderCell = 'e-timeline-single-header-cell';\nexport var timelineSingleHeaderOuterDiv = 'e-timeline-single-header-outer-div';\n// Chart Rows-Class\nexport var leftLabelContainer = 'e-left-label-container';\nexport var leftLabelTempContainer = 'e-left-label-container e-left-label-temp-container';\nexport var leftLabelInnerDiv = 'e-left-label-inner-div';\nexport var rightLabelContainer = 'e-right-label-container';\nexport var rightLabelTempContainer = 'e-right-label-container e-right-label-temp-container';\nexport var rightLabelInnerDiv = 'e-right-label-inner-div';\nexport var taskBarMainContainer = 'e-taskbar-main-container';\nexport var parentTaskBarInnerDiv = 'e-gantt-parent-taskbar-inner-div';\nexport var parentProgressBarInnerDiv = 'e-gantt-parent-progressbar-inner-div';\nexport var taskLabel = 'e-task-label';\nexport var childTaskBarInnerDiv = 'e-gantt-child-taskbar-inner-div';\nexport var childProgressBarInnerDiv = 'e-gantt-child-progressbar-inner-div';\nexport var criticalChildTaskBarInnerDiv = 'e-gantt-child-critical-taskbar-inner-div';\nexport var criticalChildProgressBarInnerDiv = 'e-gantt-child-critical-progressbar-inner-div';\nexport var criticalMilestone = 'e-critical-milestone';\nexport var baselineBar = 'e-baseline-bar';\nexport var baselineMilestoneContainer = 'e-baseline-gantt-milestone-container';\nexport var baselineMilestoneDiv = 'e-baseline-gantt-milestone';\nexport var chartRowCell = 'e-chart-row-cell';\nexport var chartRow = 'e-chart-row';\nexport var rowExpand = 'e-row-expand';\nexport var rowCollapse = 'e-row-collapse';\nexport var taskBarLeftResizer = 'e-taskbar-left-resizer';\nexport var taskBarRightResizer = 'e-taskbar-right-resizer';\nexport var childProgressResizer = 'e-child-progress-resizer';\nexport var progressBarHandler = 'e-progressbar-handler';\nexport var progressHandlerElement = 'e-progressbar-handler-element';\nexport var progressBarHandlerAfter = 'e-progressbar-handler-after';\nexport var icon = 'e-icon';\nexport var traceMilestone = 'e-gantt-milestone';\nexport var parentMilestone = 'e-gantt-parent-milestone';\nexport var traceChildTaskBar = 'e-gantt-child-taskbar';\nexport var traceChildProgressBar = 'e-gantt-child-progressbar';\nexport var manualParentMainContainer = 'e-manualparent-main-container';\nexport var manualParentTaskBar = 'e-gantt-manualparenttaskbar';\nexport var manualParentMilestone = 'e-gantt-manualparent-milestone';\nexport var manualChildTaskBar = 'e-gantt-child-manualtaskbar';\nexport var manualChildProgressBar = 'e-gantt-child-manualprogressbar';\nexport var manualParentRightResizer = 'e-gantt-manualparenttaskbar-right';\nexport var manualParentLeftResizer = 'e-gantt-manualparenttaskbar-left';\nexport var traceManualUnscheduledTask = 'e-gantt-unscheduled-manualtask';\nexport var traceParentTaskBar = 'e-gantt-parent-taskbar';\nexport var traceParentProgressBar = 'e-gantt-parent-progressbar';\nexport var traceUnscheduledTask = 'e-gantt-unscheduled-task';\nexport var criticalUnscheduledTask = 'e-gantt-critical-unscheduled-taskbar';\nexport var taskIndicatorDiv = 'e-indicator-span';\nexport var leftResizeGripper = 'e-left-resize-gripper';\nexport var rightResizeGripper = 'e-right-resize-gripper';\nexport var progressResizeGripper = 'e-progress-resize-gripper';\nexport var label = 'e-label';\n//event Markers classes\nexport var eventMarkersContainer = 'e-event-markers-container';\nexport var eventMarkersChild = 'e-event-markers';\nexport var eventMarkersSpan = 'e-span-label';\n//holiday classes\nexport var nonworkingContainer = 'e-nonworking-day-container';\nexport var holidayContainer = 'e-holiday-container';\nexport var holidayElement = 'e-holiday';\nexport var holidayLabel = 'e-span';\n//weekend classes\nexport var weekendContainer = 'e-weekend-container';\nexport var weekend = 'e-weekend';\n//Unscheduled Taskbar\nexport var unscheduledTaskbarLeft = 'e-gantt-unscheduled-taskbar-left';\nexport var unscheduledTaskbarRight = 'e-gantt-unscheduled-taskbar-right';\nexport var unscheduledTaskbar = 'e-gantt-unscheduled-taskbar';\nexport var unscheduledMilestoneTop = 'e-unscheduled-milestone-top';\nexport var unscheduledMilestoneBottom = 'e-unscheduled-milestone-bottom';\n//Connector Line\nexport var dependencyViewContainer = 'e-gantt-dependency-view-container';\nexport var connectorLineContainer = 'e-connector-line-container';\nexport var connectorLine = 'e-line';\nexport var connectorLineSVG = 'e-connector-line';\nexport var criticalConnectorLineSVG = 'e-critical-line';\nexport var criticalConnectorArrowSVG = 'e-critical-line-arrow';\nexport var connectorLineArrow = 'e-connector-line-arrow';\nexport var criticalConnectorLine = 'e-criticalconnector-line';\nexport var criticalConnectorLineRightArrow = 'e-criticalconnector-line-right-arrow';\nexport var criticalConnectorLineLeftArrow = 'e-criticalconnector-line-left-arrow';\nexport var connectorLineRightArrow = 'e-connector-line-right-arrow';\nexport var connectorLineLeftArrow = 'e-connector-line-left-arrow';\nexport var connectorLineZIndex = 'e-connector-line-z-index';\nexport var connectorLineHover = 'e-connector-line-hover';\nexport var criticalConnectorLineHover = 'e-critical-connector-line-hover';\nexport var connectorLineHoverZIndex = 'e-connector-line-hover-z-index';\nexport var connectorLineRightArrowHover = 'e-connector-line-right-arrow-hover';\nexport var connectorLineLeftArrowHover = 'e-connector-line-left-arrow-hover';\nexport var criticalConnectorLineRightArrowHover = 'e-critical-connector-line-right-arrow-hover';\nexport var criticalConnectorLineLeftArrowHover = 'e-critical-connector-line-left-arrow-hover';\nexport var connectorTouchPoint = 'e-connectortouchpoint';\nexport var connectorPointLeft = 'e-connectorpoint-left';\nexport var connectorPointRight = 'e-connectorpoint-right';\nexport var connectorPointLeftHover = 'e-connectorpoint-left-hover';\nexport var connectorPointRightHover = 'e-connectorpoint-right-hover';\nexport var falseLine = 'e-gantt-false-line';\nexport var connectorTooltipTaskName = 'e-tooltiptaskname';\nexport var connectorTooltipFalse = 'e-predecessor-false';\nexport var connectorTooltipTrue = 'e-predecessor-true';\nexport var rightConnectorPointOuterDiv = 'e-right-connectorpoint-outer-div';\nexport var leftConnectorPointOuterDiv = 'e-left-connectorpoint-outer-div';\nexport var connectorPointAllowBlock = 'e-connectorpoint-allow-block';\nexport var ganttTooltip = 'e-gantt-tooltip';\n// Context Menu\nexport var columnHeader = '.e-gridheader';\nexport var content = '.e-content';\nexport var editForm = '.e-gridform';\nexport var deleteIcon = 'e-delete';\nexport var saveIcon = 'e-save';\nexport var cancelIcon = 'e-cancel';\nexport var ascendingIcon = 'e-icon-ascending';\nexport var descendingIcon = 'e-icon-descending';\nexport var editIcon = 'e-edit';\nexport var indentIcon = 'e-indent';\nexport var outdentIcon = 'e-outdent';\nexport var addIcon = 'e-add';\nexport var criticalPathIcon = 'e-critical-path';\nexport var addAboveIcon = 'e-add-above';\nexport var addBelowIcon = 'e-add-below';\n//Predecessor touch mode\nexport var activeParentTask = 'e-active-parent-task';\nexport var activeChildTask = 'e-active-child-task';\nexport var activeConnectedTask = 'e-active-connected-task';\nexport var touchMode = 'e-predecessor-touch-mode';\n//Over allocation range container\nexport var rangeContainer = 'e-rangecontainer';\nexport var rangeChildContainer = 'e-rg-rangdiv';\nexport var rangeChildMiddleContainer = 'e-rg-middlerangdiv';\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\n/**\n * Date processor is used to handle date of task data.\n */\nvar DateProcessor = /** @class */ (function () {\n function DateProcessor(parent) {\n this.parent = parent;\n }\n /**\n * @param {ITaskData} ganttProp .\n * @returns {boolean} .\n */\n DateProcessor.prototype.isValidateNonWorkDays = function (ganttProp) {\n return (!isNullOrUndefined(ganttProp) && ganttProp.isAutoSchedule &&\n (!this.parent.includeWeekend || this.parent.totalHolidayDates.length > 0)) ||\n (isNullOrUndefined(ganttProp) && (!this.parent.includeWeekend || this.parent.totalHolidayDates.length > 0));\n };\n /**\n * Method to convert given date value as valid start date\n *\n * @param {Date} date .\n * @param {ITaskData} ganttProp .\n * @param {boolean} validateAsMilestone .\n * @param {boolean} isLoad .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkStartDate = function (date, ganttProp, validateAsMilestone, isLoad) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n var cloneStartDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneStartDate);\n validateAsMilestone = isNullOrUndefined(validateAsMilestone) ? !isNullOrUndefined(ganttProp) ?\n ganttProp.isMilestone : false : validateAsMilestone;\n if (hour < this.parent.defaultStartTime && (!validateAsMilestone || isLoad)) {\n this.setTime(this.parent.defaultStartTime, cloneStartDate);\n }\n else if (hour < this.parent.defaultStartTime && validateAsMilestone) {\n this.setTime(this.parent.defaultStartTime, cloneStartDate);\n }\n else if ((hour === this.parent.defaultEndTime && (!ganttProp || !validateAsMilestone)) || hour > this.parent.defaultEndTime) {\n cloneStartDate.setDate(cloneStartDate.getDate() + 1);\n this.setTime(this.parent.defaultStartTime, cloneStartDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var index = 0; index < this.parent.workingTimeRanges.length; index++) {\n var value = this.parent.workingTimeRanges[index];\n if (hour >= value.to && (this.parent.workingTimeRanges[index + 1] &&\n hour < this.parent.workingTimeRanges[index + 1].from)) {\n // milestone can fall at end any interval time\n if ((hour === value.to && (!ganttProp || !validateAsMilestone)) || hour !== value.to) {\n this.setTime(this.parent.workingTimeRanges[index + 1].from, cloneStartDate);\n }\n break;\n }\n }\n }\n var tStartDate;\n if (this.parent.autoCalculateDateScheduling) {\n do {\n tStartDate = new Date(cloneStartDate.getTime());\n var holidayLength = this.parent.totalHolidayDates.length;\n // check holidays and weekends\n if (this.isValidateNonWorkDays(ganttProp)) {\n var startTime = (!validateAsMilestone || isLoad) ? this.parent.defaultStartTime : this.parent.defaultEndTime;\n if (!this.parent.includeWeekend) {\n var tempDate = new Date(cloneStartDate.getTime());\n cloneStartDate = this.getNextWorkingDay(cloneStartDate);\n if (tempDate.getTime() !== cloneStartDate.getTime()) {\n this.setTime(startTime, cloneStartDate);\n }\n }\n for (var count = 0; count < holidayLength; count++) {\n var holidayFrom = this.getDateFromFormat(new Date(this.parent.totalHolidayDates[count]));\n var holidayTo = new Date(holidayFrom.getTime());\n holidayFrom.setHours(0, 0, 0, 0);\n holidayTo.setHours(23, 59, 59, 59);\n if (cloneStartDate.getTime() >= holidayFrom.getTime() && cloneStartDate.getTime() < holidayTo.getTime()) {\n cloneStartDate.setDate(cloneStartDate.getDate() + 1);\n this.setTime(startTime, cloneStartDate);\n }\n }\n }\n } while (tStartDate.getTime() !== cloneStartDate.getTime());\n return new Date(cloneStartDate.getTime());\n }\n else {\n return new Date(cloneStartDate.getTime());\n }\n };\n /**\n * To update given date value to valid end date\n *\n * @param {Date} date .\n * @param {ITaskData} ganttProp .\n * @param {boolean} validateAsMilestone .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkEndDate = function (date, ganttProp, validateAsMilestone) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n var cloneEndDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneEndDate);\n if (hour > this.parent.defaultEndTime) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n else if (hour <= this.parent.defaultStartTime && !validateAsMilestone) {\n cloneEndDate.setDate(cloneEndDate.getDate() - 1);\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var index = 0; index < this.parent.workingTimeRanges.length; index++) {\n var value = this.parent.workingTimeRanges[index];\n if (hour > value.to && (this.parent.workingTimeRanges[index + 1] &&\n hour <= this.parent.workingTimeRanges[index + 1].from)) {\n this.setTime(this.parent.workingTimeRanges[index].to, cloneEndDate);\n break;\n }\n }\n }\n var tempCheckDate;\n if (this.parent.autoCalculateDateScheduling) {\n do {\n tempCheckDate = new Date(cloneEndDate.getTime());\n var holidayLength = this.parent.totalHolidayDates.length;\n if (this.isValidateNonWorkDays(ganttProp)) {\n if (!this.parent.includeWeekend) {\n var tempDate = new Date(cloneEndDate.getTime());\n cloneEndDate = this.getPreviousWorkingDay(cloneEndDate);\n if (tempDate.getTime() !== cloneEndDate.getTime()) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n }\n for (var count = 0; count < holidayLength; count++) {\n var holidayFrom = this.getDateFromFormat(new Date(this.parent.totalHolidayDates[count]));\n var holidayTo = new Date(holidayFrom.getTime());\n var tempHoliday = new Date(cloneEndDate.getTime());\n tempHoliday.setMinutes(cloneEndDate.getMilliseconds() - 2);\n holidayFrom.setHours(0, 0, 0, 0);\n holidayTo.setHours(23, 59, 59, 59);\n if (cloneEndDate.getTime() >= holidayFrom.getTime() && cloneEndDate.getTime() < holidayTo.getTime() ||\n tempHoliday.getTime() >= holidayFrom.getTime() && tempHoliday.getTime() < holidayTo.getTime()) {\n cloneEndDate.setDate(cloneEndDate.getDate() - 1);\n if (!(cloneEndDate.getTime() === holidayFrom.getTime() && this.parent.defaultEndTime === 86400 &&\n this.getSecondsInDecimal(cloneEndDate) === 0)) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n }\n }\n }\n } while (tempCheckDate.getTime() !== cloneEndDate.getTime());\n return new Date(cloneEndDate.getTime());\n }\n else {\n if (!isNullOrUndefined(cloneEndDate)) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n return new Date(cloneEndDate.getTime());\n }\n };\n /**\n * To validate the baseline start date\n *\n * @param {Date} date .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkBaselineStartDate = function (date) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n else {\n var cloneDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneDate);\n if (hour < this.parent.defaultStartTime) {\n this.setTime(this.parent.defaultStartTime, cloneDate);\n }\n else if (hour > this.parent.defaultEndTime) {\n cloneDate.setDate(cloneDate.getDate() + 1);\n this.setTime(this.parent.defaultStartTime, cloneDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {\n var value = this.parent.workingTimeRanges[i];\n if (hour > value.to && (this.parent.workingTimeRanges[i + 1] &&\n hour < this.parent.workingTimeRanges[i + 1].from)) {\n this.setTime(this.parent.workingTimeRanges[i + 1].from, cloneDate);\n break;\n }\n }\n }\n return cloneDate;\n }\n };\n /**\n * To validate baseline end date\n *\n * @param {Date} date .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkBaselineEndDate = function (date, ganttProp) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n else {\n var cloneDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneDate);\n if (hour > this.parent.defaultEndTime) {\n this.setTime(this.parent.defaultEndTime, cloneDate);\n }\n else if (hour < this.parent.defaultStartTime && !isNullOrUndefined(ganttProp) && !ganttProp.isMilestone) {\n cloneDate.setDate(cloneDate.getDate() - 1);\n this.setTime(this.parent.defaultEndTime, cloneDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {\n var value = this.parent.workingTimeRanges[i];\n if (hour > value.to && (this.parent.workingTimeRanges[i + 1] && hour <= this.parent.workingTimeRanges[i + 1].from)) {\n this.setTime(this.parent.workingTimeRanges[i].to, cloneDate);\n break;\n }\n }\n }\n if (ganttProp && ganttProp.baselineStartDate && cloneDate &&\n ganttProp.baselineStartDate.getTime() > cloneDate.getTime()) {\n cloneDate.setDate(cloneDate.getDate() + 1);\n }\n return cloneDate;\n }\n };\n /**\n * To calculate start date value from duration and end date\n *\n * @param {IGanttData} ganttData - Defines the gantt data.\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.calculateStartDate = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n var tempStartDate = null;\n if (!isNullOrUndefined(ganttProp.endDate) && !isNullOrUndefined(ganttProp.duration)) {\n tempStartDate = this.getStartDate(ganttProp.endDate, ganttProp.duration, ganttProp.durationUnit, ganttProp);\n }\n this.parent.setRecordValue('startDate', tempStartDate, ganttProp, true);\n if (this.parent.taskFields.startDate) {\n this.parent.dataOperation.updateMappingData(ganttData, 'startDate');\n }\n };\n /**\n *\n * @param {IGanttData} ganttData - Defines the gantt data.\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.calculateEndDate = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n var tempEndDate = null;\n if (!isNullOrUndefined(ganttProp.startDate)) {\n if (!isNullOrUndefined(ganttProp.endDate) && isNullOrUndefined(ganttProp.duration)) {\n if (this.compareDates(ganttProp.startDate, ganttProp.endDate) === 1) {\n this.parent.setRecordValue('startDate', new Date(ganttProp.endDate.getTime()), ganttProp, true);\n this.setTime(this.parent.defaultStartTime, ganttProp.startDate);\n }\n this.calculateDuration(ganttData);\n }\n if (!isNullOrUndefined(ganttProp.duration)) {\n var duration = !isNullOrUndefined(ganttProp.segments) && ganttProp.segments.length > 0 ?\n this.totalDuration(ganttProp.segments) : ganttProp.duration;\n tempEndDate = this.getEndDate(ganttProp.startDate, duration, ganttProp.durationUnit, ganttProp, false);\n }\n this.parent.setRecordValue('endDate', tempEndDate, ganttProp, true);\n }\n else {\n tempEndDate = ganttData[this.parent.taskFields.endDate];\n if (!isNullOrUndefined(tempEndDate)) {\n this.setTime(this.parent.defaultEndTime, tempEndDate);\n }\n this.parent.setRecordValue('endDate', tempEndDate, ganttProp, true);\n }\n if (this.parent.taskFields.endDate) {\n this.parent.dataOperation.updateMappingData(ganttData, 'endDate');\n }\n };\n DateProcessor.prototype.totalDuration = function (segments) {\n var duration = 0;\n for (var i = 0; i < segments.length; i++) {\n duration += segments[i].duration + segments[i].offsetDuration;\n }\n return duration;\n };\n /**\n * To calculate duration from start date and end date\n *\n * @param {IGanttData} ganttData - Defines the gantt data.\n * @returns {void} .\n */\n DateProcessor.prototype.calculateDuration = function (ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n var tDuration;\n if (!isNullOrUndefined(ganttProperties.segments) && ganttProperties.segments.length > 0 &&\n !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {\n tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);\n }\n else {\n if ((!isNullOrUndefined(this.parent.taskFields.milestone)) && (!isNullOrUndefined(ganttProperties.startDate)) && !isNullOrUndefined(ganttProperties.endDate) &&\n (ganttProperties.startDate).getTime() === (ganttProperties.endDate).getTime() && !isNullOrUndefined(ganttData.taskData[this.parent.taskFields.milestone])) {\n tDuration = 1;\n }\n else {\n tDuration = this.getDuration(ganttProperties.startDate, ganttProperties.endDate, ganttProperties.durationUnit, ganttProperties.isAutoSchedule, ganttProperties.isMilestone);\n }\n }\n this.parent.setRecordValue('duration', tDuration, ganttProperties, true);\n var col = this.parent.columnByField[this.parent.columnMapping.duration];\n if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.cellEditModule) &&\n !this.parent.editModule.cellEditModule.isCellEdit && !isNullOrUndefined(col)) {\n if (!isNullOrUndefined(col.edit) && !isNullOrUndefined(col.edit.read)) {\n var dialog = this.parent.editModule.dialogModule.dialog;\n if (!isNullOrUndefined(dialog)) {\n var textBox = dialog.querySelector('#' + this.parent.element.id + 'Duration')\n .ej2_instances[0];\n if (!isNullOrUndefined(textBox) && textBox.value !== tDuration.toString()) {\n textBox.value = tDuration.toString();\n textBox.dataBind();\n }\n }\n }\n if (this.parent.taskFields.duration) {\n this.parent.dataOperation.updateMappingData(ganttData, 'duration');\n if (this.parent.taskFields.durationUnit) {\n this.parent.dataOperation.updateMappingData(ganttData, 'durationUnit');\n }\n }\n }\n };\n /**\n *\n * @param {Date} sDate Method to get total nonworking time between two date values\n * @param {Date} eDate .\n * @param {boolean} isAutoSchedule .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n */\n DateProcessor.prototype.getNonworkingTime = function (sDate, eDate, isAutoSchedule, isCheckTimeZone) {\n isCheckTimeZone = isNullOrUndefined(isCheckTimeZone) ? true : isCheckTimeZone;\n var weekendCount = (!this.parent.includeWeekend && this.parent.autoCalculateDateScheduling) && isAutoSchedule ? this.getWeekendCount(sDate, eDate) : 0;\n var totalHours = this.getNumberOfSeconds(sDate, eDate, isCheckTimeZone);\n var holidaysCount = isAutoSchedule && this.parent.autoCalculateDateScheduling ? this.getHolidaysCount(sDate, eDate) : 0;\n var totWorkDays = (totalHours - (weekendCount * 86400) - (holidaysCount * 86400)) / 86400; // working days between two dates\n var nonWorkHours = this.getNonWorkingSecondsOnDate(sDate, eDate, isAutoSchedule);\n var totalNonWorkTime = (totWorkDays * (86400 - this.parent.secondsPerDay)) +\n (weekendCount * 86400) + (holidaysCount * 86400) + nonWorkHours;\n return totalNonWorkTime;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {string} durationUnit .\n * @param {boolean} isAutoSchedule .\n * @param {boolean} isMilestone .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.getDuration = function (startDate, endDate, durationUnit, isAutoSchedule, isMilestone, isCheckTimeZone) {\n if (isNullOrUndefined(startDate) || isNullOrUndefined(endDate)) {\n return null;\n }\n isCheckTimeZone = isNullOrUndefined(isCheckTimeZone) ? true : isCheckTimeZone;\n var durationValue = 0;\n var timeDiff = this.getTimeDifference(startDate, endDate, isCheckTimeZone) / 1000;\n var nonWorkHours = this.getNonworkingTime(startDate, endDate, isAutoSchedule, isCheckTimeZone);\n var durationHours = timeDiff - nonWorkHours;\n if (isMilestone && this.parent.getFormatedDate(startDate) === this.parent.getFormatedDate(endDate)) {\n durationValue = 0;\n }\n else {\n if (!durationUnit || durationUnit === 'day') {\n durationValue = durationHours / this.parent.secondsPerDay;\n }\n else if (durationUnit === 'minute') {\n durationValue = durationHours / 60;\n }\n else {\n durationValue = durationHours / 3600;\n }\n }\n return parseFloat(durationValue.toString());\n };\n /**\n *\n * @param {number} duration .\n * @param {string} durationUnit .\n * @returns {number} .\n */\n DateProcessor.prototype.getDurationAsSeconds = function (duration, durationUnit) {\n var value = 0;\n if (!durationUnit || durationUnit.toLocaleLowerCase() === 'day') {\n value = this.parent.secondsPerDay * duration;\n }\n else if (durationUnit.toLocaleLowerCase() === 'hour') {\n value = duration * 3600;\n }\n else {\n value = duration * 60;\n }\n return value;\n };\n /**\n * To get date from start date and duration\n *\n * @param {Date} startDate .\n * @param {number} duration .\n * @param {string} durationUnit .\n * @param {ITaskData} ganttProp .\n * @param {boolean} validateAsMilestone .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getEndDate = function (startDate, duration, durationUnit, ganttProp, validateAsMilestone) {\n var tempStart = new Date(startDate.getTime());\n var endDate = new Date(startDate.getTime());\n var secondDuration = this.getDurationAsSeconds(duration, durationUnit);\n var nonWork = 0;\n var workHours = 0;\n while (secondDuration > 0) {\n endDate.setSeconds(endDate.getSeconds() + secondDuration);\n nonWork = this.getNonworkingTime(tempStart, endDate, ganttProp.isAutoSchedule, true);\n workHours = secondDuration - nonWork;\n secondDuration = secondDuration - workHours;\n if (secondDuration > 0) {\n endDate = this.checkStartDate(endDate, ganttProp, validateAsMilestone);\n }\n tempStart = new Date(endDate.getTime());\n }\n return endDate;\n };\n /**\n *\n * @param {Date} endDate To calculate start date vale from end date and duration\n * @param {number} duration .\n * @param {string} durationUnit .\n * @param {ITaskData} ganttProp .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getStartDate = function (endDate, duration, durationUnit, ganttProp, fromValidation) {\n var tempEnd = new Date(endDate.getTime());\n var startDate = new Date(endDate.getTime());\n var secondDuration = this.getDurationAsSeconds(duration, durationUnit);\n var nonWork = 0;\n var workHours = 0;\n while (secondDuration > 0) {\n startDate.setSeconds(startDate.getSeconds() - secondDuration);\n nonWork = this.getNonworkingTime(startDate, tempEnd, ganttProp.isAutoSchedule, true);\n workHours = secondDuration - nonWork;\n secondDuration = secondDuration - workHours;\n if (secondDuration > 0) {\n tempEnd = this.checkEndDate(startDate, ganttProp);\n }\n tempEnd = new Date(startDate.getTime());\n }\n /* To render the milestone in proper date while loading */\n if (fromValidation && ganttProp.isMilestone) {\n startDate.setDate(startDate.getDate() - 1);\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, startDate);\n startDate = this.parent.dateValidationModule.checkStartDate(startDate, ganttProp, true);\n }\n return startDate;\n };\n /**\n * @param {ITaskData} ganttProp .\n * @param {boolean} isLoad .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getProjectStartDate = function (ganttProp, isLoad) {\n if (!isNullOrUndefined(this.parent.cloneProjectStartDate)) {\n if (typeof this.parent.cloneProjectStartDate === 'string') {\n this.parent.cloneProjectStartDate = this.getDateFromFormat(this.parent.cloneProjectStartDate);\n }\n var cloneStartDate = this.checkStartDate(this.parent.cloneProjectStartDate);\n this.parent.cloneProjectStartDate = cloneStartDate;\n return new Date(cloneStartDate.getTime());\n }\n else if (!isNullOrUndefined(this.parent.projectStartDate)) {\n var cloneStartDate = this.getDateFromFormat(this.parent.projectStartDate);\n this.parent.cloneProjectStartDate = this.checkStartDate(cloneStartDate);\n }\n else if (!isNullOrUndefined(isLoad)) {\n var flatData = this.parent.flatData;\n var minStartDate = void 0;\n if (flatData.length > 0) {\n minStartDate = flatData[0].ganttProperties.startDate;\n }\n else {\n minStartDate = new Date();\n minStartDate.setHours(0, 0, 0, 0);\n }\n for (var index = 1; index < flatData.length; index++) {\n var startDate = flatData[index].ganttProperties.startDate;\n if (!isNullOrUndefined(startDate) && this.compareDates(startDate, minStartDate) === -1) {\n minStartDate = startDate;\n }\n }\n this.parent.cloneProjectStartDate = this.checkStartDate(minStartDate, ganttProp);\n }\n else {\n return null;\n }\n return new Date(this.parent.cloneProjectStartDate.getTime());\n };\n /**\n * @param {ITaskData} ganttProp .\n * @param {boolean} isAuto .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getValidStartDate = function (ganttProp, isAuto) {\n var sDate = null;\n var startDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var endDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var duration = !ganttProp.isAutoSchedule && ganttProp.autoDuration ? ganttProp.autoDuration : ganttProp.duration;\n if (isNullOrUndefined(startDate)) {\n if (!isNullOrUndefined(endDate)) {\n sDate = new Date(endDate.getTime());\n this.setTime(this.parent.defaultStartTime, sDate);\n }\n else if (!isNullOrUndefined(duration)) {\n sDate = this.getProjectStartDate(ganttProp);\n }\n }\n else {\n sDate = new Date(startDate.getTime());\n }\n return sDate;\n };\n /**\n *\n * @param {ITaskData} ganttProp .\n * @param {boolean} isAuto .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getValidEndDate = function (ganttProp, isAuto) {\n var eDate = null;\n var startDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var endDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var duration = isAuto ? ganttProp.autoDuration : ganttProp.duration;\n if (isNullOrUndefined(endDate)) {\n if (!isNullOrUndefined(startDate)) {\n if (ganttProp.isMilestone) {\n eDate = this.checkStartDate(startDate);\n }\n else {\n eDate = new Date(startDate.getTime());\n this.setTime(this.parent.defaultEndTime, eDate);\n }\n }\n else if (!isNullOrUndefined(duration)) {\n var sDate = this.getValidStartDate(ganttProp);\n if (sDate) {\n eDate = this.getEndDate(sDate, duration, ganttProp.durationUnit, ganttProp, false);\n }\n }\n }\n else {\n eDate = new Date(endDate.getTime());\n }\n return eDate;\n };\n /**\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.getSecondsPerDay = function () {\n var dayWorkingTime = this.parent.dayWorkingTime;\n var length = dayWorkingTime.length;\n var totalSeconds = 0;\n var startDate = new Date('10/11/2018');\n this.parent.nonWorkingHours = [];\n var nonWorkingHours = this.parent.nonWorkingHours;\n this.parent.workingTimeRanges = [];\n var workingTimeRanges = this.parent.workingTimeRanges;\n this.parent.nonWorkingTimeRanges = [];\n var nonWorkingTimeRanges = this.parent.nonWorkingTimeRanges;\n for (var count = 0; count < length; count++) {\n var currentRange = dayWorkingTime[count];\n if (!isNullOrUndefined(currentRange.from) && !isNullOrUndefined(currentRange.to)) {\n startDate.setHours(0, 0, 0, 0);\n var tempDate = new Date(startDate.getTime());\n startDate.setTime(startDate.getTime() + (currentRange.from * 3600000));\n var startHour = new Date(startDate.getTime());\n tempDate.setTime(tempDate.getTime() + (currentRange.to * 3600000));\n var endHour = new Date(tempDate.getTime());\n var timeDiff = endHour.getTime() - startHour.getTime();\n var sdSeconds = this.getSecondsInDecimal(startHour);\n var edSeconds = this.getSecondsInDecimal(endHour);\n if (edSeconds === 0) {\n edSeconds = 86400;\n }\n totalSeconds += timeDiff / 1000;\n if (count === 0) {\n this.parent.defaultStartTime = sdSeconds;\n }\n if (count === length - 1) {\n this.parent.defaultEndTime = edSeconds;\n }\n if (count > 0) {\n nonWorkingHours.push(nonWorkingHours[nonWorkingHours.length - 1] +\n sdSeconds - workingTimeRanges[count - 1].to);\n if (workingTimeRanges[count - 1].to < sdSeconds) {\n nonWorkingTimeRanges.push({\n from: workingTimeRanges[count - 1].to, to: sdSeconds, isWorking: false,\n interval: (sdSeconds - workingTimeRanges[count - 1].to)\n });\n }\n }\n else {\n nonWorkingHours.push(0);\n nonWorkingTimeRanges.push({ from: 0, to: sdSeconds, isWorking: false, interval: sdSeconds });\n }\n workingTimeRanges.push({ from: sdSeconds, to: edSeconds });\n nonWorkingTimeRanges.push({\n from: sdSeconds, to: edSeconds, isWorking: true, interval: (edSeconds - sdSeconds)\n });\n }\n }\n if (this.parent.defaultEndTime / 3600 !== 24) {\n nonWorkingTimeRanges.push({\n from: this.parent.defaultEndTime, to: 86400,\n isWorking: false, interval: 86400 - this.parent.defaultEndTime\n });\n }\n return totalSeconds;\n };\n /**\n *\n * @param {string} value .\n * @param {boolean} isFromDialog .\n * @returns {object} .\n * @private\n */\n // eslint-disable-next-line\n DateProcessor.prototype.getDurationValue = function (value, isFromDialog) {\n var durationUnit = null;\n var duration = null;\n if (typeof value === 'string') {\n var values = value.match(/(\\d*\\.*\\d+|.+$)/g);\n if (values && values.length <= 2) {\n duration = parseFloat(values[0].toString().trim());\n var unit = values[1] ? values[1].toString().trim().toLowerCase() : null;\n if (getValue('minute', this.parent.durationUnitEditText).indexOf(unit) !== -1) {\n durationUnit = 'minute';\n }\n else if (getValue('hour', this.parent.durationUnitEditText).indexOf(unit) !== -1) {\n durationUnit = 'hour';\n }\n else if (getValue('day', this.parent.durationUnitEditText).indexOf(unit) !== -1) {\n durationUnit = 'day';\n }\n }\n }\n else {\n duration = value;\n durationUnit = null;\n }\n var output = {\n duration: duration,\n durationUnit: durationUnit\n };\n return output;\n };\n /**\n *\n * @param {Date} date .\n * @returns {Date} .\n */\n DateProcessor.prototype.getNextWorkingDay = function (date) {\n var dayIndex = date.getDay();\n if (this.parent.nonWorkingDayIndex.indexOf(dayIndex) !== -1) {\n date.setDate(date.getDate() + 1);\n date = this.getNextWorkingDay(date);\n return date;\n }\n else {\n return date;\n }\n };\n /**\n * get weekend days between two dates without including args dates\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {number} .\n */\n DateProcessor.prototype.getWeekendCount = function (startDate, endDate) {\n var weekendCount = 0;\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n sDate.setHours(0, 0, 0, 0);\n sDate.setDate(sDate.getDate() + 1);\n eDate.setHours(0, 0, 0, 0);\n while (sDate.getTime() < eDate.getTime()) {\n if (this.parent.nonWorkingDayIndex.indexOf(sDate.getDay()) !== -1) {\n weekendCount += 1;\n }\n sDate.setDate(sDate.getDate() + 1);\n }\n return weekendCount;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n */\n DateProcessor.prototype.getNumberOfSeconds = function (startDate, endDate, isCheckTimeZone) {\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n var timeDiff = 0;\n sDate.setDate(sDate.getDate() + 1);\n sDate.setHours(0, 0, 0, 0);\n eDate.setHours(0, 0, 0, 0);\n if (sDate.getTime() < eDate.getTime()) {\n timeDiff = (this.getTimeDifference(sDate, eDate, isCheckTimeZone)) / 1000;\n }\n if (timeDiff % 86400 !== 0) {\n timeDiff = timeDiff - (timeDiff % 86400) + 86400;\n }\n return timeDiff;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {number} .\n */\n DateProcessor.prototype.getHolidaysCount = function (startDate, endDate) {\n var holidaysCount = 0;\n var holidays = this.parent.totalHolidayDates;\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n sDate.setDate(sDate.getDate() + 1);\n sDate.setHours(0, 0, 0, 0);\n eDate.setHours(0, 0, 0, 0);\n if (sDate.getTime() < eDate.getTime()) {\n for (var i = 0; i < holidays.length; i++) {\n var currentHoliday = this.getDateFromFormat(new Date(holidays[i]));\n if (sDate.getTime() <= currentHoliday.getTime() && eDate.getTime() > currentHoliday.getTime()) {\n if ((!this.parent.includeWeekend && this.parent.nonWorkingDayIndex.indexOf(currentHoliday.getDay()) === -1) ||\n this.parent.includeWeekend) {\n holidaysCount += 1;\n }\n }\n }\n }\n return holidaysCount;\n };\n /**\n * @returns {number[]} .\n * @private\n */\n DateProcessor.prototype.getHolidayDates = function () {\n var holidays = this.parent.holidays;\n var holidayDates = [];\n for (var i = 0; i < holidays.length; i++) {\n var from = this.getDateFromFormat(holidays[i].from);\n var to = this.getDateFromFormat(holidays[i].to);\n if (isNullOrUndefined(from) && isNullOrUndefined(to)) {\n continue;\n }\n else if (isNullOrUndefined(from) || isNullOrUndefined(to)) {\n var tempDate = from ? from : to;\n tempDate.setHours(0, 0, 0, 0);\n if (holidayDates.indexOf(tempDate.getTime()) === -1) {\n holidayDates.push(tempDate.getTime());\n }\n }\n else {\n while (from <= to) {\n from.setHours(0, 0, 0, 0);\n if (holidayDates.indexOf(from.getTime()) === -1) {\n holidayDates.push(from.getTime());\n }\n from.setDate(from.getDate() + 1);\n }\n }\n }\n return holidayDates;\n };\n /**\n * @param {Date} date .\n * @param {boolean} checkWeekEnd .\n * @returns {boolean} .\n * @private\n */\n /*Check given date is on holidays*/\n DateProcessor.prototype.isOnHolidayOrWeekEnd = function (date, checkWeekEnd) {\n checkWeekEnd = !isNullOrUndefined(checkWeekEnd) ? checkWeekEnd : this.parent.includeWeekend;\n if (!this.parent.autoCalculateDateScheduling) {\n checkWeekEnd = true;\n }\n if (!checkWeekEnd && this.parent.nonWorkingDayIndex.indexOf(date.getDay()) !== -1) {\n return true;\n }\n var holidays = this.parent.totalHolidayDates;\n for (var count = 0; count < holidays.length; count++) {\n var holidayFrom = this.getDateFromFormat(new Date(holidays[count]));\n var holidayTo = new Date(holidayFrom.getTime());\n holidayFrom.setHours(0, 0, 0, 0);\n holidayTo.setHours(23, 59, 59, 59);\n if (date.getTime() >= holidayFrom.getTime() && date.getTime() < holidayTo.getTime()) {\n return true;\n }\n }\n return false;\n };\n /**\n * To calculate non working times in given date\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {boolean} isAutoSchedule .\n * @returns {number} .\n */\n DateProcessor.prototype.getNonWorkingSecondsOnDate = function (startDate, endDate, isAutoSchedule) {\n var sHour = this.getSecondsInDecimal(startDate);\n var eHour = this.getSecondsInDecimal(endDate);\n var startRangeIndex = -1;\n var endRangeIndex = -1;\n var totNonWrkSecs = 0;\n var startOnHoliday = isAutoSchedule && this.parent.autoCalculateDateScheduling ? this.isOnHolidayOrWeekEnd(startDate, null) : false;\n var endOnHoliday = isAutoSchedule && this.parent.autoCalculateDateScheduling ? this.isOnHolidayOrWeekEnd(endDate, null) : false;\n for (var i = 0; i < this.parent.nonWorkingTimeRanges.length; i++) {\n var val = this.parent.nonWorkingTimeRanges[i];\n if (sHour >= val.from && sHour <= val.to) {\n startRangeIndex = i;\n }\n if (eHour >= val.from && eHour <= val.to) {\n endRangeIndex = i;\n }\n }\n if (startDate.getDate() !== endDate.getDate() || startDate.getMonth() !== endDate.getMonth() ||\n startDate.getFullYear() !== endDate.getFullYear()) {\n if (!startOnHoliday) {\n for (var i = startRangeIndex; i < this.parent.nonWorkingTimeRanges.length; i++) {\n if (!this.parent.nonWorkingTimeRanges[i].isWorking) {\n if (i === startRangeIndex) {\n totNonWrkSecs += (this.parent.nonWorkingTimeRanges[i].to - sHour);\n }\n else {\n totNonWrkSecs += (this.parent.nonWorkingTimeRanges[i].interval);\n }\n }\n }\n }\n else {\n totNonWrkSecs += (86400 - sHour);\n }\n if (!endOnHoliday) {\n for (var i = 0; i <= endRangeIndex; i++) {\n if (!this.parent.nonWorkingTimeRanges[i].isWorking) {\n if (i === endRangeIndex) {\n totNonWrkSecs += (eHour - this.parent.nonWorkingTimeRanges[i].from);\n }\n else {\n totNonWrkSecs += this.parent.nonWorkingTimeRanges[i].interval;\n }\n }\n }\n }\n else {\n totNonWrkSecs += eHour;\n }\n }\n else {\n if (startRangeIndex !== endRangeIndex) {\n if (!endOnHoliday) {\n for (var i = startRangeIndex; i <= endRangeIndex; i++) {\n if (!this.parent.nonWorkingTimeRanges[i].isWorking) {\n if (i === startRangeIndex) {\n totNonWrkSecs += (this.parent.nonWorkingTimeRanges[i].to - sHour);\n }\n else if (i === endRangeIndex) {\n totNonWrkSecs += (eHour - this.parent.nonWorkingTimeRanges[i].from);\n }\n else {\n totNonWrkSecs += this.parent.nonWorkingTimeRanges[i].interval;\n }\n }\n }\n }\n else {\n totNonWrkSecs += (eHour - sHour);\n }\n }\n else {\n if (!endOnHoliday) {\n var range = this.parent.nonWorkingTimeRanges[startRangeIndex];\n if (!range.isWorking) {\n totNonWrkSecs = eHour - sHour;\n }\n }\n else {\n totNonWrkSecs += (eHour - sHour);\n }\n }\n }\n return totNonWrkSecs;\n };\n /**\n *\n * @param {Date} date .\n * @returns {Date} .\n */\n DateProcessor.prototype.getPreviousWorkingDay = function (date) {\n var dayIndex = date.getDay();\n var previousIndex = (dayIndex === 0) ? 6 : dayIndex - 1;\n if (this.parent.nonWorkingDayIndex.indexOf(dayIndex) !== -1 || (this.parent.nonWorkingDayIndex.indexOf(previousIndex) !== -1\n && this.parent.defaultEndTime === 86400 && this.getSecondsInDecimal(date) === 0)) {\n date.setDate(date.getDate() - 1);\n if (this.parent.nonWorkingDayIndex.indexOf(date.getDay()) !== -1) {\n date = this.getPreviousWorkingDay(date);\n }\n return date;\n }\n else {\n return date;\n }\n };\n /**\n * To get non-working day indexes.\n *\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.getNonWorkingDayIndex = function () {\n var weekDay = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n var weekDayLength = weekDay.length;\n if (this.parent.workWeek.length === 0) {\n this.parent.workWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];\n }\n var workWeek = this.parent.workWeek.slice();\n var length = workWeek.length;\n for (var i = 0; i < length; i++) {\n workWeek[i] = workWeek[i].toLowerCase();\n }\n this.parent.nonWorkingDayIndex = [];\n for (var i = 0; i < weekDayLength; i++) {\n if (workWeek.indexOf(weekDay[i]) === -1) {\n this.parent.nonWorkingDayIndex.push(i);\n }\n }\n };\n /**\n *\n * @param {number} seconds .\n * @param {Date} date .\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.setTime = function (seconds, date) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var hour = seconds / 3600;\n hour = parseInt(hour, 10);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var min = (seconds - (hour * 3600)) / 60;\n min = parseInt(min, 10);\n var sec = seconds - (hour * 3600) - (min * 60);\n date.setHours(hour, min, sec);\n };\n /**\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n */\n DateProcessor.prototype.getTimeDifference = function (startDate, endDate, isCheckTimeZone) {\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n if (isCheckTimeZone) {\n this.updateDateWithTimeZone(sDate, eDate);\n }\n return eDate.getTime() - sDate.getTime();\n };\n /**\n * @param {Date} sDate .\n * @param {Date} eDate .\n * @returns {void} .\n */\n DateProcessor.prototype.updateDateWithTimeZone = function (sDate, eDate) {\n var sTZ = sDate.getTimezoneOffset();\n var eTZ = eDate.getTimezoneOffset();\n var uTZ;\n var uDate;\n if (sTZ !== eTZ) {\n var standardTZ = new Date(new Date().getFullYear(), 0, 1).getTimezoneOffset();\n if (standardTZ !== sTZ) {\n uDate = sDate;\n uTZ = sTZ;\n }\n else if (standardTZ !== eTZ) {\n uDate = eDate;\n uTZ = eTZ;\n }\n if (standardTZ < 0) {\n var tzDiff = standardTZ - uTZ;\n uDate.setTime(uDate.getTime() + (tzDiff * 60 * 1000));\n }\n else if (standardTZ >= 0) {\n var tzDiff = uTZ - standardTZ;\n uDate.setTime(uDate.getTime() - (tzDiff * 60 * 1000));\n }\n }\n };\n /**\n *\n * @param {Date} date .\n * @returns {number} .\n */\n DateProcessor.prototype.getSecondsInDecimal = function (date) {\n return (date.getHours() * 60 * 60) + (date.getMinutes() * 60) + date.getSeconds() + (date.getMilliseconds() / 1000);\n };\n /**\n * @param {Date} date .\n * @param {number} localOffset .\n * @param {string} timezone .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.offset = function (date, timezone) {\n var localOffset = date.getTimezoneOffset();\n try {\n var convertedDate = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n if (!isNaN(convertedDate.getTime())) {\n return ((date.getTime() - convertedDate.getTime()) / 60000) + localOffset;\n }\n return 0;\n }\n catch (error) {\n return 0;\n }\n };\n DateProcessor.prototype.remove = function (date, timezone) {\n if (!isNullOrUndefined(date)) {\n date = this.reverse(date, timezone, date.getTimezoneOffset());\n }\n return date;\n };\n DateProcessor.prototype.reverse = function (date, fromOffset, toOffset) {\n if (typeof fromOffset === 'string') {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset === 'string') {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n };\n /**\n * @param {Date} date .\n * @param {string} timezone .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.convert = function (date, timezone) {\n var fromOffset = date.getTimezoneOffset();\n var toOffset = this.offset(date, timezone);\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromOffset) * 60000);\n };\n /**\n * @param {string | Date} date .\n * @param {boolean} toConvert .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getDateFromFormat = function (date, toConvert) {\n var updatedDate;\n if (isNullOrUndefined(date)) {\n return null;\n }\n else if (date instanceof Date) {\n updatedDate = new Date(date.getTime());\n }\n else {\n var dateObject = this.parent.globalize.parseDate(date, { format: this.parent.getDateFormat(), type: 'dateTime' });\n updatedDate = isNullOrUndefined(dateObject) && !isNaN(new Date(date).getTime()) ? new Date(date) : dateObject;\n }\n if (!isNullOrUndefined(this.parent.timezone) && toConvert) {\n var convertedDate = this.convert(updatedDate, this.parent.timezone);\n return convertedDate;\n }\n else {\n return updatedDate;\n }\n };\n /**\n * @param {Date} date1 .\n * @param {Date} date2 .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.compareDates = function (date1, date2) {\n if (!isNullOrUndefined(date1) && !isNullOrUndefined(date2)) {\n return (date1.getTime() > date2.getTime()) ? 1 : (date1.getTime() < date2.getTime()) ? -1 : 0;\n }\n else if (!isNullOrUndefined(date1) && isNullOrUndefined(date2)) {\n return 1;\n }\n else if (isNullOrUndefined(date1) && !isNullOrUndefined(date2)) {\n return -1;\n }\n else {\n return null;\n }\n };\n /**\n *\n * @param {number} duration .\n * @param {string} durationUnit .\n * @returns {string} .\n * @private\n */\n DateProcessor.prototype.getDurationString = function (duration, durationUnit) {\n var value = '';\n if (!isNullOrUndefined(duration)) {\n value += parseFloat(duration.toFixed(2)) + ' ';\n if (!isNullOrUndefined(durationUnit)) {\n var plural = duration !== 1;\n if (durationUnit === 'day') {\n value += plural ? this.parent.localeObj.getConstant('days') : this.parent.localeObj.getConstant('day');\n }\n else if (durationUnit === 'hour') {\n value += plural ? this.parent.localeObj.getConstant('hours') : this.parent.localeObj.getConstant('hour');\n }\n else if (durationUnit === 'minute') {\n value += plural ? this.parent.localeObj.getConstant('minutes') :\n this.parent.localeObj.getConstant('minute');\n }\n }\n }\n return value;\n };\n /**\n * Method to get work with value and unit.\n *\n * @param {number} work .\n * @param {string} workUnit .\n * @returns {string} .\n * @private\n */\n DateProcessor.prototype.getWorkString = function (work, workUnit) {\n var value = '';\n if (!isNullOrUndefined(work)) {\n value += parseFloat(work).toFixed(2) + ' ';\n if (!isNullOrUndefined(workUnit)) {\n var plural = work !== 1;\n if (workUnit === 'day') {\n value += plural ? this.parent.localeObj.getConstant('days') : this.parent.localeObj.getConstant('day');\n }\n else if (workUnit === 'hour') {\n value += plural ? this.parent.localeObj.getConstant('hours') : this.parent.localeObj.getConstant('hour');\n }\n else if (workUnit === 'minute') {\n value += plural ? this.parent.localeObj.getConstant('minutes') :\n this.parent.localeObj.getConstant('minute');\n }\n }\n }\n return value;\n };\n /**\n *\n * @param {object} editArgs .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n DateProcessor.prototype.calculateProjectDatesForValidatedTasks = function (editArgs) {\n var _this = this;\n var projectStartDate = typeof this.parent.projectStartDate === 'string' ?\n new Date(this.parent.projectStartDate) : this.parent.projectStartDate;\n var projectEndDate = typeof this.parent.projectEndDate === 'string' ?\n new Date(this.parent.projectEndDate) : this.parent.projectEndDate;\n var minStartDate = null;\n var maxEndDate = null;\n var flatData = (getValue('dataOperation.dataArray', this.parent));\n if ((!projectStartDate || !projectEndDate) && (flatData && flatData.length === 0)) {\n minStartDate = this.getDateFromFormat(new Date());\n maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));\n }\n else if (flatData.length > 0) {\n var sortedStartDate = flatData.slice().sort(function (a, b) {\n return ((new Date(a[_this.parent.taskFields.startDate])).getTime() -\n (new Date(b[_this.parent.taskFields.startDate])).getTime());\n });\n var sortedEndDate = flatData.slice().sort(function (a, b) {\n return ((new Date(b[_this.parent.taskFields.endDate])).getTime() - (new Date(a[_this.parent.taskFields.endDate])).getTime());\n });\n minStartDate = sortedStartDate[0][this.parent.taskFields.startDate];\n maxEndDate = sortedEndDate[sortedEndDate.length - 1][this.parent.taskFields.endDate];\n }\n this.parent.cloneProjectStartDate = projectStartDate ? new Date(projectStartDate.getTime()) :\n typeof minStartDate === 'string' ? new Date(minStartDate) : minStartDate;\n this.parent.cloneProjectEndDate = projectEndDate ? new Date(projectEndDate.getTime()) :\n typeof maxEndDate === 'string' ? new Date(maxEndDate) : maxEndDate;\n };\n /**\n *\n * @param {object} editArgs .\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.calculateProjectDates = function (editArgs) {\n var _this = this;\n if (this.parent.isLoad && this.parent.enablePersistence &&\n this.parent.cloneProjectStartDate && this.parent.cloneProjectEndDate) {\n this.parent.cloneProjectStartDate = this.getDateFromFormat(this.parent.cloneProjectStartDate);\n this.parent.cloneProjectEndDate = this.getDateFromFormat(this.parent.cloneProjectEndDate);\n return;\n }\n var sDate = typeof this.parent.projectStartDate === 'string' ?\n new Date(this.parent.projectStartDate) : this.parent.projectStartDate;\n var eDate = typeof this.parent.projectEndDate === 'string' ?\n new Date(this.parent.projectEndDate) : this.parent.projectEndDate;\n var projectStartDate = this.parent.timelineModule.isZooming && this.parent.cloneProjectStartDate\n ? this.getDateFromFormat(this.parent.cloneProjectStartDate) : this.getDateFromFormat(sDate);\n var projectEndDate = this.parent.timelineModule.isZooming && this.parent.cloneProjectEndDate\n ? this.getDateFromFormat(this.parent.cloneProjectEndDate) : this.getDateFromFormat(eDate);\n var minStartDate = null;\n var maxEndDate = null;\n var flatData = this.parent.flatData;\n var currentViewData = this.parent.currentViewData;\n var taskRange = [];\n var addDateToList = function (date) {\n if (!isNullOrUndefined(date)) {\n taskRange.push(date);\n }\n };\n var sortDates = function (dates) {\n if (dates.length > 0) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n minStartDate = new Date(dates[0].getTime());\n maxEndDate = dates.length > 1 ? new Date(dates[dates.length - 1].getTime()) : null;\n }\n };\n if (((!projectStartDate || !projectEndDate) && flatData.length > 0) || editArgs || this.parent.timelineModule.isZoomToFit) {\n var viewData = void 0;\n if (currentViewData.length > 0 && this.parent.timelineModule.isZoomToFit &&\n this.parent.treeGrid.filterModule &&\n this.parent.treeGrid.filterModule.filteredResult.length > 0) {\n viewData = currentViewData;\n }\n else {\n viewData = flatData;\n }\n viewData.forEach(function (data) {\n taskRange = [];\n var task = data.ganttProperties;\n var tempStartDate = _this.getValidStartDate(task);\n var tempEndDate = _this.getValidEndDate(task);\n addDateToList(minStartDate);\n addDateToList(maxEndDate);\n addDateToList(tempStartDate);\n addDateToList(tempEndDate);\n if (_this.parent.renderBaseline && !_this.parent.timelineModule.isZoomToFit) {\n addDateToList(task.baselineStartDate);\n addDateToList(task.baselineEndDate);\n }\n if (task.indicators && task.indicators.length > 0 && !_this.parent.timelineModule.isZoomToFit) {\n task.indicators.forEach(function (item) {\n addDateToList(_this.getDateFromFormat(item.date));\n });\n }\n sortDates(taskRange);\n });\n taskRange = [];\n addDateToList(minStartDate);\n addDateToList(maxEndDate);\n //update schedule dates as per holiday and strip line collection\n if (this.parent.eventMarkers.length > 0 && !this.parent.timelineModule.isZoomToFit) {\n var eventMarkers = this.parent.eventMarkers;\n // eslint-disable-next-line\n eventMarkers.forEach(function (marker, index) {\n addDateToList(_this.getDateFromFormat(marker.day));\n });\n }\n if (this.parent.totalHolidayDates.length > 0 && !this.parent.timelineModule.isZoomToFit) {\n var holidays = this.parent.totalHolidayDates;\n // eslint-disable-next-line\n holidays.forEach(function (holiday, index) {\n addDateToList(new Date(holiday));\n });\n }\n sortDates(taskRange);\n if (!minStartDate || !maxEndDate) {\n if (!minStartDate) {\n minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;\n minStartDate.setHours(0, 0, 0, 0);\n }\n else {\n minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;\n }\n maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));\n maxEndDate.setDate(maxEndDate.getDate() + 20);\n }\n }\n else if ((!projectStartDate || !projectEndDate) && flatData.length === 0) {\n minStartDate = this.getDateFromFormat(new Date());\n maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));\n }\n if (!editArgs) {\n this.prevProjectStartDate = this.parent.cloneProjectStartDate;\n this.parent.cloneProjectStartDate = minStartDate ? minStartDate : new Date(projectStartDate.getTime());\n this.parent.cloneProjectEndDate = maxEndDate ? maxEndDate : new Date(projectEndDate.getTime());\n }\n else {\n setValue('minStartDate', minStartDate, editArgs);\n setValue('maxEndDate', maxEndDate, editArgs);\n }\n };\n /**\n *\n * @param {ITaskSegment} segments .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.splitTasksDuration = function (segments) {\n var duration = 0;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var sDate = segment.startDate;\n var eDate = segment.endDate;\n if (this.parent.timelineModule.bottomTier === \"Hour\") {\n duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60));\n }\n else if (this.parent.timelineModule.bottomTier === \"Minutes\") {\n duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60));\n }\n else {\n duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24));\n }\n }\n return duration;\n };\n return DateProcessor;\n}());\nexport { DateProcessor };\n","/**\n * Common methods used in Gantt\n */\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, UrlAdaptor, WebApiAdaptor, ODataAdaptor } from '@syncfusion/ej2-data';\nimport { WebMethodAdaptor, CacheAdaptor, RemoteSaveAdaptor, ODataV4Adaptor } from '@syncfusion/ej2-data';\n/**\n * @param {Element} elem .\n * @param {string} selector .\n * @param {boolean} isID .\n * @returns {Element} .\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {ITaskData} ganttProp .\n * @returns {boolean} .\n * @hidden\n */\nexport function isScheduledTask(ganttProp) {\n if (isNullOrUndefined(ganttProp.startDate) && isNullOrUndefined(ganttProp.endDate) &&\n isNullOrUndefined(ganttProp.duration)) {\n return null;\n }\n else if (isNullOrUndefined(ganttProp.startDate) || isNullOrUndefined(ganttProp.endDate) ||\n isNullOrUndefined(ganttProp.duration)) {\n return false;\n }\n else {\n return true;\n }\n}\n/**\n * @param {Gantt} parent .\n * @returns {boolean} .\n * @hidden\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && !(parent.dataSource instanceof DataManager) &&\n 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {object} obj .\n * @returns {object} .\n * @hidden\n */\nexport function getSwapKey(obj) {\n var temp = {};\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n temp[obj[key]] = key;\n }\n return temp;\n}\n/**\n * @param {object} dataSource .\n * @returns {boolean} .\n * @hidden\n */\nexport function isRemoteData(dataSource) {\n if (dataSource instanceof DataManager) {\n var adaptor = dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor || (adaptor instanceof ODataV4Adaptor) ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || (adaptor instanceof RemoteSaveAdaptor) ||\n adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {IGanttData[]} records .\n * @param {boolean} isNotExtend .\n * @param {ITaskAddedEventArgs} eventArgs .\n * @param {Gantt} parent .\n * @returns {object[]} .\n * @hidden\n */\nexport function getTaskData(records, isNotExtend, eventArgs, parent) {\n if (eventArgs) {\n var result = void 0;\n for (var i = 0; i < records.length; i++) {\n var data = void 0;\n // eslint-disable-next-line\n data = isNotExtend ? (records[i].taskData) : extend({}, records[i].taskData, {}, true);\n result = (data);\n }\n return result;\n }\n else {\n var result = [];\n for (var i = 0; i < records.length; i++) {\n var data = void 0;\n if (!isNullOrUndefined(parent) && parent.timezone) {\n updateDates(records[i], parent);\n }\n // eslint-disable-next-line\n data = isNotExtend ? (records[i].taskData) : extend({}, records[i].taskData, {}, true);\n result.push(data);\n }\n return result;\n }\n}\n/**\n * @param {IGanttData} record .\n * @param {Gantt} parent .\n * @returns {null} .\n * @hidden\n */\nexport function updateDates(record, parent) {\n // let startDate: Date = (record as IGanttData).taskData[parent.taskFields.startDate];\n record.taskData[parent.taskFields.startDate] = parent.dateValidationModule.remove(record.ganttProperties.startDate, parent.timezone);\n if (parent.taskFields.endDate != null) {\n record.taskData[parent.taskFields.endDate] = parent.dateValidationModule.remove(record.ganttProperties.endDate, parent.timezone);\n }\n if (parent.taskFields.baselineEndDate || parent.taskFields.baselineStartDate) {\n record.taskData[parent.taskFields.baselineStartDate] = parent.dateValidationModule.remove(record.ganttProperties.baselineStartDate, parent.timezone);\n record.taskData[parent.taskFields.baselineEndDate] = parent.dateValidationModule.remove(record.ganttProperties.baselineEndDate, parent.timezone);\n }\n return null;\n}\n/**\n * @param {string} str .\n * @param {string[]} args .\n * @returns {string} .\n * @hidden\n */\nexport function formatString(str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].toString());\n }\n return str;\n}\n/**\n * @param {any} value .\n * @param {string} key1 .\n * @param {any} collection .\n * @param {string} key2\n * @returns {number} .\n * @hidden\n */\n/* eslint-disable-next-line */\nexport function getIndex(value, key1, collection, key2) {\n var index = -1;\n for (var i = 0; i < collection.length; i++) {\n if (getValue(key1, collection[i]) === getValue(key1, value) && isNullOrUndefined(key2)\n || (!isNullOrUndefined(key2) && getValue(key1, collection[i]) === getValue(key1, value)\n && getValue(key2, collection[i]) === getValue(key2, value))) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {number} value .\n * @returns {number} .\n * @hidden\n */\nexport function pixelToPoint(value) {\n return (value * 76) / 92;\n}\n/**\n * @param {number} value .\n * @returns {number} .\n * @hidden\n */\nexport function pointToPixel(value) {\n return (value * 92) / 76;\n}\nvar uid = 0;\n/**\n * @returns {number} .\n * @hidden\n */\nexport function getUid() {\n return uid++;\n}\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow' || !this.clipBoardTextArea) {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getDataRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === literals.leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('CheckBoxLabel') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n node.setAttribute('aria-description', elementDesc);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || (args.requestType === 'searching' && args.searchString === '') ||\n args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader.firstElementChild) {\n if (movableHeader.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent.firstElementChild.classList.contains('e-masked-table')) {\n movableContent.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = (gObj.allowPaging && gObj.editSettings.allowAdding && (gObj.editSettings.mode !== 'Batch') &&\n (gObj.editSettings.newRowPosition === 'Bottom')) ? gObj.currentViewData.length - 1 : this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, res[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && res[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = res[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData)\n .executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && (stateStr === 'Uncheck' || this.isCheckboxReset)) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n if (this.parent.enableVirtualization && this.parent.isPersistSelection) {\n state = true;\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && this.isPartialSelection) && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.getData().length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && (checkedLen === this.parent.totalDataRecordsCount)) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + literals.movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + literals.movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onContentScroll);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onContentScroll);\n }\n }\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight) {\n _this.setLastRowCell();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isFrozenGrid()) {\n var mTable = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (mTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(mTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(mTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenRightColumnsCount()) {\n var frTable = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(frTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(frTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { datarole: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = this.enableVirtualization && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content.style.height = contentHeight + 'px';\n }\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))\n && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content = gridHeader;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n if (this.isFrozenGrid()) {\n if (content) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || (header && this.isFrozenGrid())) {\n var rowCountElement = gridContent;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = content && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && axisDirection) ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table.querySelector('thead').getBoundingClientRect().height + 'px';\n }\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n maskCell.removeAttribute('data-colindex');\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent.querySelector('.e-frozen-right-content'));\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n _this.refreshReactTemplateTD(rows, isChildGrid);\n var mCont = _this.getContent().querySelector('.' + literals.movableContent);\n var frCont = _this.getContent().querySelector('.e-frozen-right-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getMovableDataRows(), isChildGrid, true);\n }\n if (frCont && frCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getFrozenRightDataRows(), isChildGrid, true);\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n this.element.classList.add(this.cssClass);\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('data-tooltip-id')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row.getAttribute(literals.dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group')) && !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, this.currencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('22.1.39')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {{frozenLeft: Column[], movable: Column[], frozenRight: Column[]}} - Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nexport function getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n document.body.querySelector('.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n this.initiateFilter(coll);\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n addClass([checkBox], [this.parent.cssClass]);\n }\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n value = getObject(field, value); //local remote diff, check with mdu\n if (!(value in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && cols[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)], tableName);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader()\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n if (isFrozen && gObj.allowResizing) {\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent)) {\n table.style.width = movableContent.style.width;\n }\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === literals.leftRight &&\n colFreezeMode === literals.frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr');\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg_1.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\n if (!isNullOrUndefined(this.active)) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevActiveName = this.getActiveName();\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString()) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && ((tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)\n || !tr.classList.contains('e-row')) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content, frozenContent, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -1;\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? literals.frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? literals.frozenRight : 'movable';\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', 'Clear');\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === literals.leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[parseInt(i.toString())]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && element.classList.contains('e-date-range-wrapper')) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = void 0;\n spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var offsetPos = this.calculateTooltipOffset(this.position);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\n }\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDataTooltipId(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDataTooltipId(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: true }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDataTooltipId(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[\"\" + addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[parseInt(k.toString(), 10)][\"\" + key]) === 'object') {\n modifiedData[parseInt(k.toString(), 10)] = modifiedData[parseInt(k.toString(), 10)][\"\" + key];\n }\n var keys = modifiedData[parseInt(k.toString(), 10)].taskData ?\n Object.keys(modifiedData[parseInt(k.toString(), 10)].taskData) :\n Object.keys(modifiedData[parseInt(k.toString(), 10)]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[parseInt(i.toString(), 10)][\"\" + key] === modifiedData[parseInt(k.toString(), 10)][\"\" + key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[parseInt(i.toString(), 10)];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[\"\" + control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[\"\" + control.idMapping] === currentData_1[\"\" + control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[\"\" + control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[parseInt(p.toString(), 10)][\"\" + control.idMapping] === currentData_1[\"\" + control.idMapping]) {\n if (!control.enableImmutableMode && parentData.childRecords.length === parentData['Children'].length) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], keys[parseInt(j.toString(), 10)]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[\"\" + changedRecords].length === 0))\n || keys[parseInt(j.toString(), 10)] === columnName)) {\n var editedData = getParentData(control, modifiedData[parseInt(k.toString(), 10)].uniqueID);\n treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]] =\n modifiedData[parseInt(k.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[parseInt(j.toString(), 10)]] = editedData[keys[parseInt(j.toString(), 10)]]\n = treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[\"\" + control.parentIdMapping] = treeData[parseInt(i.toString(), 10)][\"\" + control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], control.childMapping)) {\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping] = [];\n }\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping])) {\n if (removeChildRecords(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping], modifiedData[parseInt(k.toString(), 10)], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[parseInt(addRowIndex.toString(), 10)];\n if (!isNullOrUndefined(currentdata) && currentdata[\"\" + primaryKeys] === details.value[\"\" + primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[\"\" + internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[parseInt(j.toString(), 10)][\"\" + key] === modifiedData[\"\" + key] ||\n (isSelfReference && childRecords[parseInt(j.toString(), 10)][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], keys[parseInt(i.toString(), 10)]) &&\n (control.editSettings.mode !== 'Cell' || keys[parseInt(i.toString(), 10)] === columnName)) {\n editedData[keys[parseInt(i.toString(), 10)]] =\n editedData.taskData[keys[parseInt(i.toString(), 10)]] =\n childRecords[parseInt(j.toString(), 10)][keys[parseInt(i.toString(), 10)]] =\n modifiedData[keys[parseInt(i.toString(), 10)]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[\"\" + editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[\"\" + editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[\"\" + control.parentIdMapping] = childRecords[parseInt(j.toString(), 10)][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], control.childMapping)) {\n childRecords[parseInt(j.toString(), 10)][control.childMapping] = [];\n }\n childRecords[parseInt(j.toString(), 10)][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[parseInt(j.toString(), 10)][control.childMapping])) {\n if (removeChildRecords(childRecords[parseInt(j.toString(), 10)][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[\"\" + key] === record[\"\" + key]) {\n index_1 = i;\n return;\n } });\n if (control.enableVirtualization && isNullOrUndefined(index_1)) {\n var updatedParent = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n record = updatedParent;\n }\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[parseInt(index_1.toString(), 10)];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[\"\" + control.childMapping].indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[parseInt(i.toString(), 10)][\"\" + primaryKeys] === record[\"\" + primaryKeys]) {\n data[parseInt(i.toString(), 10)] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[\"\" + key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[parseInt(index_2.toString(), 10)] ? row.cells[parseInt(index_2.toString(), 10)]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\n }\n }\n }\n}\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.searchingRecords = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = 'stackedHeader';\n var columnModel = 'columnModel';\n var columns = this.parent[\"\" + stackedHeader] ? this.parent[\"\" + columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[parseInt(col.toString(), 10)].showCheckbox) {\n mappingUid = columns[parseInt(col.toString(), 10)].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[parseInt(j.toString(), 10)];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox', 'aria-label': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[parseInt(i.toString(), 10)]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[parseInt(j.toString(), 10)])) {\n flatRecord[keys[parseInt(j.toString(), 10)]] = record[keys[parseInt(j.toString(), 10)]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[parseInt(count.toString(), 10)].isSummaryRow) {\n if (childRecords[parseInt(count.toString(), 10)].hasChildRecords) {\n this.traverSelection(childRecords[parseInt(count.toString(), 10)], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[parseInt(count.toString(), 10)], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[parseInt(i.toString(), 10)].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && (!record.hasFilteredChildRecords || isNullOrUndefined(record.hasFilteredChildRecords)) && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check') {\n record.checkboxState = 'check';\n }\n else if ((checkChildRecords === 0 && indeter === 0) || (checkChildRecords === 0 && record.hasFilteredChildRecords && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check')) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n //This property used to maintain the check state of the currentview data after clear filtering\n var multiFilterCheckState = false;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n if (this.parent.grid.searchSettings.key.length) {\n this.searchingRecords = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n multiFilterCheckState = true;\n }\n else {\n multiFilterCheckState = false;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length && !this.parent.grid.searchSettings.key.length) {\n this.filteredList = [];\n }\n if (this.searchingRecords.length && !isNullOrUndefined(checkAll)) {\n this.filteredList = this.searchingRecords;\n }\n }\n var data;\n if (!(isNullOrUndefined(this.parent.filterModule)) &&\n this.parent.filterModule.filteredResult.length === 0 && this.parent.getCurrentViewRecords().length === 0 &&\n this.parent.filterSettings.columns.length > 0) {\n data = this.filteredList;\n }\n else {\n data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList : this.parent.flatData;\n }\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[parseInt(i.toString(), 10)].checkboxState === 'check') {\n continue;\n }\n if (multiFilterCheckState) {\n continue;\n }\n data[parseInt(i.toString(), 10)].checkboxState = 'check';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[parseInt(i.toString(), 10)]);\n if (index > -1) {\n data[parseInt(i.toString(), 10)].checkboxState = 'uncheck';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.grid.currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.grid.currentViewData.indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var tr = this.parent.getRows()[parseInt(recordIndex.toString(), 10)];\n var checkbox;\n if (recordIndex > -1) {\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[parseInt(recordIndex.toString(), 10)];\n }\n checkbox = tr.querySelectorAll('.e-frame')[0] ? tr.querySelectorAll('.e-frame')[0]\n : movableTr.querySelectorAll('.e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && this.parent.enableVirtualization && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n var chkstate = checkState === 'check' ? 'checked' : checkState === 'uncheck' ? 'unchecked' : 'mixed';\n tr.querySelector('.e-treecheckselect').setAttribute('aria-checked', checkState === 'check' ? 'true' : checkState === 'uncheck' ? 'false' : 'mixed');\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[parseInt(i.toString(), 10)], childData[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[parseInt(i.toString(), 10)]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[parseInt(i.toString(), 10)], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[parseInt(i.toString(), 10)].parentItem)) {\n this.updateParentSelection(updatedData[parseInt(i.toString(), 10)].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.getCurrentViewRecords() : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords && record.childRecords.length > 0) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[parseInt(i.toString(), 10)].hasChildRecords) {\n _this.updateParentSelection(child[parseInt(i.toString(), 10)]);\n }\n else if (!(child[parseInt(i.toString(), 10)].hasChildRecords) &&\n !isNullOrUndefined(child[parseInt(i.toString(), 10)])) {\n _this.updateSelectedItems(child[parseInt(i.toString(), 10)], child[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n","/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n ContextMenuItems[ContextMenuItems[\"RowIndent\"] = 16] = \"RowIndent\";\n ContextMenuItems[ContextMenuItems[\"RowOutdent\"] = 17] = \"RowOutdent\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, Property } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[parseInt(i.toString(), 10)] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[\"\" + refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n/**\n * Defines TreeGrid column\n */\nvar TreeGridColumn = /** @class */ (function (_super) {\n __extends(TreeGridColumn, _super);\n function TreeGridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TreeGridColumn.prototype, \"columns\", void 0);\n return TreeGridColumn;\n}(Column));\nexport { TreeGridColumn };\n/**\n * Defines stacked tree grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(TreeGridColumn));\nexport { StackedColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Loading Indicator of the Tree Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n","/**\n *\n * `Logger` class\n */\nimport { isNullOrUndefined, L10n, isUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil, DataManager } from '@syncfusion/ej2-data';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nexport { Logger };\nexport var detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns || parent.frozenRows >= parent.currentViewData.length };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/base/intl.html?#supported-format-string.\\n\") +\n (\"Date format: \" + DOC_URL + \"/base/intl.html?#manipulating-datetime.\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[parseInt(i.toString(), 10)] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[parseInt(i.toString(), 10)] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[parseInt(i.toString(), 10)] === 'primary_column_missing' || type[parseInt(i.toString(), 10)] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[parseInt(i.toString(), 10)] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[parseInt(i.toString(), 10)] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[parseInt(i.toString(), 10)] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[parseInt(i.toString(), 10)] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[parseInt(i.toString(), 10)] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent, serviceLocator) {\n var _this = _super.call(this, parent.grid, serviceLocator) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n _this.serviceLocator = serviceLocator;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[\"\" + copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[parseInt(i.toString(), 10)]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[parseInt(i.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader, i);\n }\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[\"\" + copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] =\n this.treeGridParent.getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this[\"\" + getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this[\"\" + copyContent] = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this[\"\" + isSelect] = true;\n this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem])) {\n var treeLevel = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem]) &&\n currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[parseInt(selectedIndex.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[\"\" + copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + hasChildRecords]) {\n var childData = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) && currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) {\n if ((!isNullOrUndefined(rows[parseInt(j.toString(), 10)])) && !rows[parseInt(j.toString(), 10)].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[\"\" + copyContent]);\n this[\"\" + copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed && !isNullOrUndefined(args.row)) {\n args.row.style.display = 'none';\n var rowsObj = this.parent.grid.getRowsObject();\n if (!this.parent.grid.isFrozenGrid() && !isNullOrUndefined(args.row.getAttribute('data-uid'))) {\n rowsObj.filter(function (e) { return e.uid === args.row.getAttribute('data-uid'); })[0].visible = false;\n }\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0 && !parentrec[0].isSummaryRow && !isNullOrUndefined(args.row)) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (!isNullOrUndefined(args.row)) {\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n }\n var dragStartData = 'dragStartData';\n var draggedRecord = 'draggedRecord';\n if (this.parent.rowDragAndDropModule && this.parent.grid.rowDragAndDropModule && (this.parent.grid.rowDragAndDropModule[\"\" + dragStartData] ||\n this.parent.rowDragAndDropModule[\"\" + draggedRecord]) && this.parent.getContentTable().scrollHeight <= this.parent.getContent().clientHeight) {\n var lastRowBorder = 'lastRowBorder';\n var lastVisualData = this.parent.getVisibleRecords()[this.parent.getVisibleRecords().length - 1];\n if (lastVisualData.uniqueID === args.data.uniqueID && !isNullOrUndefined(args.row) && !args.row.cells[0].classList.contains('e-lastrowcell')) {\n this.parent[\"\" + lastRowBorder](args.row, true);\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[\"\" + getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n if (this.parent['isFromGantt'] && !this.parent.loadChildOnDemand) {\n iconRequired = data.hasChildRecords;\n }\n else {\n iconRequired = !(data.childRecords.length === 0);\n }\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n args.cell.setAttribute('aria-expanded', data.expanded ? 'true' : 'false');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '4px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n summaryData = isNullOrUndefined(summaryData) ? null : summaryData;\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n if (args.column.template) {\n args.cell.innerHTML = null;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('data-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n args.column.template = treeColumn.template;\n args.column[\"\" + templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[\"\" + templateFn](args.data, this.parent, 'columnTemplate', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[\"\" + portals])) {\n this.parent.grid[\"\" + portals] = this.parent[\"\" + portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n this.parent[\"\" + renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[\"\" + templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[\"\" + str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[\"\" + templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[parseInt(j.toString(), 10)].isDataRow && !isNullOrUndefined(rowsObj[parseInt(j.toString(), 10)].index)) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[parseInt(j.toString(), 10)].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[parseInt(j.toString(), 10)].data, { index: rowsObj[parseInt(j.toString(), 10)][\"\" + rowIdx] });\n var treecell = _this.parent.getRows()[parseInt(j.toString(), 10)]\n .cells[parseInt(cellIndex.toString(), 10)];\n _this.cellRender({ data: rowsObj[parseInt(j.toString(), 10)].data, cell: treecell, column: cell.column });\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[\"\" + portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n this.parent[\"\" + renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[parseInt(i.toString(), 10)];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[parseInt(i.toString(), 10)];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[parseInt(index.toString(), 10)][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[\"\" + isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var actionArgs = 'actionArgs';\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && args[\"\" + actionArgs].requestType === 'virtualscroll') {\n this.parent.hideSpinner();\n }\n var records = args.result;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && (args[\"\" + actionArgs].requestType === 'virtualscroll' || args[\"\" + actionArgs].action === 'clearFilter' || args[\"\" + actionArgs].searchString === '')) {\n this.parent.query.expands = [];\n }\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n var _loop_1 = function (rec) {\n if (isCountRequired(this_1.parent) && records[parseInt(rec.toString(), 10)].hasChildRecords &&\n this_1.parent.initialRender) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization) {\n var childRecords_1 = [];\n var parent_1 = this_1.parent;\n records.filter(function (e) {\n if (e[\"\" + parent_1.parentIdMapping] === records[parseInt(rec.toString(), 10)][\"\" + parent_1.idMapping]) {\n childRecords_1.push(e);\n }\n });\n if (childRecords_1.length) {\n records[parseInt(rec.toString(), 10)].expanded = true;\n }\n else if (records[parseInt(rec.toString(), 10)].hasChildRecords) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n }\n if (isNullOrUndefined(records[parseInt(rec.toString(), 10)].index)) {\n records[parseInt(rec.toString(), 10)].taskData = extend({}, records[parseInt(rec.toString(), 10)]);\n records[parseInt(rec.toString(), 10)].uniqueID = getUid(this_1.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[parseInt(rec.toString(), 10)].uniqueID, records[parseInt(rec.toString(), 10)], this_1.parent);\n records[parseInt(rec.toString(), 10)].level = 0;\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization && records[parseInt(rec.toString(), 10)][\"\" + this_1.parent.parentIdMapping] && records[parseInt(rec.toString(), 10)].level === 0) {\n records[parseInt(rec.toString(), 10)].level = records[parseInt(rec.toString(), 10)].level + 1;\n }\n records[parseInt(rec.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n if ((records[parseInt(rec.toString(), 10)][this_1.parent.hasChildMapping] ||\n this_1.parentItems.indexOf(records[parseInt(rec.toString(), 10)][this_1.parent.idMapping]) !== -1)) {\n records[parseInt(rec.toString(), 10)].hasChildRecords = true;\n }\n records[parseInt(rec.toString(), 10)].checkboxState = 'uncheck';\n }\n };\n var this_1 = this;\n for (var rec = 0; rec < records.length; rec++) {\n _loop_1(rec);\n }\n }\n else {\n var dataResults = 'dataResults';\n var expandRecord = 'expandRecord';\n if (!isNullOrUndefined(records) && !((this.parent.loadChildOnDemand) && isCountRequired(this.parent) && !isNullOrUndefined(this.parent[\"\" + dataResults][\"\" + expandRecord])) &&\n !(isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization)) {\n this.convertToFlatData(records);\n }\n }\n }\n if (isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization) {\n args.result = records;\n }\n else if (isRemoteData(this.parent) && this.parent.enableVirtualization && !this.parent.loadChildOnDemand) {\n args.result = records;\n }\n else {\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n }\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && this.parent.loadChildOnDemand\n && this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var query = 'query';\n var summaryQuery = args[\"\" + query].queries.filter(function (q) { return q.fn === 'onAggregates'; });\n args.result = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n var name = 'name';\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[parseInt(i.toString(), 10)].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[parseInt(i.toString(), 10)].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ?\n this.parent.grid.getCurrentViewRecords()[rowDetails.rows[parseInt(i.toString(), 10)].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ action: rowDetails[\"\" + name], record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n if (this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n qry.take(this.parent.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('ExpandingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());\n qry.expand(expandDetail);\n }\n else if (this.parent.enableVirtualization && rowDetails.action === 'collapse') {\n qry.take(this.parent.grid.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('CollapsingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());\n qry.expand(expandDetail);\n }\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n if (rowDetails.action === 'remoteExpand' && this.parent.grid.filterModule && this.parent.grid.filterModule['value']) {\n var filterqry = this.parent.grid.getDataModule().generateQuery().queries.filter(function (e) { return e.fn !== 'onPage' && typeof e.e.predicates !== 'undefined'; });\n qry.queries.push(filterqry[0]);\n }\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var remoteExpandedData = 'remoteExpandedData';\n var remoteCollapsedData = 'remoteCollapsedData';\n var level = 'level';\n var datas = _this.parent.grid.currentViewData.slice();\n var inx = datas.indexOf(rowDetails.record);\n if (_this.parent.enableVirtualization && (rowDetails.action === 'collapse' || rowDetails.action === 'remoteExpand')) {\n datas = [];\n for (var i = 0; i < inx; i++) {\n datas.push(_this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n var resultChildData = [];\n if (rowDetails.action === 'remoteExpand' && _this.parent.grid.filterModule && _this.parent.grid.filterModule['value']) {\n for (var i = 0; i < datas.length; i++) {\n if (Object.prototype.hasOwnProperty.call(datas[parseInt(i.toString(), 10)], _this.parent.parentIdMapping) && datas[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping] !== null && datas[parseInt(i.toString(), 10)].level === 0) {\n datas.splice(i, 1);\n i--;\n }\n }\n for (var i = 0; i < result.length; i++) {\n if (rowDetails.record['' + _this.parent.idMapping] !== result[parseInt(i.toString(), 10)]['' + _this.parent.idMapping] &&\n rowDetails.record['' + _this.parent.idMapping] === result[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping]) {\n if (Object.prototype.hasOwnProperty.call(result, i)) {\n resultChildData.push(result[parseInt(i.toString(), 10)]);\n }\n }\n }\n result = resultChildData;\n }\n if (_this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n rowDetails.record.childRecords = [];\n for (var i = 0; i < result.length; i++) {\n if (rowDetails.record['' + _this.parent.idMapping] !== result[parseInt(i.toString(), 10)]['' + _this.parent.idMapping] &&\n rowDetails.record['' + _this.parent.idMapping] === result[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping] && Object.prototype.hasOwnProperty.call(result, i)) {\n rowDetails.record.childRecords.push(result[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n rowDetails.record.childRecords = result;\n }\n for (var r = 0; r < result.length; r++) {\n if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'remoteExpand') {\n _this.parent[\"\" + remoteExpandedData].push(rowDetails.record);\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'collapse') {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteExpandedData].splice(i, 1);\n }\n }\n }\n result[parseInt(r.toString(), 10)].taskData = extend({}, result[parseInt(r.toString(), 10)]);\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] && _this.parent.enableVirtualization && _this.parent[\"\" + remoteExpandedData].length) {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + level] + 1;\n var parentData = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)];\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n }\n else if (_this.parent.enableVirtualization) {\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n if (isNullOrUndefined(result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping])) {\n result[parseInt(r.toString(), 10)].level = 0;\n if (rowDetails.action === 'remoteExpand') {\n result[parseInt(r.toString(), 10)].childRecords = [];\n result[parseInt(r.toString(), 10)].childRecords = rowDetails.record.childRecords;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level;\n }\n }\n else {\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level + 1;\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n result[parseInt(r.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n result[parseInt(r.toString(), 10)].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[parseInt(r.toString(), 10)].checkboxState = 'uncheck';\n if (_this.parent.enableVirtualization && isNullOrUndefined(result[parseInt(r.toString(), 10)].level)) {\n for (var p = 0; p < _this.parent.grid.currentViewData.length; p++) {\n if (_this.parent.grid.currentViewData[parseInt(p.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent.grid.currentViewData[parseInt(p.toString(), 10)]['level'] + 1;\n }\n }\n }\n setValue('uniqueIDCollection.' + result[parseInt(r.toString(), 10)].uniqueID, result[parseInt(r.toString(), 10)], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n result[parseInt(r.toString(), 10)].hasChildRecords = true;\n if (_this.parent.enableVirtualization && _this.parent.loadChildOnDemand) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)]['expanded'];\n }\n }\n if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] !== rowDetails.record[\"\" + _this.parent.idMapping] && result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = false;\n _this.parent[\"\" + remoteCollapsedData].push(rowDetails.record);\n }\n else if (rowDetails.action === 'remoteExpand') {\n for (var i = 0; i < _this.parent.grid.currentViewData.length; i++) {\n if (_this.parent.grid.currentViewData[parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result.splice(r, 1, _this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (result[parseInt(r.toString(), 10)][_this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteCollapsedData].splice(i, 1);\n }\n }\n }\n if (result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n }\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action !== 'collapse') {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (!(_this.parent.enableVirtualization && _this.parent.loadChildOnDemand)) {\n result[parseInt(r.toString(), 10)].expanded = false;\n }\n }\n datas.splice(inx + r + 1, 0, result[parseInt(r.toString(), 10)]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[\"\" + result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[\"\" + result_1], true);\n }\n }\n if (_this.parent.enableVirtualization) {\n _this.parent.grid.pageSettings.totalRecordsCount = e.count;\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization) {\n var index = this.parent.query.queries.indexOf(this.parent.query.queries.filter(function (q) { return q.fn === 'onSortBy'; })[0]);\n if (index !== -1) {\n this.parent.query.queries.splice(index, 1);\n }\n if (this.parent.grid.sortSettings.columns.length === 0) {\n this.parent.query.sortBy(null, null);\n }\n }\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n var keys = Object.keys(data);\n for (var i = 0, len = keys.length; i < len; i++) {\n var currentData = extend({}, data[parseInt(i.toString(), 10)]);\n currentData.taskData = data[parseInt(i.toString(), 10)];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if ((!isNullOrUndefined(currentData[this.parent.childMapping]) && !isCountRequired(this.parent)) ||\n ((currentData[this.parent.hasChildMapping]) && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n var remoteCollapsedData = 'remoteCollapsedData';\n if (this.parent.enableVirtualization && this.parent.loadChildOnDemand && isRemoteData(this.parent)\n && !this.parent.initialRender) {\n if (!currentData.hasChildRecords && isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping])) {\n currentData.hasChildRecords = true;\n for (var c = 0; c < this.parent[\"\" + remoteCollapsedData].length; c++) {\n if (this.parent[\"\" + remoteCollapsedData][parseInt(c.toString(), 10)][\"\" + this.parent.idMapping] === currentData[\"\" + this.parent.idMapping]) {\n currentData.expanded = false;\n }\n }\n }\n else if (currentData.level === 0 && isNullOrUndefined(parentRecords) && !currentData.hasChildRecords) {\n currentData.level = currentData.level + 1;\n }\n if (currentData[\"\" + this.parent.hasChildMapping] && !isNullOrUndefined(currentData[\"\" + this.parent.expandStateMapping])) {\n currentData.expanded = currentData[\"\" + this.parent.expandStateMapping];\n currentData.hasChildRecords = true;\n }\n this.parent.flatData.push(currentData);\n }\n else if (isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n this.parent['infiniteScrollData'].push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[\"\" + primaryKeyColumnName])) {\n actionAddArgs.data[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n dataValue.taskData[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[\"\" + getColumnByField](this.parent.grid.\n sortSettings.columns[parseInt(srt.toString(), 10)].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&\n this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n modifiedData.splice(dragdIndex, 1);\n var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[\"\" + isPdfExport] && (isNullOrUndefined(args[\"\" + isCollapsedStatePersist])\n || args[\"\" + isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[parseInt(i.toString(), 10)], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[parseInt(i.toString(), 10)]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, addClass, createElement, EventHandler, isNullOrUndefined, extend, merge, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { LoadingIndicator } from '../models/loading-indicator';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\nimport * as literals from '../base/constant';\n/**\n * Represents the TreeGrid component.\n * ```html\n *
\n * \n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== current[keys[parseInt(i.toString(), 10)]] &&\n excludeKeys.indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date &&\n current[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]].getTime() !==\n current[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[\"\" + logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} - Returns promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n TreeGrid.prototype.sortByColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Searches TreeGrid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridexpand')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridcollapse')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n target = e.target;\n parentTarget = target.parentElement;\n var cellIndex = parentTarget.cellIndex;\n if (this.grid.getColumnByIndex(cellIndex).editType === 'dropdownedit' && isNullOrUndefined(this.grid.getColumnByIndex(cellIndex).edit['obj'])) {\n parentTarget = target;\n }\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var rowIndex = summaryElement.rowIndex;\n this.selectRow(rowIndex);\n var cellIndex_1 = e.target.cellIndex;\n var row_1 = summaryElement.children[parseInt(cellIndex_1.toString(), 10)];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n target = e.target;\n parentTarget = target.parentElement;\n var cellIndex = parentTarget.cellIndex;\n if (this.grid.getColumnByIndex(cellIndex).editType === 'dropdownedit' && isNullOrUndefined(this.grid.getColumnByIndex(cellIndex).edit['obj'])) {\n parentTarget = target;\n }\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var rIndex = summaryElement.rowIndex;\n this.selectRow(rIndex);\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[parseInt(cIndex.toString(), 10)];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.infiniteScrollData = [];\n this.remoteCollapsedData = [];\n this.remoteExpandedData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[\"\" + splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n var freezePresent = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'freeze';\n });\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount() || freezePresent.length) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'rowDragAndDrop';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid.vueInstance = this.vueInstance;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[parseInt(i.toString(), 10)].member === 'virtualscroll') {\n modules[parseInt(i.toString(), 10)].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[\"\" + root] = this[\"\" + root] ? this[\"\" + root] : this;\n this.grid.appendTo(gridContainer);\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[\"\" + destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[\"\" + destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[\"\" + portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this, this.grid.serviceLocator);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.enableVirtualMaskRow = this.enableVirtualMaskRow;\n this.grid.loadingIndicator = this.loadingIndicator;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[\"\" + templateInstance] = this[\"\" + templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[\"\" + isJsComponent] = true;\n var enableHtmlSanitizer = 'enableHtmlSanitizer';\n this.grid[\"\" + enableHtmlSanitizer] = this.enableHtmlSanitizer;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.IsExpandCollapseClicked = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))\n && (!isNullOrUndefined(args.data) && args.data['hasChildRecords']) && !this.selectionSettings.checkboxOnly) {\n args.cancel = true;\n return;\n }\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowDeselecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowDeselecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[parseInt(i.toString(), 10)].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(i.toString(), 10)], _this.getCurrentViewRecords()[parseInt(i.toString(), 10)].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n if (!isNullOrUndefined(args.data)) {\n _this.notify(events.rowDeselected, args);\n }\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[\"\" + rowIndex]].classList.contains('e-summaryrow')) {\n args[\"\" + rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[\"\" + loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = getObject('dataSource.requests', _this).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n if (totalRows[parseInt(i.toString(), 10)].nextElementSibling) {\n _this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], true);\n }\n break;\n }\n }\n }\n var action = 'action';\n if (_this.enableVirtualization && _this.selectionSettings.persistSelection && (_this.dataResults[\"\" + action] === 'expand' || _this.dataResults[\"\" + action] === 'collapse')) {\n var refreshPersistSelection = 'refreshPersistSelection';\n _this.grid.selectionModule[\"\" + refreshPersistSelection]();\n if (_this.grid.selectionSettings.type === 'Single') {\n var updateRowSelection = 'updateRowSelection';\n var index = _this.getCurrentViewRecords().indexOf(_this.grid.selectionModule['data']);\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(index.toString(), 10)], index);\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[\"\" + dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var actualTarget = 'actualTarget';\n var target = _this.grid.selectionModule[\"\" + actualTarget];\n if (!isNullOrUndefined(target) && (target.classList.contains('e-treegridexpand') || target.classList.contains('e-treegridcollapse'))) {\n args.cancel = true;\n }\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n if (args.action.requestType !== 'infiniteScroll') {\n _this.infiniteScrollData = [];\n }\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[\"\" + prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n var _this = this;\n if (this.rowTemplate) {\n if (this.isReact && this.getContentTable().rows.length === 0) {\n setTimeout(function () {\n _this.treeColumnRowTemplate();\n if (_this.enableCollapseAll) {\n var currentData = _this.getCurrentViewRecords();\n var rows = _this.getContentTable().rows;\n for (var i = 0; i < rows.length; i++) {\n var args = { data: currentData[parseInt(i.toString(), 10)],\n row: rows[parseInt(i.toString(), 10)] };\n _this.renderModule.RowModifier(args);\n }\n }\n }, 0);\n }\n else {\n this.treeColumnRowTemplate();\n }\n }\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[\"\" + dataSource].json = extendArray(this.dataSource[\"\" + dataSource].json);\n this.grid.dataSource[\"\" + ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[\"\" + ready])) {\n this.grid.dataSource[\"\" + ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[\"\" + dataSource].offline = true;\n dm[\"\" + isDataAvailable] = true;\n dm[\"\" + dataSource].json = e.result;\n dm[\"\" + adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n if (isRemoteData(_this) && _this.enableVirtualization) {\n if (args.requestType === 'virtualscroll') {\n _this.query.expand('VirtualScrollingAction');\n _this.showSpinner();\n }\n else if (args.requestType === 'searching' && args.searchString === '') {\n _this.query.expand('ClearSearchingAction');\n }\n else if (args.action === 'clearFilter') {\n _this.query.expand('ClearFilteringAction');\n }\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 && _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (args.action === 'filter') {\n if (_this.filterModule['currentFilterObject'] !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.requestType === 'searching') {\n if (_this.searchSettings.key !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.action === 'clearFilter' && _this.enableCollapseAll) {\n _this.collapseAll();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n if (_this.grid.isFrozenGrid() && _this.enableVirtualization && args['tableName'] === 'movable') {\n var movableContent = _this.grid.element.querySelector('.' + literals.movableContent);\n var frozenContent = _this.grid.element.querySelector('.' + literals.frozenContent);\n movableContent.style.height = frozenContent.style.height = 'auto';\n }\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[\"\" + ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n this.columns.push(keys[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[\"\" + guid] = this.editSettings[\"\" + guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[parseInt(i.toString(), 10)]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n case 'Indent':\n case ContextMenuItems.RowIndent:\n items.push({ text: this.l10n.getConstant('RowIndent'),\n target: '.e-content', iconCss: 'e-indent e-icons', id: this.element.id + '_gridcontrol_cmenu_Indent' });\n break;\n case 'Outdent':\n case ContextMenuItems.RowOutdent:\n items.push({ text: this.l10n.getConstant('RowOutdent'),\n target: '.e-content', iconCss: 'e-outdent e-icons', id: this.element.id + '_gridcontrol_cmenu_Outdent' });\n break;\n default:\n items.push(this.contextMenuItems[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[parseInt(i.toString(), 10)]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n if (this.columnModel.length === 0) {\n index = index === 0 ? -1 : index;\n }\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[parseInt(i.toString(), 10)].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[parseInt(i.toString(), 10)] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[parseInt(i.toString(), 10)];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[parseInt(i.toString(), 10)][\"\" + prop])) {\n gridColumn[\"\" + prop] = this.getGridColumns(column[parseInt(i.toString(), 10)][\"\" + prop], false, this.columnModel.length - 1);\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = treeColumn[\"\" + prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n }\n }\n if (!treeGridColumn[\"\" + stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n if (!isNullOrUndefined(this.columnModel[this.treeColumnIndex]) && this.enableRtl) {\n if (gridColumn.field === this.columnModel[this.treeColumnIndex].field) {\n if (isNullOrUndefined(this.treeColumnTextAlign)) {\n this.treeColumnTextAlign = this.columnModel[this.treeColumnIndex].textAlign;\n this.treeColumnField = this.columnModel[this.treeColumnIndex].field;\n }\n gridColumn.textAlign = 'Right';\n }\n }\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'columns':\n this.grid.columns = this.getGridColumns(this.columns);\n break;\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[\"\" + prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n this.TreeGridLocale();\n this.grid.toolbar = this.getGridToolbar();\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[\"\" + prop].mode &&\n (newProp[\"\" + prop].mode === 'Cell' || newProp[\"\" + prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[parseInt(k.toString(), 10)];\n delete currentObject[\"\" + objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n this.ignoreInArrays(ignoreOnColumn, columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[parseInt(i.toString(), 10)]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[\"\" + isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[\"\" + primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[\"\" + primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[\"\" + columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[\"\" + columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[\"\" + prop] = gridColumns[parseInt(i.toString(), 10)][\"\" + prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[parseInt(i.toString(), 10)].field && this.columnModel[parseInt(i.toString(), 10)].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[parseInt(i.toString(), 10)].template = temp;\n }\n }\n }\n var deepMerge = 'deepMerge';\n this[\"\" + deepMerge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (this.stackedHeader && this.allowResizing) {\n this.updateColumnsWidth(this.columns);\n }\n if (!this.stackedHeader) {\n merge(this.columns, this.columnModel);\n }\n this[\"\" + deepMerge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnsWidth = function (columns) {\n var _this = this;\n columns.forEach(function (column) {\n if (column.columns) {\n _this.updateColumnsWidth(column.columns);\n }\n else if (column.field) {\n var currentColumn = _this.grid.getColumnByField(column.field);\n column.width = currentColumn.width;\n }\n });\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[\"\" + persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[\"\" + persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n var isSummaryRow = 'isSummaryRow';\n return this.grid.currentViewData.filter(function (e) { return isNullOrUndefined(e[\"\" + isSummaryRow]); });\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[parseInt(i.toString(), 10)]);\n if (!currentViewRecords[parseInt(i.toString(), 10)].expanded) {\n i += findChildrenRecords(currentViewRecords[parseInt(i.toString(), 10)]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if ((this.getBatchChanges()[this.changedRecords].length || this.getBatchChanges()[this.deletedRecords].length ||\n this.getBatchChanges()[this.addedRecords].length) && this.editSettings.showConfirmDialog) {\n var dialogObj = this.grid.editModule[\"\" + obj];\n this.grid.editModule[\"\" + showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo_1 = this.grid.getRowInfo(target);\n var record = rowInfo_1.rowData;\n if (this.grid.isFrozenGrid() && this.enableVirtualization && !Object.keys(record).length) {\n var freezeRows = 'freezeRows';\n record = this.grid.contentModule[\"\" + freezeRows].filter(function (e) { return e.uid === rowInfo_1.row.getAttribute('data-uid'); })[0].data;\n }\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo_1.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo_1.row, record);\n }\n else {\n this.expandRow(rowInfo_1.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n var parentRec = this.parentData;\n if (!this.enableVirtualization) {\n parentRec = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n if (this.isExpandAll && !isRemoteData(this)) {\n var args = { data: parentRec, row: row, cancel: false };\n var pagerValuePresent = false;\n if (this.grid.pagerModule && !isNullOrUndefined(this.grid.pagerModule.pagerObj.pagerdropdownModule)) {\n pagerValuePresent = this.grid.pagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value ? true : false;\n }\n if (!this.isExpandingEventTriggered) {\n this.trigger(events.expanding, args, function (expandingArgs) {\n _this.expandAllPrevent = expandingArgs.cancel;\n if (!expandingArgs.cancel) {\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n _this.expandRows(row, record, parentRec, key, level);\n }\n });\n }\n else if ((!this.allowPaging || (pagerValuePresent && this.grid.pagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === 'All')) &&\n !this.expandAllPrevent && this.isExpandingEventTriggered) {\n this.expandRows(row, record, parentRec, key, level);\n }\n this.isExpandingEventTriggered = true;\n }\n else if (!this.isExpandAll || (this.isExpandAll && isRemoteData(this))) {\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n _this.expandRows(row, record, parentRec, key, level);\n }\n });\n }\n };\n // Internal method to handle the rows expand\n TreeGrid.prototype.expandRows = function (row, record, parentRec, key, level) {\n this.expandCollapse('expand', row, record);\n var children = 'Children';\n if (!(isRemoteData(this) && !isOffline(this)) && (!isCountRequired(this) || !isNullOrUndefined(record[\"\" + children]))) {\n var expandArgs = { data: record, row: row };\n this.setHeightForFrozenContent();\n if (!isNullOrUndefined(this.expandStateMapping)) {\n this.updateExpandStateMapping(expandArgs.data, true);\n }\n if (this.isExpandAll && !this.isExpandedEventTriggered) {\n this.isExpandedEventTriggered = true;\n expandArgs = { data: parentRec, row: row };\n this.trigger(events.expanded, expandArgs);\n }\n else if (!this.isExpandAll) {\n this.trigger(events.expanded, expandArgs);\n }\n }\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[parseInt(i.toString(), 10)]);\n }\n };\n TreeGrid.prototype.setHeightForFrozenContent = function () {\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.grid.getFrozenColumns() > 0 || freeze) {\n this.grid.contentModule.refreshScrollOffset();\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n if (this.detailTemplate) {\n record = this.grid.getCurrentViewRecords()[row.getAttribute('data-rowindex')];\n }\n else {\n if (this.enableVirtualization && this.isCollapseAll) {\n if (this.isExpandAll && row.rowIndex === -1) {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n else {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n }\n else {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n var parentRec = this.parentData;\n if (!this.enableVirtualization) {\n parentRec = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n record = this.getCollapseExpandRecords(row, record);\n if (this.isCollapseAll && !isRemoteData(this)) {\n var args = { data: parentRec, row: row, cancel: false };\n if (!this.isCollapsingEventTriggered) {\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n _this.collapseAllPrevent = collapsingArgs.cancel;\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.collapseRows(row, record, parentRec, key);\n }\n });\n }\n else if (!this.allowPaging && !this.collapseAllPrevent && this.isCollapsingEventTriggered) {\n this.collapseRows(row, record, parentRec, key);\n }\n this.isCollapsingEventTriggered = true;\n }\n else if (!this.isCollapseAll || (this.isCollapseAll && isRemoteData(this))) {\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n _this.collapseRows(row, record, parentRec, key);\n }\n });\n }\n };\n // Internal method for handling the rows collapse\n TreeGrid.prototype.collapseRows = function (row, record, parentRec, key) {\n this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(this)) {\n this.setHeightForFrozenContent();\n if (!isNullOrUndefined(this.expandStateMapping)) {\n this.updateExpandStateMapping(collapseArgs.data, false);\n }\n if (this.isCollapseAll && !this.isCollapsedEventTriggered) {\n this.isCollapsedEventTriggered = true;\n collapseArgs = { data: parentRec, row: row };\n this.trigger(events.collapsed, collapseArgs);\n }\n else if (!this.isCollapseAll) {\n this.trigger(events.collapsed, collapseArgs);\n }\n if (this.enableInfiniteScrolling) {\n var scrollHeight = this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < this.grid.getRowHeight() + +this.height) {\n this.grid.getContent().firstElementChild.scrollBy(0, this.grid.getRowHeight());\n }\n }\n }\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[parseInt(i.toString(), 10)][this.expandStateMapping] = state;\n editAction({ value: totalRecords[parseInt(i.toString(), 10)], action: 'edit' }, this, this.isSelfReference, totalRecords[parseInt(i.toString(), 10)].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[\"\" + this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[parseInt(i.toString(), 10)].parentItem)) {\n var puniqueID_1 = record[parseInt(i.toString(), 10)].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[parseInt(i.toString(), 10)], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[\"\" + primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[parseInt(i.toString(), 10)], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[\"\" + endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.isExpandedEventTriggered = false;\n this.isExpandingEventTriggered = false;\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.isCollapsedEventTriggered = false;\n this.isCollapsingEventTriggered = false;\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n if (!isNullOrUndefined(this.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex])) {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (!this.enableVirtualization) {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n else if (rows[0].getAttribute('aria-expanded') !== 'true') {\n this.expandRow(rows[0]);\n }\n }\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n else {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var _this = this;\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.grid.currentViewData.filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if ((!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) || (action === 'collapse' || (this.isExpandAll && this.loadChildOnDemand) && !isRemoteData(this) && this.isSelfReference && isCountRequired(this))) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.grid.currentViewData.indexOf(record);\n row = gridRows[parseInt(rowIndex.toString(), 10)];\n }\n else {\n rowIndex = +row.getAttribute('data-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n row.querySelectorAll('.e-treerowcell')[0].setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n var lastrowIdx = this.getVisibleRecords()[this.getVisibleRecords().length - 1]['index'];\n var lastRow = this.getRowByIndex(lastrowIdx);\n if (this.grid.getContentTable().clientHeight <= this.grid.getContent().clientHeight && !isNullOrUndefined(lastRow) && !lastRow.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(lastRow, true);\n }\n }\n if (isCountRequired(this) && action === 'expand') {\n var currentData = this.getCurrentViewRecords();\n var visibleRecords = currentData.filter(function (e) {\n return getExpandStatus(_this, e, _this.parentData);\n });\n this.dataResults.result = visibleRecords;\n }\n if (!isNullOrUndefined(targetEle) && targetEle.closest('.e-treerowcell').classList.contains('e-cellselectionbackground')) {\n targetEle.closest('.e-treerowcell').classList.remove('e-cellselectionbackground');\n targetEle.closest('.e-treerowcell').removeAttribute('aria-selected');\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n if (expandingArgs.requestType === 'collapse' && isCountRequired(this)) {\n var flatDataRecords = this.flatData.slice();\n for (var i = 0; i < flatDataRecords.length; i++) {\n if (flatDataRecords[parseInt(i.toString(), 10)]['parentUniqueID'] === expandingArgs.data['uniqueID']) {\n flatDataRecords.splice(i, 1);\n i = i - 1;\n }\n }\n this.dataResults.result = flatDataRecords;\n return;\n }\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[\"\" + childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n if (isCountRequired(_this)) {\n _this.flatData = _this.dataResults.result;\n }\n if (_this.enableInfiniteScrolling && isCountRequired(_this)) {\n _this.flatData = _this.infiniteScrollData;\n }\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[parseInt(i.toString(), 10)].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[parseInt(i.toString(), 10)]) {\n childData[parseInt(i.toString(), 10)].level = record.level + 1;\n childData[parseInt(i.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n childData[parseInt(i.toString(), 10)].parentItem = extend({}, record);\n childData[parseInt(i.toString(), 10)].taskData = extend({}, childData[parseInt(i.toString(), 10)]);\n delete childData[parseInt(i.toString(), 10)].parentItem.childRecords;\n delete childData[parseInt(i.toString(), 10)].taskData.parentItem;\n childData[parseInt(i.toString(), 10)].parentUniqueID = record.uniqueID;\n childData[parseInt(i.toString(), 10)].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[parseInt(i.toString(), 10)].uniqueID, childData[parseInt(i.toString(), 10)], _this);\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][_this.childMapping]) ||\n (childData[parseInt(i.toString(), 10)][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[parseInt(i.toString(), 10)].hasChildRecords = true;\n }\n if (isCountRequired(_this) && record[_this.childMapping] && record[_this.childMapping][parseInt(i.toString(), 10)]) {\n currentData.splice(index + 1 + i, 0, childData[parseInt(i.toString(), 10)]);\n }\n else {\n currentData.splice(index + 1 + i, record[_this.childMapping] &&\n record[_this.childMapping][parseInt(i.toString(), 10)] ? 1 : 0, childData[parseInt(i.toString(), 10)]);\n }\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[parseInt(index.toString(), 10)][\"\" + _this.childMapping] = childData;\n currentData[parseInt(index.toString(), 10)].childRecords = childData;\n currentData[parseInt(index.toString(), 10)].expanded = true;\n setValue('uniqueIDCollection.' + currentData[parseInt(index.toString(), 10)].uniqueID, currentData[parseInt(index.toString(), 10)], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[parseInt(j.toString(), 10)]);\n }\n }\n if (isCountRequired(_this) && _this.loadChildOnDemand && expandingArgs.requestType === 'expand') {\n _this.dataResults['expandRecord'] = {};\n _this.dataResults['expandRecord'] = expandingArgs.data;\n }\n _this.isExpandRefresh = true;\n var scrollHeightBeforeRefresh = _this.getContentTable().parentElement.scrollTop;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n if (_this.enableInfiniteScrolling) {\n _this.getContentTable().parentElement.scrollTop = scrollHeightBeforeRefresh;\n }\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n var fetchRemoteChildData = 'fetchRemoteChildData';\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return ((r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1))) || (r.querySelector('.e-gridrowindex' + record.index + 'level0' + '.e-summarycell')));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else if (action === 'collapse' && this.enableVirtualization) {\n this.dataModule[\"\" + fetchRemoteChildData]({ action: action, record: args.data, rows: null, parentRow: args.row });\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.setHeightForFrozenContent();\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.grid.currentViewData.filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[parseInt(i.toString(), 10)][\"\" + primaryKeyField]);\n rows.push(this.getRows()[parseInt(rowIndex.toString(), 10)]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var gridRowsObject = this.grid.getRowsObject();\n var currentViewData = this.grid.currentViewData;\n var currentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === record.uniqueID;\n });\n var currentIndex = currentViewData.indexOf(currentRecord[0]);\n if (!isNullOrUndefined(gridRowsObject[parseInt(currentIndex.toString(), 10)].visible) &&\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible !== false) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = true;\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)])) {\n rows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization\n || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[rows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n var parentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord[0].parentUniqueID;\n });\n if (!isNullOrUndefined(parentRecord[0]) && gridRows[currentViewData.indexOf(parentRecord[0])].getElementsByClassName('e-treegridcollapse').length) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = false;\n }\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[parseInt(i.toString(), 10)] });\n if ((!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) && childRecords[parseInt(i.toString(), 10)].childRecords.length > 0) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].expanded) || childRecords[parseInt(i.toString(), 10)].expanded)) {\n this.expandCollapse(action, rows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n }\n }\n }\n for (var i = 0; i < detailrows.length; i++) {\n if (!isNullOrUndefined(detailrows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization ||\n this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[detailrows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n detailrows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n }\n if (!this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this)\n || isCountRequired(this))) {\n this.grid.notify('refresh-Expand-and-Collapse', { rows: this.grid.getRowsObject() });\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[parseInt(i.toString(), 10)];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[parseInt(i.toString(), 10)]\n .cells[this.treeColumnIndex];\n var row = rows[parseInt(i.toString(), 10)];\n var rowData = this.grid.getRowsObject()[parseInt(i.toString(), 10)].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].style.display = 'none';\n row = rows[parseInt(i.toString(), 10)];\n var collapsingTd = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[parseInt(i.toString(), 10)].style.display = 'none';\n rightrows[parseInt(i.toString(), 10)].style.display = 'none';\n if (!rows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[parseInt(i.toString(), 10)];\n }\n else if (rightrows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[parseInt(i.toString(), 10)];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex] :\n this.grid.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[parseInt(i_1.toString(), 10)].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[parseInt(i_1.toString(), 10)]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, false);\n }\n }\n }\n };\n /**\n * Method to sanitize html element\n *\n * @param {any} value - Specifies the html value to sanitize\n * @returns {any} Returns the sanitized html value\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeGrid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer && typeof (value) === 'string') {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[parseInt(i.toString(), 10)], cell: rows[parseInt(i.toString(), 10)].cells[parseInt(index.toString(), 10)],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[parseInt(i.toString(), 10)], row: rows[parseInt(i.toString(), 10)]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[parseInt(j.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(j.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(j.toString(), 10)].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], TreeGrid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[parseInt(i.toString(), 10)].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[parseInt(i.toString(), 10)]);\n if (hasChild) {\n datas.push(records[parseInt(i.toString(), 10)]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords.filter(function (item) { return !item.isSummaryRow; });\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[parseInt(i.toString(), 10)]);\n if (childRecords[parseInt(i.toString(), 10)].hasChildRecords ||\n (!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) &&\n childRecords[parseInt(i.toString(), 10)].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[parseInt(i.toString(), 10)]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[parseInt(i.toString(), 10)]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[parseInt(j.toString(), 10)]] = array[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[\"\" + idFilter][\"\" + value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[\"\" + id][\"\" + value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","/**\n * Vue Component Base\n */\nimport * as Vue from 'vue';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) {\n return obj;\n}\nelse {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n newObj[\"\" + key] = obj[\"\" + key];\n }\n }\n newObj.default = obj;\n return newObj;\n} }\nvar curVue = _interopRequireWildcard(Vue);\nexport var isExecute = (parseInt(curVue['version']) > 2) ? false : true, aVue = !isExecute ? curVue : (curVue['default']['default'] ? curVue['default']['default'] : curVue['default']), gh = curVue['h'];\nexport var vueDefineComponent = function (options) { return !isExecute ? aVue['defineComponent'](options) : aVue['extend'](options); };\nexport var ComponentBase = vueDefineComponent({\n name: 'ComponentBase',\n data: function () {\n return {\n tagMapper: {},\n tagNameMapper: {},\n hasInjectedModules: false,\n hasChildDirective: false,\n childDirObjects: '',\n propKeys: {},\n isDecorator: false\n };\n },\n created: function () {\n var _this = this;\n if (this.ej2Instance) {\n this.ej2Instances = this.isVue3 ? aVue.toRaw(this.ej2Instance) : this.ej2Instance;\n }\n if (!this.propKeys) {\n return;\n }\n var _loop_1 = function (prop) {\n this_1.ej2Instances.addEventListener(prop, function (args) {\n _this.$emit(prop, args);\n });\n };\n var this_1 = this;\n for (var _i = 0, _a = this.propKeys; _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n var injectables = getValue('$root.$options.provide', this);\n var vueInjectables = getValue('$parent.$options.provide', this);\n vueInjectables = !isNullOrUndefined(vueInjectables) ? vueInjectables : getValue('$.parent.provides', this);\n if (this.hasInjectedModules && !isExecute) {\n var prevModule = [];\n if (injectables && injectables.managed) {\n this.isDecorator = true;\n prevModule = this.getInjectedServices() || [];\n }\n else if (injectables) {\n prevModule = injectables[this.ej2Instances.getModuleName()] || [];\n }\n else if (vueInjectables) {\n prevModule = this.getInjectedServices() || [];\n }\n var curModule = this.ej2Instances.getInjectedModules() || [];\n for (var _b = 0, curModule_1 = curModule; _b < curModule_1.length; _b++) {\n var mod = curModule_1[_b];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.ej2Instances.injectedModules = prevModule;\n }\n },\n mounted: function () {\n var cusEle = this.$el ? this.$el.querySelectorAll(\"div.e-directive\") : null;\n if (!isExecute && cusEle) {\n for (var i = 0; i < cusEle.length; i++) {\n cusEle[parseInt(i.toString(), 10)].parentElement && cusEle[parseInt(i.toString(), 10)].parentElement.removeChild(cusEle[parseInt(i.toString(), 10)]);\n }\n }\n this.ej2Instances.isVue = true;\n this.ej2Instances.isVue3 = this.isVue3;\n this.ej2Instances.vueInstance = this;\n if (this.isVue3) {\n this.ej2Instances.ej2Instances = this.ej2Instances;\n this.ej2Instances.referModels = this.models;\n this.setModelValue();\n }\n this.ej2Instances.appendTo(this.$el);\n },\n updated: function () {\n this.updated();\n },\n beforeDestroy: function () {\n this.destroyComponent();\n },\n beforeUnmount: function () {\n this.destroyComponent();\n },\n methods: {\n setModelValue: function () {\n if (!isNullOrUndefined(this.modelValue) || !isNullOrUndefined(this.$attrs.modelValue)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (!isNullOrUndefined(propKey)) {\n this.ej2Instances[\"\" + propKey] = !isNullOrUndefined(this.modelValue) ? this.modelValue : this.$attrs.modelValue;\n }\n }\n },\n updated: function () {\n if (this.isVue3) {\n this.setModelValue();\n }\n if (this.hasChildDirective) {\n var childKey = {};\n this.fetchChildPropValues(childKey);\n var curChildDir = JSON.stringify(childKey);\n if (this.childDirObjects !== curChildDir) {\n this.childDirObjects = curChildDir;\n this.assignValueToWrapper(childKey, false);\n }\n }\n },\n getInjectedServices: function () {\n var ret = [];\n var provide;\n if (this.$root && this.isDecorator) {\n provide = getValue('$root.$options.provide', this);\n }\n else if (this.$vnode) {\n provide = getValue('$vnode.context.$options.provide', this);\n }\n else if (this.$parent) {\n provide = getValue('$parent.$options.provide', this);\n }\n if (isNullOrUndefined(provide) && !isNullOrUndefined(this.$)) {\n provide = getValue('$.parent.provides', this);\n }\n if (provide) {\n // tslint:disable:no-any\n var injectables = provide;\n if (typeof provide === 'function') {\n if (provide.managed) {\n var provideKey = provide.managed;\n var provideValue = Object.keys(provideKey);\n var key = void 0;\n if (this.$root && this.isDecorator) {\n key = Object.keys(this.$root);\n }\n else if (this.$vnode) {\n key = Object.keys(this.$vnode.context);\n }\n else if (this.$parent) {\n key = Object.keys(this.$parent);\n }\n for (var i = 0; i < provideValue.length; i++) {\n for (var j = 0; j < key.length; j++) {\n if ((key[parseInt(j.toString(), 10)].indexOf(provideValue[parseInt(i.toString(), 10)])) !== -1) {\n if (this.$root && this.isDecorator) {\n provideKey[provideValue[parseInt(j.toString(), 10)]] = this.$root[key[parseInt(i.toString(), 10)]];\n }\n else if (this.$vnode) {\n provideKey[provideValue[parseInt(i.toString(), 10)]] = this.$vnode.context[key[parseInt(j.toString(), 10)]];\n }\n else if (this.$parent) {\n provideKey[provideValue[parseInt(i.toString(), 10)]] = this.$parent[key[parseInt(j.toString(), 10)]];\n }\n injectables = provideKey;\n }\n }\n }\n }\n // tslint:disable:no-any\n else if (this.$vnode) {\n injectables = this.$vnode.context.$options.provide();\n }\n else if (this.$parent) {\n injectables = this.$parent.$options.provide();\n }\n }\n ret = injectables[this.ej2Instances.getModuleName()] || [];\n }\n this.isDecorator = false;\n return ret;\n },\n destroyComponent: function () {\n var tempBeforeDestroyThis = this;\n tempBeforeDestroyThis.ej2Instances.destroy();\n tempBeforeDestroyThis.$el.style.visibility = 'hidden';\n tempBeforeDestroyThis = null;\n },\n bindProperties: function () {\n var options = {};\n for (var _i = 0, _a = this.propKeys; _i < _a.length; _i++) {\n var prop = _a[_i];\n if (!isNullOrUndefined(this[\"\" + prop])) {\n options[\"\" + prop] = this[\"\" + prop];\n }\n else if (this[0] && !isNullOrUndefined(this[0][0]) && !isNullOrUndefined(this[0][0][\"\" + prop])) {\n options[\"\" + prop] = this[0][0][\"\" + prop];\n }\n }\n if (this.hasChildDirective) {\n this.fetchChildPropValues(options);\n }\n if (this.hasInjectedModules) {\n var prevModule = this.getInjectedServices() || [];\n var curModule = this.ej2Instances.getInjectedModules() || [];\n for (var _b = 0, curModule_2 = curModule; _b < curModule_2.length; _b++) {\n var mod = curModule_2[_b];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.ej2Instances.injectedModules = prevModule;\n }\n this.assignValueToWrapper(options);\n },\n assignValueToWrapper: function (option, silent) {\n this.ej2Instances.setProperties(extend({}, {}, option, true), isNullOrUndefined(silent) ? true : silent);\n },\n fetchChildPropValues: function (childOption) {\n var dirProps = {};\n if (!this.isVue3) {\n dirProps = this.getDirectiveValues(this.$slots.default, this.tagMapper || {}, this.tagNameMapper || {});\n }\n else {\n var propRef = void 0;\n if (this[0] && this[0][1].slots.default) {\n propRef = this[0][1].slots.default();\n }\n else if (this && this.$ && this.$.slots && this.$.slots.default) {\n propRef = this.$.slots.default();\n }\n if (propRef) {\n for (var i = 0; i < propRef.length; i++) {\n if (propRef[parseInt(i.toString(), 10)].type.methods || propRef[parseInt(i.toString(), 10)].type === 'e-seriescollection') {\n var key = propRef[parseInt(i.toString(), 10)].type === 'e-seriescollection' ? 'series-collection' :\n propRef[parseInt(i.toString(), 10)].type.methods.getTag().replace(\"e-\", \"\");\n var ref = this.resolveArrayDirectives(propRef[parseInt(i.toString(), 10)].children, key);\n var splitKeys = key.split('-');\n var controlName = this.ej2Instances.getModuleName().toLowerCase();\n var keyRef = (splitKeys.length > 1 && controlName.indexOf(splitKeys[0]) > -1) ? splitKeys[1] : splitKeys[0];\n keyRef = keyRef.replace(controlName, '');\n if (controlName == \"splitter\" && keyRef == \"panes\") {\n keyRef = \"paneSettings\";\n }\n else if (controlName == \"bulletchart\" && keyRef == \"range\") {\n keyRef = \"ranges\";\n }\n else if (controlName == \"schedule\" && keyRef == \"header\") {\n keyRef = \"headerRows\";\n }\n dirProps[\"\" + keyRef] = ref[\"\" + key];\n }\n }\n }\n else {\n return;\n }\n }\n if (!this.childDirObjects) {\n this.childDirObjects = JSON.stringify(dirProps);\n }\n for (var _i = 0, _a = Object.keys(dirProps); _i < _a.length; _i++) {\n var dirProp = _a[_i];\n childOption[\"\" + dirProp] = dirProps[\"\" + dirProp];\n }\n },\n resolveArrayDirectives: function (slots, tagName) {\n var slot = [];\n var innerDirValues;\n slot = slots.default ? slots.default() : slots;\n slot = slot.flatMap(function (item) { return Array.isArray(item.children) ? item.children : item; });\n var items = {};\n items[\"\" + tagName] = [];\n var _loop_2 = function (childSlot) {\n var tempObj = {};\n var tagRef = childSlot.type.methods ? childSlot.type.methods.getTag() : tagName;\n if (childSlot.children) {\n var key = void 0;\n innerDirValues = this_2.resolveComplexDirs(childSlot.children, this_2.tagMapper[\"e-\" + tagName], tagRef);\n if (innerDirValues.length) {\n tempObj = innerDirValues;\n }\n else {\n for (var i = 0; i < Object.keys(innerDirValues).length; i++) {\n key = Object.keys(innerDirValues)[parseInt(i.toString(), 10)];\n tempObj[\"\" + key] = innerDirValues[\"\" + key];\n }\n }\n }\n if (childSlot.props) {\n Object.keys(childSlot.props).forEach(function (key) {\n var propName = key.replace(/-[a-z]/g, function (e) { return e[1].toUpperCase(); });\n if (propName) {\n tempObj[\"\" + propName] = childSlot.props[\"\" + key];\n }\n });\n }\n if (((/[s]\\b/).test(tagRef) && innerDirValues) && (!(/[s]\\b/).test(tagName) || innerDirValues.length)) {\n Array.isArray(tempObj) ? tempObj.forEach(function (item) { items[\"\" + tagName].push(item); }) : items[\"\" + tagName].push(tempObj);\n }\n else if (tempObj && Object.keys(tempObj).length !== 0) {\n items[\"\" + tagName].push(tempObj);\n }\n };\n var this_2 = this;\n for (var _i = 0, slot_1 = slot; _i < slot_1.length; _i++) {\n var childSlot = slot_1[_i];\n _loop_2(childSlot);\n }\n return items;\n },\n resolveComplexDirs: function (slots, tagObject, tagName) {\n var slot = [];\n var innerDirValues;\n slot = slots.default ? slots.default() : slots;\n var items = {};\n var _loop_3 = function (childSlot) {\n var tagRef = void 0;\n var tag = void 0;\n if (tagObject[\"\" + tagName]) {\n tagRef = Object.keys(tagObject[\"\" + tagName]);\n tag = tagRef.find(function (key) {\n return tagObject[\"\" + tagName][\"\" + key] ===\n childSlot.type.methods.getTag().replace(/[s]\\b/, \"\");\n });\n var moduleName = this_3.ej2Instances.getModuleName().toLowerCase();\n tag = tag\n ? tag.replace(\"e-\", \"\")\n : childSlot.type.methods.getTag().replace(moduleName === \"ribbon\" ? \"e-ribbon-\" : \"e-\", \"\");\n if (this_3.ej2Instances.getModuleName().toLowerCase() == \"diagram\" && tag.indexOf('annotations') != -1) {\n tag = 'annotations';\n }\n }\n if (childSlot.children) {\n innerDirValues = this_3.resolveComplexInnerDirs(childSlot.children, tagObject[\"\" + tagName], childSlot.type.methods.getTag());\n if (!items[\"\" + tag]) {\n items[\"\" + tag] = [];\n }\n if (innerDirValues.length > 1) {\n items[\"\" + tag] = innerDirValues;\n }\n else {\n items[\"\" + tag].push(innerDirValues);\n }\n }\n if (childSlot.props) {\n childSlot.props = this_3.getCamelCaseProps(childSlot.props);\n }\n if (slot.length > 1) {\n items = Object.keys(items).length == 0 && !items.length ? [] : items;\n if (childSlot.props) {\n items.push(childSlot.props);\n }\n }\n else {\n items = childSlot.props ? Object.assign(items, childSlot.props) : items;\n }\n };\n var this_3 = this;\n for (var _i = 0, slot_2 = slot; _i < slot_2.length; _i++) {\n var childSlot = slot_2[_i];\n _loop_3(childSlot);\n }\n return items;\n },\n resolveComplexInnerDirs: function (slots, tagObject, tagName) {\n var slot = [];\n var innerDirValues;\n slot = slots.default ? slots.default() : slots;\n var items = slot.length > 1 ? [] : {};\n for (var _i = 0, slot_3 = slot; _i < slot_3.length; _i++) {\n var childSlot = slot_3[_i];\n var isRibbon = (this.ej2Instances.getModuleName().toLowerCase() == \"ribbon\");\n var tag = childSlot.type.methods.getTag().replace(isRibbon ? \"e-ribbon-\" : \"e-\", \"\");\n if (childSlot.children) {\n innerDirValues = this.resolveMultilevelComplexInnerDirs(childSlot.children, tagObject[\"\" + tagName], childSlot.type.methods.getTag());\n if ((/[s]\\b/).test(tag) || slot.length > 1) {\n if ((/[s]\\b/).test(tag)) {\n items[\"\" + tag] = !items[\"\" + tag] ? [] : items[\"\" + tag];\n if (innerDirValues.length) {\n items[\"\" + tag] = innerDirValues;\n }\n else {\n items[\"\" + tag].push(innerDirValues);\n }\n }\n else if (innerDirValues && !(isRibbon && innerDirValues.hasOwnProperty('collections'))) {\n items.push(innerDirValues);\n }\n }\n else {\n items = innerDirValues ? innerDirValues : items;\n }\n }\n if (childSlot.props) {\n childSlot.props = this.getCamelCaseProps(childSlot.props);\n }\n if (slot.length > 1 && childSlot.props) {\n if (isRibbon && innerDirValues && innerDirValues.hasOwnProperty('collections')) {\n innerDirValues = childSlot.props ? Object.assign(innerDirValues, childSlot.props) : innerDirValues;\n items.push(innerDirValues);\n }\n else if (items.length >= 0) {\n items.push(childSlot.props);\n }\n else {\n items = childSlot.props ? Object.assign(items, childSlot.props) : items;\n }\n }\n else {\n items = childSlot.props ? Object.assign(items, childSlot.props) : items;\n }\n }\n return items;\n },\n resolveMultilevelComplexInnerDirs: function (slots, tagObject, tagName) {\n var slot = [];\n var innerDirValues;\n slot = slots.default ? slots.default() : slots;\n var items = slot.length > 1 ? [] : {};\n for (var _i = 0, slot_4 = slot; _i < slot_4.length; _i++) {\n var childSlot = slot_4[_i];\n var moduleName = this.ej2Instances.getModuleName().toLowerCase();\n var tag = childSlot.type.methods.getTag().replace(moduleName === \"ribbon\" ? \"e-ribbon-\" : \"e-\", \"\");\n if (childSlot.children) {\n innerDirValues = this.resolveComplexInnerDirs(childSlot.children, tagObject[\"\" + tagName], childSlot.type.methods.getTag());\n }\n if (childSlot.props) {\n childSlot.props = this.getCamelCaseProps(childSlot.props);\n }\n if ((/[s]\\b/).test(tag)) {\n items[\"\" + tag] = !items[\"\" + tag] ? [] : items[\"\" + tag];\n if (innerDirValues.length) {\n items[\"\" + tag] = innerDirValues;\n }\n else {\n items[\"\" + tag].push(innerDirValues);\n }\n if (childSlot.props) {\n items[\"\" + tag].push(childSlot.props);\n }\n }\n else {\n items = innerDirValues;\n items = childSlot.props ? Object.assign(items, childSlot.props) : items;\n }\n }\n return items;\n },\n getDirectiveValues: function (tagDirectives, tagMapper, tagNameMapper) {\n var keyTags = Object.keys(tagMapper);\n var dir = {};\n if (tagDirectives) {\n for (var _i = 0, tagDirectives_1 = tagDirectives; _i < tagDirectives_1.length; _i++) {\n var tagDirective = tagDirectives_1[_i];\n if (tagDirective.componentOptions && tagDirective.componentOptions.children && tagDirective.componentOptions.tag ||\n (tagDirective.tag === 'e-seriescollection' && tagDirective.children)) {\n var dirTag = tagDirective.componentOptions ? tagDirective.componentOptions.tag : tagDirective.tag;\n dirTag = (dirTag === 'e-seriescollection') ? 'e-seriesCollection' : dirTag;\n if (keyTags.indexOf(dirTag) !== -1) {\n var tagName = tagNameMapper[\"\" + dirTag] ? tagNameMapper[\"\" + dirTag] : dirTag;\n dir[tagName.replace('e-', '')] = [];\n var children = tagDirective.componentOptions ? tagDirective.componentOptions.children : tagDirective.children;\n for (var _a = 0, children_1 = children; _a < children_1.length; _a++) {\n var tagDirChild = children_1[_a];\n var retObj = this.getVNodeValue(tagDirChild, tagMapper[\"\" + dirTag], tagNameMapper);\n if (Object.keys(retObj).length !== 0) {\n dir[tagName.replace('e-', '')].push(retObj);\n }\n }\n }\n }\n }\n }\n return dir;\n },\n getMultiLevelDirValue: function (tagDirectories, tagKey, tagNameMapper) {\n var mulObj = {};\n for (var _i = 0, tagDirectories_1 = tagDirectories; _i < tagDirectories_1.length; _i++) {\n var tagDir = tagDirectories_1[_i];\n var key = void 0;\n var children = void 0;\n if (tagDir.componentOptions) {\n key = tagDir.componentOptions.tag;\n if (tagDir.componentOptions.children) {\n children = tagDir.componentOptions.children;\n }\n }\n else if ((tagDir.tag === 'e-markersettings' || tagDir.tag === 'e-markersetting') && tagDir.children) {\n key = (tagDir.tag === 'e-markersettings') ? 'e-markerSettings' : 'e-markerSetting';\n children = tagDir.children;\n }\n if (key) {\n var tagName = tagNameMapper[\"\" + key] ? tagNameMapper[\"\" + key] : key;\n mulObj[tagName.replace('e-', '')] = [];\n if (children) {\n for (var _a = 0, children_2 = children; _a < children_2.length; _a++) {\n var tagDirChild = children_2[_a];\n var mulLevObj = this.getVNodeValue(tagDirChild, tagKey[\"\" + key], tagNameMapper);\n if (Object.keys(mulLevObj).length !== 0) {\n mulObj[tagName.replace('e-', '')].push(mulLevObj);\n }\n }\n }\n }\n }\n return mulObj;\n },\n getVNodeValue: function (tagDirective, tagKey, tagNameMapper) {\n var ret = {};\n if (tagDirective.componentOptions || ((tagDirective.tag === 'e-markersettings' || tagDirective.tag === 'e-markersetting') && tagDirective.context)) {\n var dirTag = void 0;\n if (tagDirective.componentOptions) {\n dirTag = tagDirective.componentOptions.tag;\n }\n else {\n dirTag = (tagDirective.tag === 'e-markersettings') ? 'e-markerSettings' : 'e-markerSetting';\n }\n if (typeof tagKey === 'string' && dirTag === tagKey && tagDirective.data) {\n ret = tagDirective.data.attrs ? this.getCamelCaseProps(tagDirective.data.attrs) : this.getCamelCaseProps(tagDirective.data);\n }\n else if (typeof tagKey === 'object') {\n if (tagDirective.componentOptions.children && (Object.keys(tagKey).indexOf(dirTag) !== -1)) {\n ret = this.getMultiLevelDirValue(tagDirective.componentOptions.children, tagKey[\"\" + dirTag], tagNameMapper);\n }\n else if (tagDirective.children && (Object.keys(tagKey).indexOf(dirTag) !== -1) && (dirTag === 'e-markersettings' || dirTag === 'e-markersetting')) {\n ret = this.getMultiLevelDirValue(tagDirective.children, tagKey[\"\" + dirTag], tagNameMapper);\n }\n if (tagDirective.data && tagDirective.data.attrs) {\n ret = extend(ret, this.getCamelCaseProps(tagDirective.data.attrs));\n }\n }\n }\n return ret;\n },\n /**\n * convert kebab case directive props to camel case\n */\n getCamelCaseProps: function (props) {\n var retProps = {};\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var prop = _a[_i];\n retProps[prop.replace(/-[a-z]/g, function (e) { return e[1].toUpperCase(); })] = props[\"\" + prop];\n }\n return retProps;\n },\n dataBind: function () {\n this.ej2Instances.dataBind();\n },\n setProperties: function (arg, muteOnChange) {\n return this.ej2Instances.setProperties(arg, muteOnChange);\n },\n }\n});\nexport function getProps(options) {\n if (options === void 0) { options = {}; }\n if (options.props) {\n var _loop_4 = function (prop) {\n (options.newprops || (options.newprops = {}))[\"\" + prop] = {};\n (options.watch || (options.watch = {}))[\"\" + prop] = function (newVal) {\n this.ej2Instances[\"\" + prop] = newVal;\n if (this.dataBind && (options.name !== 'DateRangePickerComponent')) {\n this.dataBind();\n }\n };\n };\n for (var _i = 0, _a = options.props; _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_4(prop);\n }\n }\n return [options.newprops, options.watch];\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { setTemplateEngine, getTemplateEngine, getUniqueID, createElement, detach, extend, getValue } from \"@syncfusion/ej2-base\";\nimport { aVue as Vue, isExecute } from \"./component-base\";\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n var that = this;\n return function (data, context, propName, element, root) {\n var returnEle;\n if (context) {\n var plugins = context.vueInstance ? context.vueInstance.plugins : null;\n var pid = getUniqueID(\"templateParentDiv\");\n var id = getUniqueID(\"templateDiv\");\n var ele = createElement(\"div\", {\n id: pid,\n innerHTML: '
',\n });\n document.body.appendChild(ele);\n if (!isExecute && (typeof templateElement === \"string\" || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function'))) {\n var vueSlot_1 = getCurrentVueSlot(context.vueInstance, templateElement, root);\n if (vueSlot_1) {\n // Compilation for Vue 3 slot template\n var app = Vue.createApp({\n render: function () {\n return vueSlot_1[\"\" + templateElement]({ data: data });\n }\n });\n if (plugins) {\n for (var i = 0; i < plugins.length; i++) {\n app.use(plugins[parseInt(i.toString(), 10)]);\n }\n }\n // Get values for Vue 3 slot template\n getValues(app, context.vueInstance, root);\n app.mount(\"#\" + pid);\n returnEle = ele.childNodes;\n detach(ele);\n }\n else {\n // Compilation for Vue 3 string template\n detach(ele);\n return stringCompiler(templateElement, helper)(data);\n }\n }\n else if (!isExecute) {\n // Compilation for Vue 3 functional template\n var tempObj = templateElement.call(that, {});\n var object = tempObj;\n var propsData = getValue(\"template.propsData\", tempObj);\n var dataObj_1 = {\n data: { data: extend(tempObj.data || {}, data) },\n parent: context.vueInstance,\n };\n if (!object.template) {\n object.template = object[Object.keys(object)[0]];\n }\n var templateCompRef = void 0;\n if (object.template.extends) {\n templateCompRef = object.template.extends._context.components.template;\n }\n else {\n templateCompRef = object.template._context.components[templateElement.name];\n if (!templateCompRef) {\n var key = Object.keys(object.template._context.components)[0];\n templateCompRef = object.template._context.components[\"\" + key];\n }\n }\n var tempRef_1;\n if (propsData) {\n if (templateCompRef.setup) {\n tempRef_1 = Object.assign(templateCompRef.setup(null, { expose: function () { } }), propsData);\n }\n else {\n tempRef_1 = Object.assign(templateCompRef.data(), propsData);\n }\n }\n else {\n if (templateCompRef.setup) {\n tempRef_1 = Object.assign(templateCompRef.setup(null, { expose: function () { } }), dataObj_1.data);\n }\n else {\n tempRef_1 = Object.assign(templateCompRef.data(), dataObj_1.data);\n }\n if (templateCompRef.components) {\n var objkeys = Object.keys(templateCompRef.components) || [];\n var _loop_1 = function (objstring) {\n var intComponent = templateCompRef.components[\"\" + objstring];\n if (intComponent && intComponent.data) {\n if (!intComponent.__data)\n intComponent.__data = intComponent.data;\n intComponent.data = function (proxy) { return Object.assign(intComponent.__data.call(proxy), dataObj_1.data); };\n }\n };\n for (var _i = 0, objkeys_1 = objkeys; _i < objkeys_1.length; _i++) {\n var objstring = objkeys_1[_i];\n _loop_1(objstring);\n }\n }\n }\n if (templateCompRef.setup) {\n templateCompRef.setup = function (__props, _a) {\n var __expose = _a.expose;\n __expose();\n var __returned__ = tempRef_1;\n Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });\n return __returned__;\n };\n }\n templateCompRef.data = function () { return tempRef_1; };\n var app = Vue.createApp(templateCompRef);\n if (plugins) {\n for (var i = 0; i < plugins.length; i++) {\n app.use(plugins[parseInt(i.toString(), 10)]);\n }\n }\n // Get values for Vue 3 functional template\n getValues(app, context.vueInstance, root);\n app.mount(\"#\" + pid);\n returnEle = ele.childNodes;\n detach(ele);\n }\n else if (typeof templateElement === \"string\" || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n var vueSlot_2 = getVueSlot(context.vueInstance, templateElement, root);\n if (vueSlot_2) {\n // Get provide values for Vue 2 slot template\n var provided_1 = {};\n var getProvideValues_1 = function (vueinstance) {\n if (vueinstance['$parent'])\n getProvideValues_1(vueinstance.$parent);\n if (vueinstance['_provided'] && Object.keys(vueinstance['_provided']).length > 0) {\n provided_1 = __assign({}, provided_1, vueinstance._provided);\n }\n };\n var vueInstance = context.vueInstance ? context.vueInstance : ((root && root.vueInstance) ? root.vueInstance : null);\n if (vueInstance) {\n getProvideValues_1(vueInstance);\n }\n // Compilation for Vue 2 slot template\n var vueTemplate = new Vue({\n provide: __assign({}, provided_1),\n render: function () {\n return vueSlot_2[\"\" + templateElement]({ data: data });\n }\n });\n vueTemplate.$mount(\"#\" + id);\n returnEle = ele.childNodes;\n detach(ele);\n }\n else {\n // Compilation for Vue 2 string template\n detach(ele);\n return stringCompiler(templateElement, helper)(data);\n }\n }\n else {\n // Compilation for Vue 2 functional template\n var tempObj = templateElement.call(that, {});\n var templateFunction = tempObj.template;\n var propsData = getValue(\"template.propsData\", tempObj);\n var dataObj = {\n data: { data: extend(tempObj.data || {}, data) },\n parent: context.vueInstance,\n };\n if (propsData) {\n templateFunction = tempObj.template.extends;\n dataObj.propsData = propsData;\n }\n if (typeof templateFunction !== \"function\") {\n templateFunction = Vue.extend(templateFunction);\n }\n if (templateFunction.options.setup) {\n var variables = Object.assign(templateFunction.options.setup(), dataObj.data);\n templateFunction.options.setup = function (__props) {\n return variables;\n };\n }\n var templateVue = new templateFunction(dataObj);\n // let templateVue = new Vue(tempObj.template);\n // templateVue.$data.data = extend(tempObj.data, data);\n templateVue.$mount(\"#\" + id);\n returnEle = ele.childNodes;\n if (context.vueInstance) {\n var templateInstance = context.vueInstance.templateCollection;\n if (!templateInstance) {\n context.vueInstance.templateCollection = {};\n templateInstance = context.vueInstance.templateCollection;\n }\n if (propName) {\n if (!templateInstance[\"\" + propName]) {\n templateInstance[\"\" + propName] = [];\n }\n templateInstance[\"\" + propName].push(returnEle[0]);\n }\n }\n detach(ele);\n }\n }\n return returnEle || [];\n };\n}\nsetTemplateEngine({ compile: compile });\nfunction getValues(app, cInstance, root) {\n var vueInstance = cInstance ? cInstance : ((root && root.vueInstance) ? root.vueInstance : null);\n if (!vueInstance) {\n return;\n }\n // Get globally defined variables.\n var globalVariables = ['components', 'mixins', 'provides', 'directives'];\n for (var i = 0; i < globalVariables.length; i++) {\n var gVariable = globalVariables[i];\n if (app['_context'][gVariable] && vueInstance['$']['appContext'][gVariable]) {\n app['_context'][gVariable] = vueInstance['$']['appContext'][gVariable];\n }\n }\n // Get provide value from child component.\n var provided = {};\n var getProvideValue = function (vueinstance) {\n if (vueinstance['$'] && vueinstance['$']['parent'])\n getProvideValue(vueinstance.$.parent);\n if (vueinstance['provides'] && Object.keys(vueinstance['provides']).length > 0) {\n provided = __assign({}, provided, vueinstance.provides);\n }\n };\n getProvideValue(vueInstance);\n if (app['_context']['provides']) {\n app._context.provides = __assign({}, app._context.provides, provided);\n }\n // Get globally defined properties.\n if (app['_context']['config']['globalProperties'] && vueInstance['$']['appContext']['config']['globalProperties']) {\n app['_context']['config']['globalProperties'] = vueInstance['$']['appContext']['config']['globalProperties'];\n }\n}\n// Get the Vue2 slot template from the root or current Vue component.\nfunction getVueSlot(vueInstance, templateElement, root) {\n if (!vueInstance && !(root && root.vueInstance)) {\n return undefined;\n }\n var instance = (root && root.vueInstance) ? root.vueInstance : vueInstance;\n return getVueChildSlot(instance, templateElement);\n}\nfunction getVueChildSlot(vueInstance, templateElement) {\n if (!vueInstance) {\n return undefined;\n }\n var slots = vueInstance.$slots;\n var scopedSlots = vueInstance.$scopedSlots;\n var vSlots = vueInstance.scopedSlots;\n var children = vueInstance.children;\n if (scopedSlots && scopedSlots[\"\" + templateElement]) {\n return scopedSlots;\n }\n else if (slots && slots.default) {\n var childSlots = slots.default;\n for (var i = 0; i < childSlots.length; i++) {\n var slot = getVueChildSlot(getSlot(childSlots[parseInt(i.toString(), 10)]), templateElement);\n if (slot) {\n return slot;\n }\n }\n }\n else if (vSlots && vSlots[\"\" + templateElement]) {\n return vSlots;\n }\n else if (children) {\n for (var i = 0; i < children.length; i++) {\n var slot = getVueChildSlot(getSlot(children[parseInt(i.toString(), 10)]), templateElement);\n if (slot) {\n return slot;\n }\n }\n }\n return undefined;\n}\nfunction getSlot(vnode) {\n var slot = (vnode.componentOptions && vnode.componentOptions.children) ? vnode.componentOptions :\n (!vnode.data && (vnode.tag === 'e-markersettings' || vnode.tag === 'e-markersetting')) ? vnode : vnode.data;\n return vnode.componentInstance ? vnode.componentInstance : slot;\n}\n// Get the Vue3 slot template from the root or current Vue component.\nfunction getCurrentVueSlot(vueInstance, templateElement, root) {\n if (!vueInstance && !(root && root.vueInstance)) {\n return undefined;\n }\n var slots = (root && root.vueInstance) ? root.vueInstance.$slots : vueInstance.$slots;\n return getChildVueSlot(slots, templateElement);\n}\nfunction getChildVueSlot(slots, templateElement) {\n if (slots && slots[\"\" + templateElement]) {\n return slots;\n }\n else if (slots && slots.default) {\n var childSlots = slots.default();\n childSlots = childSlots.flatMap(function (item) { return Array.isArray(item.children) ? item.children : item; });\n for (var i = 0; i < childSlots.length; i++) {\n var slot = getChildVueSlot(childSlots[parseInt(i.toString(), 10)].children, templateElement);\n if (slot) {\n return slot;\n }\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, extend, setValue } from '@syncfusion/ej2-base';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isCountRequired, isScheduledTask } from './utils';\nimport { DateProcessor } from './date-processor';\n/**\n * To calculate and update task related values\n */\nvar TaskProcessor = /** @class */ (function (_super) {\n __extends(TaskProcessor, _super);\n function TaskProcessor(parent) {\n var _this = _super.call(this, parent) || this;\n _this.recordIndex = 0;\n _this.taskIds = [];\n _this.hierarchyData = [];\n _this.addEventListener();\n return _this;\n }\n TaskProcessor.prototype.addEventListener = function () {\n this.parent.on('beforeDataManipulate', this.checkDataBinding.bind(this));\n };\n /**\n * @param {boolean} isChange .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.checkDataBinding = function (isChange) {\n if (isChange) {\n this.parent.flatData = [];\n this.parent.currentViewData = [];\n this.parent.updatedRecords = [];\n this.dataArray = [];\n this.taskIds = [];\n this.parent.ids = [];\n this.recordIndex = 0;\n this.hierarchyData = [];\n this.parent.predecessorsCollection = [];\n this.parent.treeGrid.parentData = [];\n this.parent.taskIds = [];\n }\n if (isNullOrUndefined(this.parent.dataSource)) {\n this.parent.dataSource = [];\n this.parent.processTimeline();\n this.parent.renderGantt(isChange);\n }\n else if (this.parent.dataSource instanceof DataManager) {\n this.initDataSource(isChange);\n }\n else {\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent)) {\n var ganttdata = getValue('result', this.parent.dataSource);\n this.dataArray = ganttdata;\n }\n else {\n this.dataArray = this.parent.dataSource;\n }\n this.processTimeline();\n this.cloneDataSource();\n this.parent.renderGantt(isChange);\n }\n };\n TaskProcessor.prototype.processTimeline = function () {\n this.parent.processTimeline();\n if (!this.parent.enableValidation) {\n this.parent.dataOperation.calculateProjectDatesForValidatedTasks();\n this.parent.timelineModule.validateTimelineProp();\n }\n };\n TaskProcessor.prototype.initDataSource = function (isChange) {\n var _this = this;\n var queryManager = this.parent.query instanceof Query ? this.parent.query : new Query();\n queryManager.requiresCount();\n var dataManager = this.parent.dataSource;\n dataManager.executeQuery(queryManager).then(function (e) {\n _this.dataArray = e.result;\n _this.processTimeline();\n _this.cloneDataSource();\n _this.parent.renderGantt(isChange);\n }).catch(function (e) {\n // Trigger action failure event\n _this.parent.processTimeline();\n _this.parent.renderGantt(isChange);\n _this.parent.trigger('actionFailure', { error: e });\n });\n };\n TaskProcessor.prototype.constructDataSource = function (dataSource) {\n var mappingData = new DataManager(dataSource).executeLocal(new Query()\n .group(this.parent.taskFields.parentID));\n var rootData = [];\n var index;\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[i];\n if (!isNullOrUndefined(groupData.key)) {\n index = this.taskIds.indexOf(groupData.key.toString());\n if (index > -1) {\n if (!isNullOrUndefined(groupData.key)) {\n dataSource[index][this.parent.taskFields.child] = groupData.items;\n continue;\n }\n }\n }\n if (index !== -1) {\n rootData.push.apply(rootData, groupData.items); // eslint-disable-line\n }\n }\n this.hierarchyData = this.dataReorder(dataSource, rootData);\n };\n TaskProcessor.prototype.cloneDataSource = function () {\n var taskIdMapping = this.parent.taskFields.id;\n var parentIdMapping = this.parent.taskFields.parentID;\n var hierarchicalData = [];\n if (!isNullOrUndefined(taskIdMapping) && !isNullOrUndefined(parentIdMapping)) {\n var data = [];\n for (var i = 0; i < this.dataArray.length; i++) {\n var tempData = this.dataArray[i];\n data.push(extend({}, {}, tempData, true));\n if (!isNullOrUndefined(tempData[taskIdMapping])) {\n this.taskIds.push(tempData[taskIdMapping].toString());\n }\n }\n if (!this.parent.taskFields.child) {\n this.parent.taskFields.child = 'Children';\n }\n this.constructDataSource(data);\n hierarchicalData = this.hierarchyData;\n }\n else {\n hierarchicalData = this.dataArray;\n }\n if (this.parent.taskFields.segmentId) {\n this.segmentCollection = new DataManager(this.parent.segmentData).executeLocal(new Query()\n .group(this.parent.taskFields.segmentId));\n if (!this.parent.taskFields.segments) {\n this.parent.taskFields.segments = 'Segments';\n }\n }\n if (this.parent.viewType !== 'ProjectView') {\n var resources = extend([], [], this.parent.resources, true);\n var unassignedTasks = [];\n this.constructResourceViewDataSource(resources, hierarchicalData, unassignedTasks);\n if (unassignedTasks.length > 0) {\n var record = {};\n record[this.parent.resourceFields.id] = 0;\n record[this.parent.resourceFields.name] = this.parent.localeObj.getConstant('unassignedTask');\n record[this.parent.taskFields.child] = unassignedTasks;\n resources.push(record);\n }\n hierarchicalData = resources;\n }\n this.prepareDataSource(hierarchicalData);\n };\n /**\n * @param {object[]} resources .\n * @param {object[]} data .\n * @param {object[]} unassignedTasks .\n * @returns {void} .\n *\n */\n TaskProcessor.prototype.constructResourceViewDataSource = function (resources, data, unassignedTasks) {\n var _loop_1 = function (i) {\n var tempData = data[i];\n var child = this_1.parent.taskFields.child != null ? this_1.parent.taskFields.child : this_1.parent.taskFields.child = 'Children';\n var resourceData = tempData && tempData[this_1.parent.taskFields.resourceInfo];\n var resourceIdMapping = this_1.parent.resourceFields.id;\n if ((!tempData[child] || tempData[child].length === 0) && resourceData && resourceData.length) {\n resourceData.forEach(function (resource) {\n var id = (typeof resource === 'object') ? resource[resourceIdMapping] :\n resource;\n for (var j = 0; j < resources.length; j++) {\n if (resources[j][resourceIdMapping].toString() === id.toString()) {\n if (resources[j][child]) {\n resources[j][child].push(tempData);\n }\n else {\n resources[j][child] = [tempData];\n }\n break;\n }\n }\n });\n }\n else if (!tempData[child] || (tempData[child] && tempData[child].length === 0)) {\n unassignedTasks.push(tempData);\n }\n if (tempData[this_1.parent.taskFields.child] && tempData[this_1.parent.taskFields.child].length) {\n this_1.constructResourceViewDataSource(resources, tempData[this_1.parent.taskFields.child], unassignedTasks);\n }\n };\n var this_1 = this;\n for (var i = 0; i < data.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * Function to manipulate data-source\n *\n * @param {object[]} data .\n * @returns {void} .\n * @hidden\n */\n TaskProcessor.prototype.prepareDataSource = function (data) {\n this.prepareRecordCollection(data, 0);\n this.parent.initialLoadData = extend({}, {}, this.parent.flatData, true);\n // Method to maintain the shared task uniqueIds\n if (this.parent.viewType === 'ResourceView') {\n this.calculateSharedTaskUniqueIds();\n }\n if (this.parent.taskFields.dependency && this.parent.predecessorModule) {\n this.parent.predecessorModule.ensurePredecessorCollection();\n }\n };\n TaskProcessor.prototype.calculateSharedTaskUniqueIds = function () {\n var _loop_2 = function (i) {\n var value = [];\n value[0] = this_2.parent.getTaskIds()[i][0];\n value[1] = this_2.parent.getTaskIds()[i].slice(1);\n if (value[0] !== 'R') {\n var sharedRecords_1 = [];\n var ids_1 = [];\n this_2.parent.flatData.filter(function (data) {\n if (data.ganttProperties.taskId.toString() === value[1] && data.level !== 0) {\n ids_1.push(data.ganttProperties.rowUniqueID);\n sharedRecords_1.push(data);\n }\n });\n for (var j = 0; j < sharedRecords_1.length; j++) {\n sharedRecords_1[j].ganttProperties.sharedTaskUniqueIds = ids_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < this.parent.getTaskIds().length; i++) {\n _loop_2(i);\n }\n };\n TaskProcessor.prototype.prepareRecordCollection = function (data, level, parentItem) {\n var _this = this;\n var length = data.length;\n var _loop_3 = function (i) {\n var tempData = data[i];\n if (!isNullOrUndefined(this_3.parent.taskFields.segmentId)) {\n var segmentData = this_3.segmentCollection.\n filter(function (x) { return x.key === tempData[_this.parent.taskFields.id]; });\n if (segmentData.length > 0) {\n tempData[this_3.parent.taskFields.segments] = segmentData[0].items;\n }\n }\n var ganttData = this_3.createRecord(tempData, level, parentItem, true);\n if (!this_3.parent.enableValidation || !this_3.parent.autoCalculateDateScheduling) {\n this_3.updateTaskLeftWidth(ganttData);\n }\n ganttData.index = this_3.recordIndex++;\n this_3.parent.ids[ganttData.index] = ganttData.ganttProperties.rowUniqueID;\n this_3.parent.flatData.push(ganttData);\n this_3.parent.setTaskIds(ganttData);\n var childData = tempData[this_3.parent.taskFields.child];\n if (this_3.parent.viewType === 'ResourceView' && isNullOrUndefined(childData)\n && isNullOrUndefined(ganttData.parentItem) && ganttData.level === 0) {\n var ganttProp = ganttData.ganttProperties;\n var parentData = ganttData;\n this_3.parent.setRecordValue(ganttProp.isAutoSchedule ? 'startDate' : 'autoStartDate', null, parentData.ganttProperties, true);\n this_3.parent.setRecordValue(ganttProp.isAutoSchedule ? 'endDate' : 'autoEndDate', null, parentData.ganttProperties, true);\n var parentProgress = 0;\n var parentProp = parentData.ganttProperties;\n this_3.parent.setRecordValue('isMilestone', false, parentProp, true);\n if (parentProp.isAutoSchedule) {\n this_3.calculateDuration(parentData);\n }\n this_3.updateWorkWithDuration(parentData);\n var parentWork = parentProp.work;\n this_3.parent.setRecordValue('work', parentWork, parentProp, true);\n this_3.parent.setRecordValue('taskType', 'FixedDuration', parentProp, true);\n if (!isNullOrUndefined(this_3.parent.taskFields.type)) {\n this_3.updateMappingData(parentData, 'type');\n }\n this_3.parent.setRecordValue('progress', Math.floor(parentProgress), parentProp, true);\n this_3.parent.setRecordValue('totalProgress', 0, parentProp, true);\n this_3.parent.setRecordValue('totalDuration', 0, parentProp, true);\n if (!parentProp.isAutoSchedule) {\n this_3.parent.setRecordValue('autoDuration', this_3.calculateAutoDuration(parentProp), parentProp, true);\n this_3.updateAutoWidthLeft(parentData);\n }\n if (!this_3.parent.allowParentDependency) {\n this_3.resetDependency(parentData);\n }\n this_3.updateWidthLeft(parentData);\n this_3.updateTaskData(parentData);\n }\n if (!isNullOrUndefined(childData) && childData.length > 0) {\n this_3.prepareRecordCollection(childData, ganttData.level + 1, ganttData);\n }\n };\n var this_3 = this;\n for (var i = 0; i < length; i++) {\n _loop_3(i);\n }\n };\n /**\n * Method to update custom field values in gantt record\n *\n * @param {object} data .\n * @param {IGanttData} ganttRecord .\n * @returns {void} .\n */\n TaskProcessor.prototype.addCustomFieldValue = function (data, ganttRecord) {\n var columns = this.parent.ganttColumns;\n var length = columns.length;\n if (length) {\n for (var i = 0; i < length; i++) {\n var fieldName = ganttRecord[columns[i].field];\n if (fieldName === undefined) {\n this.parent.setRecordValue(columns[i].field, data[columns[i].field], ganttRecord);\n }\n }\n }\n };\n /**\n * To populate Gantt record\n *\n * @param {object} data .\n * @param {number} level .\n * @param {IGanttData} parentItem .\n * @param {boolean} isLoad .\n * @returns {IGanttData} .\n * @private\n */\n TaskProcessor.prototype.createRecord = function (data, level, parentItem, isLoad) {\n var taskSettings = this.parent.taskFields;\n var resourceFields = this.parent.resourceFields;\n var progress = data[taskSettings.progress];\n var id = null;\n var name = null;\n var notes = data[taskSettings.notes];\n progress = progress ? parseFloat(progress.toString()) ? parseFloat(progress.toString()) : 0 : 0;\n var predecessors = data[taskSettings.dependency];\n var baselineStartDate = this.getDateFromFormat(data[taskSettings.baselineStartDate], true);\n var baselineEndDate = this.getDateFromFormat(data[taskSettings.baselineEndDate], true);\n var ganttData = {};\n var ganttProperties = {};\n var autoSchedule = (this.parent.taskMode === 'Auto') ? true :\n (this.parent.taskMode === 'Manual') ? false :\n data[taskSettings.manual] === true ? false : true;\n this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);\n if (!isNullOrUndefined(data[taskSettings.id])) {\n id = data[taskSettings.id];\n name = data[taskSettings.name];\n this.addTaskData(ganttData, data, isLoad);\n }\n else if (!isNullOrUndefined(data[resourceFields.id])) {\n id = data[resourceFields.id];\n name = data[resourceFields.name];\n this.addTaskData(ganttData, data, false);\n }\n this.parent.setRecordValue('taskId', id, ganttProperties, true);\n this.parent.setRecordValue('taskName', name, ganttProperties, true);\n if (taskSettings.parentID) {\n this.parent.setRecordValue('parentId', data[taskSettings.parentID], ganttProperties, true);\n }\n this.addCustomFieldValue(data, ganttData);\n this.parent.setRecordValue('isAutoSchedule', autoSchedule, ganttProperties, true);\n this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);\n this.parent.setRecordValue('isMilestone', false, ganttProperties, true);\n this.parent.setRecordValue('indicators', data[taskSettings.indicators], ganttProperties, true);\n this.updateResourceName(ganttData);\n this.calculateScheduledValues(ganttData, data, isLoad);\n this.parent.setRecordValue('baselineStartDate', this.checkBaselineStartDate(baselineStartDate), ganttProperties, true);\n // set default end time, if hour is 0\n if (baselineEndDate && baselineEndDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, baselineEndDate);\n }\n if ((ganttProperties.baselineStartDate && baselineEndDate &&\n (ganttProperties.baselineStartDate.getTime() > baselineEndDate.getTime())) ||\n ((!isNullOrUndefined(ganttProperties.baselineStartDate) && !isNullOrUndefined(ganttProperties.startDate) && (ganttProperties.baselineStartDate.getTime() === ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(baselineEndDate) && !isNullOrUndefined(ganttProperties.endDate) && (baselineEndDate.toLocaleDateString() === ganttProperties.endDate.toLocaleDateString())) &&\n ganttProperties.isMilestone)) {\n baselineEndDate = ganttProperties.baselineStartDate;\n }\n this.parent.setRecordValue('baselineEndDate', this.checkBaselineEndDate(baselineEndDate, ganttProperties), ganttProperties, true);\n this.parent.setRecordValue('progress', progress, ganttProperties, true);\n this.parent.setRecordValue('totalProgress', progress, ganttProperties, true);\n this.parent.setRecordValue('predecessorsName', predecessors, ganttProperties, true);\n this.parent.setRecordValue('notes', notes, ganttProperties, true);\n this.parent.setRecordValue('cssClass', data[taskSettings.cssClass], ganttProperties, true);\n this.parent.setRecordValue('parentItem', this.getCloneParent(parentItem), ganttData);\n var parentUniqId = ganttData.parentItem ? ganttData.parentItem.uniqueID : null;\n this.parent.setRecordValue('parentUniqueID', parentUniqId, ganttData);\n if (this.parent.viewType === 'ResourceView' && !isNullOrUndefined(taskSettings.parentID)\n && !isNullOrUndefined(ganttData.parentItem)) {\n this.parent.setRecordValue('parentId', ganttData.parentItem.taskId, ganttProperties, true);\n }\n this.parent.setRecordValue('level', level, ganttData);\n this.parent.setRecordValue('uniqueID', getUid(this.parent.element.id + '_data_'), ganttData);\n this.parent.setRecordValue('uniqueID', ganttData.uniqueID, ganttProperties, true);\n this.parent.setRecordValue('childRecords', [], ganttData);\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent) &&\n !isNullOrUndefined(taskSettings.child)) {\n this.parent.setRecordValue(taskSettings.child, [], ganttData);\n }\n if (!isNullOrUndefined(data[taskSettings.child]) && data[taskSettings.child].length > 0) {\n this.parent.setRecordValue('hasChildRecords', true, ganttData);\n this.parent.setRecordValue('isMilestone', false, ganttProperties, true);\n if (!this.parent.allowParentDependency) {\n this.resetDependency(ganttData);\n }\n }\n else {\n this.parent.setRecordValue('hasChildRecords', false, ganttData);\n }\n if (ganttData.hasChildRecords) {\n this.parent.setRecordValue('autoStartDate', ganttData.ganttProperties.startDate, ganttProperties);\n this.parent.setRecordValue('autoEndDate', ganttData.ganttProperties.endDate, ganttProperties);\n this.parent.setRecordValue('autoDuration', ganttData.ganttProperties.duration, ganttProperties);\n }\n this.parent.setRecordValue('expanded', (ganttData.hasChildRecords && this.parent.collapseAllParentTasks) ? false : true, ganttData);\n this.updateExpandStateMappingValue(ganttData, data);\n if (!isLoad) {\n this.parent.setRecordValue('width', this.calculateWidth(ganttData), ganttProperties, true);\n this.parent.setRecordValue('left', this.calculateLeft(ganttProperties), ganttProperties, true);\n this.parent.setRecordValue('progressWidth', this.getProgressWidth(ganttProperties.width, progress), ganttProperties, true);\n if (ganttProperties.baselineEndDate && ganttProperties.baselineStartDate) {\n this.parent.setRecordValue('baselineLeft', this.calculateBaselineLeft(ganttProperties), ganttProperties, true);\n this.parent.setRecordValue('baselineWidth', this.calculateBaselineWidth(ganttProperties), ganttProperties, true);\n }\n }\n if (isNullOrUndefined(taskSettings.work)) {\n this.updateWorkWithDuration(ganttData);\n }\n if (!isNullOrUndefined(taskSettings.manual)) {\n this.parent.dataOperation.updateMappingData(ganttData, 'manual');\n }\n this.updateTaskData(ganttData);\n if (predecessors) {\n this.parent.predecessorsCollection.push(ganttData);\n }\n if (!isNullOrUndefined(parentItem)) {\n parentItem.childRecords.push(ganttData);\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent) &&\n !isNullOrUndefined(this.parent.taskFields.child)) {\n parentItem[this.parent.taskFields.child].push(ganttData.taskData);\n }\n }\n if (this.parent.viewType === 'ProjectView') {\n this.parent.setRecordValue('rowUniqueID', ganttProperties.taskId.toString(), ganttProperties, true);\n }\n else {\n var uniqueId = ganttData.uniqueID.replace(this.parent.element.id + '_data_', '');\n if (this.parent.viewType === 'ResourceView' && typeof (ganttData.ganttProperties.taskId) === \"string\") {\n uniqueId = ganttProperties.taskId.toString();\n }\n this.parent.setRecordValue('rowUniqueID', uniqueId, ganttData);\n this.parent.setRecordValue('rowUniqueID', uniqueId, ganttProperties, true);\n this.parent.setRecordValue('sharedTaskUniqueIds', [], ganttProperties, true);\n }\n if (this.parent.allowUnscheduledTasks && ganttData.ganttProperties.startDate\n && (ganttData.ganttProperties.endDate || ganttData.ganttProperties.duration)) {\n this.parent.setRecordValue('segments', this.setSegmentsInfo(ganttData, true), ganttProperties, true);\n this.parent.dataOperation.updateMappingData(ganttData, 'segments');\n if (!isLoad) {\n this.updateWidthLeft(ganttData);\n }\n }\n return ganttData;\n };\n TaskProcessor.prototype.sortSegmentsData = function (segments, onLoad, ganttProp) {\n var _this = this;\n if (onLoad) {\n segments.sort(function (a, b) {\n var startDate = _this.parent.taskFields.startDate;\n return _this.getDateFromFormat(a[startDate]).getTime() - _this.getDateFromFormat(b[startDate]).getTime();\n });\n }\n else {\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n }\n return segments;\n };\n TaskProcessor.prototype.setSegmentsInfo = function (data, onLoad) {\n var taskSettings = this.parent.taskFields;\n var ganttSegments = [];\n var segments;\n var sumOfDuration = 0;\n var remainingDuration = 0;\n var taskData = [];\n if (!isNullOrUndefined(this.parent.taskFields.segments)) {\n segments = onLoad ? data.taskData[this.parent.taskFields.segments] : data.ganttProperties.segments;\n if (!isNullOrUndefined(segments) && segments.length > 1) {\n this.sortSegmentsData(segments, onLoad, data.ganttProperties);\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var startDate = onLoad ? segment[taskSettings.startDate] : segment.startDate;\n var endDate = onLoad ? segment[taskSettings.endDate] : segment.endDate;\n var duration = onLoad ? segment[taskSettings.duration] : segment.duration;\n startDate = this.getDateFromFormat(startDate);\n startDate = this.checkStartDate(startDate, data.ganttProperties, false);\n if (!isNullOrUndefined(duration)) {\n endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n if (taskSettings.duration) {\n remainingDuration = data.ganttProperties.duration - sumOfDuration;\n if (remainingDuration <= 0) {\n continue;\n }\n duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&\n duration > remainingDuration ? remainingDuration : duration;\n endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n }\n else if (!taskSettings.duration && taskSettings.endDate) {\n endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >\n data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;\n duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()\n && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {\n ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n continue;\n }\n }\n }\n else {\n endDate = this.getDateFromFormat(endDate);\n if (endDate && (isNullOrUndefined(duration) || String(duration) === '')) {\n if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, endDate);\n }\n }\n endDate = this.checkEndDate(endDate, data.ganttProperties, false);\n duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n if (taskSettings.duration) {\n remainingDuration = data.ganttProperties.duration - sumOfDuration - 1;\n if (remainingDuration <= 0) {\n continue;\n }\n duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&\n duration > remainingDuration ? remainingDuration : duration;\n endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n }\n else if (!taskSettings.duration && taskSettings.endDate) {\n endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >\n data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;\n duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()\n && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {\n ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n continue;\n }\n }\n }\n segment = {};\n if (!(startDate && endDate) || !(startDate && duration)) {\n break;\n }\n sumOfDuration += duration;\n segment.startDate = startDate;\n segment.endDate = endDate;\n segment.duration = duration;\n segment.width = 0;\n segment.left = 0;\n segment.segmentIndex = i;\n ganttSegments.push(segment);\n if (!isNullOrUndefined(ganttSegments[i - 1])) {\n var offsetDuration = this.getDuration(ganttSegments[i - 1].endDate, ganttSegments[i].startDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n segment.offsetDuration = offsetDuration;\n if (offsetDuration < 1) {\n segment.startDate = this.getEndDate(ganttSegments[i - 1].endDate, 1, data.ganttProperties.durationUnit, data.ganttProperties, false);\n segment.startDate = this.checkStartDate(segment.startDate, data.ganttProperties, false);\n segment.endDate = this.getEndDate(segment.startDate, segment.duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n segment.endDate = !taskSettings.duration && taskSettings.endDate\n && segment.endDate > data.ganttProperties.endDate ? data.ganttProperties.endDate : segment.endDate;\n segment.offsetDuration = 1;\n }\n }\n else {\n segment.offsetDuration = 0;\n }\n taskData.push(this.setSegmentTaskData(segment, segments[i]));\n }\n this.parent.setRecordValue('duration', sumOfDuration, data.ganttProperties, true);\n if (!isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {\n this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);\n }\n if (!isNullOrUndefined(taskSettings.endDate) && !isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {\n this.parent.setRecordValue(this.parent.taskFields.endDate, ganttSegments[ganttSegments.length - 1].endDate, data, true);\n }\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, taskData, data);\n }\n }\n if (ganttSegments.length > 1) {\n this.parent.setRecordValue('segments', ganttSegments, data.ganttProperties, true);\n }\n else {\n ganttSegments = null;\n }\n return ganttSegments;\n };\n TaskProcessor.prototype.setSegmentTaskData = function (segments, segmenttaskData) {\n var taskSettings = this.parent.taskFields;\n var taskData = extend({}, {}, segmenttaskData, true);\n if (!isNullOrUndefined(taskSettings.startDate)) {\n taskData[this.parent.taskFields.startDate] = segments.startDate;\n }\n if (!isNullOrUndefined(taskSettings.endDate)) {\n taskData[this.parent.taskFields.endDate] = segments.endDate;\n }\n if (!isNullOrUndefined(taskSettings.duration)) {\n taskData[this.parent.taskFields.duration] = Number(segments.duration);\n }\n return taskData;\n };\n /**\n * Method to calculate work based on resource unit and duration.\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateWorkWithDuration = function (ganttData) {\n var resources = ganttData.ganttProperties.resourceInfo;\n var work = 0;\n if (!isNullOrUndefined(resources)) {\n var resourcesLength = resources.length;\n var index = void 0;\n var resourceUnit = void 0;\n var resourceOneDayWork = void 0;\n var actualOneDayWork = (this.parent.secondsPerDay) / 3600;\n var durationInDay = this.getDurationInDay(ganttData.ganttProperties.duration, ganttData.ganttProperties.durationUnit);\n for (index = 0; index < resourcesLength; index++) {\n resourceUnit = resources[index][this.parent.resourceFields.unit]; //in percentage\n resourceOneDayWork = resourceUnit > 0 ? (actualOneDayWork * resourceUnit) / 100 : actualOneDayWork; //in hours\n work += (resourceOneDayWork * durationInDay);\n }\n //Update work as per defined unit.\n if (ganttData.ganttProperties.workUnit === 'minute') {\n work = work * 60;\n }\n if (ganttData.ganttProperties.workUnit === 'day') {\n work = work / actualOneDayWork;\n }\n //To check the decimal places.\n if (work % 1 !== 0) {\n work = parseFloat(work.toFixed(2));\n }\n }\n if (ganttData.childRecords.length > 0 && this.parent.isOnEdit) {\n var childCompletedWorks = 0;\n for (var i = 0; i < ganttData.childRecords.length; i++) {\n childCompletedWorks += ganttData.childRecords[i].ganttProperties.work;\n }\n work += childCompletedWorks;\n }\n this.parent.setRecordValue('work', work, ganttData.ganttProperties, true);\n if (!isNullOrUndefined(this.parent.taskFields.work)) {\n this.parent.dataOperation.updateMappingData(ganttData, 'work');\n }\n };\n /**\n *\n * @param {IGanttData} parent .\n * @returns {IParent} .\n * @private\n */\n TaskProcessor.prototype.getCloneParent = function (parent) {\n if (!isNullOrUndefined(parent)) {\n var cloneParent = {};\n cloneParent.uniqueID = parent.uniqueID;\n cloneParent.expanded = parent.expanded;\n cloneParent.level = parent.level;\n cloneParent.index = parent.index;\n cloneParent.taskId = parent.ganttProperties.rowUniqueID;\n return cloneParent;\n }\n else {\n return null;\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.reUpdateResources = function () {\n if (this.parent.flatData.length > 0) {\n var data = void 0;\n var ganttProperties = void 0;\n var ganttData = void 0;\n for (var index = 0; index < this.parent.flatData.length; index++) {\n data = this.parent.flatData[index].taskData;\n ganttProperties = this.parent.flatData[index].ganttProperties;\n ganttData = this.parent.flatData[index];\n this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);\n this.updateResourceName(ganttData);\n }\n }\n };\n TaskProcessor.prototype.addTaskData = function (ganttData, data, isLoad) {\n var _this = this;\n var taskSettings = this.parent.taskFields;\n var dataManager = this.parent.dataSource;\n if (isLoad) {\n if (taskSettings.parentID || (dataManager instanceof DataManager &&\n dataManager.dataSource.json && dataManager.dataSource.offline)) {\n if (taskSettings.parentID) {\n var id = data[taskSettings.id];\n var index = this.taskIds.indexOf(id.toString());\n var tempData_1 = (index > -1) ? this.dataArray[index] : {};\n if (!isNullOrUndefined(this.parent.taskFields.segmentId)) {\n var segmentDataCollection = this.segmentCollection.\n filter(function (x) { return x.key === tempData_1[_this.parent.taskFields.id]; });\n if (segmentDataCollection.length > 0) {\n tempData_1[this.parent.taskFields.segments] = segmentDataCollection[0].items;\n }\n }\n this.parent.setRecordValue('taskData', tempData_1, ganttData);\n }\n else {\n this.parent.setRecordValue('taskData', data, ganttData);\n }\n }\n else {\n this.parent.setRecordValue('taskData', data, ganttData);\n }\n }\n else {\n this.parent.setRecordValue('taskData', data, ganttData);\n }\n };\n TaskProcessor.prototype.updateExpandStateMappingValue = function (ganttData, data) {\n var expandStateMapping = this.parent.taskFields.expandState;\n var mappingValue = data[expandStateMapping];\n var updatableValue;\n if (expandStateMapping && ganttData.hasChildRecords) {\n if (!isNullOrUndefined(mappingValue)) {\n updatableValue = mappingValue.toString() === 'true' ? true : false;\n }\n else if (isNullOrUndefined(mappingValue) && !this.parent.collapseAllParentTasks) {\n updatableValue = true;\n }\n else if (isNullOrUndefined(mappingValue) && this.parent.collapseAllParentTasks) {\n updatableValue = false;\n }\n this.parent.setRecordValue('taskData.' + expandStateMapping, updatableValue, ganttData);\n this.parent.setRecordValue(expandStateMapping, updatableValue, ganttData);\n this.parent.setRecordValue('expanded', updatableValue, ganttData);\n }\n };\n /**\n * @param {IGanttData} ganttData .\n * @param {object} data .\n * @returns {void} .\n */\n TaskProcessor.prototype.setValidatedDates = function (ganttData, data) {\n var ganttProperties = ganttData.ganttProperties;\n var taskSettings = this.parent.taskFields;\n var duration = data[taskSettings.duration];\n var startDate = this.getDateFromFormat(data[taskSettings.startDate], true);\n var endDate = this.getDateFromFormat(data[taskSettings.endDate], true);\n duration = isNullOrUndefined(duration) || duration === '' ? null : duration;\n this.parent.setRecordValue('startDate', new Date(startDate.getTime()), ganttProperties, true);\n if (!isNullOrUndefined(duration) && duration !== '') {\n this.updateDurationValue(duration, ganttProperties);\n }\n else {\n this.calculateDuration(ganttData);\n }\n this.parent.setRecordValue('endDate', new Date((endDate.getTime())), ganttProperties, true);\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {object} data .\n * @param {boolean} isLoad .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.calculateScheduledValues = function (ganttData, data, isLoad) {\n var taskSettings = this.parent.taskFields;\n var ganttProperties = ganttData.ganttProperties;\n var duration = data[taskSettings.duration];\n duration = isNullOrUndefined(duration) || duration === '' ? null : duration;\n var startDate;\n var endDate;\n if (ganttProperties.startDate && ganttProperties.endDate) {\n startDate = this.getDateFromFormat(ganttProperties.startDate, true);\n endDate = this.getDateFromFormat(ganttProperties.endDate, true);\n }\n else {\n startDate = this.getDateFromFormat(data[taskSettings.startDate], true);\n endDate = this.getDateFromFormat(data[taskSettings.endDate], true);\n }\n var segments = taskSettings.segments ? (data[taskSettings.segments] ||\n ganttData.taskData[taskSettings.segments]) : null;\n var isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;\n var durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';\n this.parent.setRecordValue('durationUnit', this.validateDurationUnitMapping(durationMapping), ganttProperties, true);\n var work = !isNullOrUndefined(data[taskSettings.work]) ? parseFloat(data[taskSettings.work]) : 0;\n this.parent.setRecordValue('workUnit', this.validateWorkUnitMapping(this.parent.workUnit), ganttProperties, true);\n var taskTypeMapping = data[taskSettings.type] ? data[taskSettings.type] : '';\n var tType = this.validateTaskTypeMapping(taskTypeMapping);\n this.parent.setRecordValue('taskType', tType, ganttProperties, true);\n if (isLoad && !this.parent.enableValidation && startDate && endDate) {\n this.setValidatedDates(ganttData, data);\n }\n else {\n if (!endDate && !startDate && (isNullOrUndefined(duration) || duration === '')) {\n if (this.parent.allowUnscheduledTasks) {\n return;\n }\n else {\n this.parent.setRecordValue('duration', 1, ganttProperties, true);\n this.parent.setRecordValue('startDate', this.getProjectStartDate(ganttProperties, isLoad), ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n else if (startDate) {\n this.calculateDateFromStartDate(startDate, endDate, duration, ganttData, isLoad);\n }\n else if (endDate) {\n this.calculateDateFromEndDate(endDate, duration, ganttData);\n }\n else if (!isNullOrUndefined(duration) && duration !== '') {\n this.updateDurationValue(duration, ganttProperties);\n if (this.parent.allowUnscheduledTasks) {\n this.parent.setRecordValue('startDate', null, ganttProperties, true);\n this.parent.setRecordValue('endDate', null, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('startDate', this.getProjectStartDate(ganttProperties, isLoad), ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n }\n if (!this.parent.autoCalculateDateScheduling) {\n if (!isNullOrUndefined(ganttData.ganttProperties.startDate)) {\n ganttData[this.parent.taskFields.startDate] = ganttData.ganttProperties.startDate;\n ganttData.taskData[this.parent.taskFields.startDate] = ganttData.ganttProperties.startDate;\n }\n if (!isNullOrUndefined(ganttData.ganttProperties.endDate)) {\n ganttData[this.parent.taskFields.endDate] = ganttData.ganttProperties.endDate;\n ganttData.taskData[this.parent.taskFields.endDate] = ganttData.ganttProperties.endDate;\n }\n }\n if (!isNullOrUndefined(segments)) {\n this.parent.setRecordValue('segments', this.setSegmentsInfo(ganttData, true), ganttProperties, true);\n }\n if (ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n if (!isNullOrUndefined(isMileStone) && isMileStone) {\n this.parent.setRecordValue('duration', 0, ganttProperties, true);\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n if (!isNullOrUndefined(taskSettings.work)) {\n this.parent.setRecordValue('durationUnit', this.parent.durationUnit, ganttProperties, true);\n if (isNaN(work) || isNullOrUndefined(work)) {\n this.parent.setRecordValue('work', 0, ganttProperties, true);\n this.parent.setRecordValue('duration', 0, ganttProperties, true);\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('work', work, ganttProperties, true);\n switch (tType) {\n case 'FixedDuration':\n this.updateUnitWithWork(ganttData);\n break;\n case 'FixedWork':\n this.updateUnitWithWork(ganttData);\n break;\n case 'FixedUnit':\n this.updateDurationWithWork(ganttData);\n break;\n }\n if (!isNullOrUndefined(taskSettings.type)) {\n this.parent.dataOperation.updateMappingData(ganttData, 'type');\n }\n if (ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n else if (!isNullOrUndefined(ganttProperties.startDate) && !isNullOrUndefined(ganttProperties.duration)) {\n this.parent.setRecordValue('isMilestone', false, ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n this.parent.dataOperation.updateMappingData(ganttData, 'work');\n }\n else if (taskSettings.type && ganttProperties.taskType) {\n this.parent.dataOperation.updateMappingData(ganttData, 'type');\n }\n };\n /**\n * Method to update duration with work value.\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateDurationWithWork = function (ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n var resources = ganttProperties.resourceInfo;\n if (!isNullOrUndefined(resources)) {\n var resourcesLength = !isNullOrUndefined(resources) ? resources.length : 0;\n var totalResourceOneDayWork = 0;\n var actualOneDayWork = (this.parent.secondsPerDay) / 3600;\n var updatedDuration = 0;\n var resourceUnit = void 0;\n var index = void 0;\n for (index = 0; index < resourcesLength; index++) {\n resourceUnit = resources[index][this.parent.resourceFields.unit]; //in percentage\n totalResourceOneDayWork += (resourceUnit > 0 ? (actualOneDayWork * resourceUnit) / 100 : actualOneDayWork); //in hours\n }\n var totalHours = this.getWorkInHour(ganttProperties.work, ganttProperties.workUnit);\n if (resourcesLength > 0) {\n updatedDuration += (totalHours / totalResourceOneDayWork);\n }\n //Update duration as per defined unit.\n if (ganttProperties.durationUnit === 'minute') {\n updatedDuration = updatedDuration * actualOneDayWork * 60;\n }\n if (ganttProperties.durationUnit === 'hour') {\n updatedDuration = updatedDuration * actualOneDayWork;\n }\n //To check the decimal places.\n if (updatedDuration % 1 !== 0) {\n updatedDuration = parseFloat(updatedDuration.toFixed(2));\n }\n if (!isNullOrUndefined(ganttProperties.duration)) {\n this.parent.setRecordValue('duration', updatedDuration, ganttProperties, true);\n }\n this.parent.dataOperation.updateMappingData(ganttData, 'duration');\n }\n };\n /**\n * Update units of resources with respect to duration and work of a task.\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateUnitWithWork = function (ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n var resources = ganttProperties.resourceInfo;\n var resourcesLength = !isNullOrUndefined(resources) ? resources.length : 0;\n var actualOneDayWork = (this.parent.secondsPerDay) / 3600;\n if (resourcesLength === 0) {\n return;\n }\n var durationInDay = this.getDurationInDay(ganttData.ganttProperties.duration, ganttData.ganttProperties.durationUnit);\n var totalHours = this.getWorkInHour(ganttProperties.work, ganttProperties.workUnit);\n var totalUnitInPercentage = durationInDay > 0 ? (totalHours / (durationInDay * actualOneDayWork)) * 100 : 0;\n var individualUnit = totalUnitInPercentage > 0 ? totalUnitInPercentage / resourcesLength : 100;\n //To check the decimal places.\n if (individualUnit % 1 !== 0) {\n individualUnit = parseFloat(individualUnit.toFixed(2));\n }\n for (var index = 0; index < resourcesLength; index++) {\n resources[index][this.parent.resourceFields.unit] = individualUnit;\n }\n //To update the unit value in data source\n this.updateResourceName(ganttData);\n };\n TaskProcessor.prototype.calculateDateFromEndDate = function (endDate, duration, ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, endDate);\n }\n var validateAsMilestone = (parseInt(duration, 10) === 0) ? true : null;\n this.parent.setRecordValue('endDate', this.checkEndDate(endDate, ganttData.ganttProperties, validateAsMilestone), ganttProperties, true);\n if (isNullOrUndefined(duration) || duration === '') {\n if (this.parent.allowUnscheduledTasks) {\n this.parent.setRecordValue('startDate', null, ganttProperties, true);\n this.parent.setRecordValue('duration', null, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('duration', 1, ganttProperties, true);\n this.parent.setRecordValue('startDate', this.getStartDate(ganttProperties.endDate, ganttProperties.duration, ganttProperties.durationUnit, ganttProperties), ganttProperties, true);\n }\n }\n else if (!isNullOrUndefined(duration) && duration !== '') {\n this.updateDurationValue(duration, ganttProperties);\n this.parent.setRecordValue('startDate', this.getStartDate(ganttProperties.endDate, ganttProperties.duration, ganttProperties.durationUnit, ganttProperties), ganttProperties, true);\n }\n };\n TaskProcessor.prototype.calculateDateFromStartDate = function (startDate, endDate, duration, ganttData, isLoad) {\n var ganttProperties = ganttData.ganttProperties;\n var validateAsMilestone = (parseInt(duration, 10) === 0 || ((startDate && endDate) &&\n (new Date(startDate.getTime()) === new Date(endDate.getTime())))) ? true : null;\n this.parent.setRecordValue('startDate', this.checkStartDate(startDate, ganttProperties, validateAsMilestone, isLoad), ganttProperties, true);\n if (this.parent.isTreeGridRendered && ganttData) {\n this.updateTaskData(ganttData);\n }\n if (!endDate && (isNullOrUndefined(duration) || duration === '')) {\n if (this.parent.allowUnscheduledTasks) {\n this.parent.setRecordValue('endDate', null, ganttProperties, true);\n this.parent.setRecordValue('duration', null, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('duration', 1, ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n else if (!isNullOrUndefined(duration) && !endDate) {\n this.updateDurationValue(duration, ganttProperties);\n this.calculateEndDate(ganttData);\n }\n else if (endDate && (isNullOrUndefined(duration) || duration === '')) {\n if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, endDate);\n }\n this.parent.setRecordValue('endDate', this.checkEndDate(endDate, ganttData.ganttProperties), ganttProperties, true);\n if (this.compareDates(ganttProperties.startDate, ganttProperties.endDate) === 1) {\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('duration', 0, ganttProperties, true);\n }\n else {\n this.calculateDuration(ganttData);\n }\n }\n else {\n this.updateDurationValue(duration, ganttProperties);\n this.calculateEndDate(ganttData);\n }\n };\n /**\n *\n * @param {number} parentWidth .\n * @param {number} percent .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.getProgressWidth = function (parentWidth, percent) {\n return (parentWidth * percent) / 100;\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {boolean} isAuto .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateWidth = function (ganttData, isAuto) {\n var ganttProp = ganttData.ganttProperties;\n var sDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var eDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var unscheduledTaskWidth = 3;\n if (isNullOrUndefined(sDate) && isNullOrUndefined(eDate)) {\n sDate = this.getValidStartDate(ganttProp, isAuto);\n eDate = this.getValidEndDate(ganttProp, isAuto);\n }\n if (isNullOrUndefined(sDate) || isNullOrUndefined(eDate)) {\n return unscheduledTaskWidth;\n }\n else if (ganttProp.isMilestone && (!ganttData.hasChildRecords || ganttProp.isAutoSchedule)) {\n //let taskBarHeight: number = this.getTaskbarHeight();\n return 0;\n }\n else {\n return this.getTaskWidth(sDate, eDate, ganttProp);\n }\n };\n TaskProcessor.prototype.getTaskbarHeight = function () {\n var rowHeight = this.parent.rowHeight;\n var taskBarHeight = this.parent.taskbarHeight;\n if (taskBarHeight < rowHeight) {\n return taskBarHeight;\n }\n else {\n return rowHeight;\n }\n };\n /**\n * Method to calculate left\n *\n * @param {ITaskData} ganttProp .\n * @param {boolean} isAuto .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateLeft = function (ganttProp, isAuto) {\n var sDate = null;\n var left = -300;\n var startDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var endDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var duration = isAuto ? ganttProp.autoDuration : ganttProp.duration; // eslint-disable-line\n var milestone = ganttProp.isMilestone;\n if (startDate) {\n sDate = new Date(startDate.getTime());\n }\n else if (endDate) {\n sDate = new Date(endDate.getTime());\n milestone = isNullOrUndefined(startDate) && this.parent.allowUnscheduledTasks ? false : true;\n }\n else {\n sDate = this.getValidStartDate(ganttProp);\n }\n if (!isNullOrUndefined(sDate)) {\n left = this.getTaskLeft(sDate, milestone);\n }\n return left;\n };\n /**\n * calculate the left position of the auto scheduled taskbar\n *\n * @param {ITaskData} ganttProperties - Defines the gantt data.\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateAutoLeft = function (ganttProperties) {\n return this.getTaskLeft(ganttProperties.autoStartDate, ganttProperties.isMilestone);\n };\n /**\n * To calculate duration of Gantt record with auto scheduled start date and auto scheduled end date\n *\n * @param {ITaskData} ganttProperties - Defines the gantt data.\n * @returns {number} .\n */\n TaskProcessor.prototype.calculateAutoDuration = function (ganttProperties) {\n return this.getDuration(ganttProperties.autoStartDate, ganttProperties.autoEndDate, ganttProperties.durationUnit, false, ganttProperties.isMilestone);\n };\n /**\n * calculate the with between auto scheduled start date and auto scheduled end date\n *\n * @param {ITaskData} ganttProperties - Defines the gantt data.\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateAutoWidth = function (ganttProperties) {\n return this.getTaskWidth(ganttProperties.autoStartDate, ganttProperties.autoEndDate);\n };\n /**\n * calculate the left margin of the baseline element\n *\n * @param {ITaskData} ganttProperties .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateBaselineLeft = function (ganttProperties) {\n var baselineStartDate = this.getDateFromFormat(ganttProperties.baselineStartDate);\n var baselineEndDate = this.getDateFromFormat(ganttProperties.baselineEndDate);\n if (baselineStartDate && baselineEndDate) {\n return (this.getTaskLeft(baselineStartDate, ganttProperties.isMilestone));\n }\n else {\n return 0;\n }\n };\n /**\n * calculate the width between baseline start date and baseline end date.\n *\n * @param {ITaskData} ganttProperties .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateBaselineWidth = function (ganttProperties) {\n var baselineStartDate = this.getDateFromFormat(ganttProperties.baselineStartDate);\n var baselineEndDate = this.getDateFromFormat(ganttProperties.baselineEndDate);\n if (baselineStartDate && baselineEndDate && (baselineStartDate.getTime() !== baselineEndDate.getTime())) {\n return (this.getTaskWidth(baselineStartDate, baselineEndDate));\n }\n else {\n return 0;\n }\n };\n /**\n * To get tasks width value\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.getTaskWidth = function (startDate, endDate, ganttData) {\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n var isValid = false;\n var modifiedsDate = new Date(startDate.getTime());\n var hour = 0;\n if (ganttData && ganttData.durationUnit == 'hour') {\n modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 60 * 1000);\n }\n if (ganttData && ganttData.durationUnit == 'minute') {\n modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 60 * 60 * 1000);\n }\n for (var i = 0; i < this.parent.dayWorkingTime.length; i++) {\n hour = hour + this.parent.dayWorkingTime[i].to - this.parent.dayWorkingTime[i].from;\n }\n var dateDiff = modifiedsDate.getTime() - sDate.getTime();\n if (tierMode === 'Day') {\n if ((Math.floor((dateDiff / (1000 * 60 * 60)) % 24) >= hour || dateDiff === 0)) {\n isValid = true;\n }\n if (this.getSecondsInDecimal(sDate) === this.parent.defaultStartTime && isValid) {\n sDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(eDate) === this.parent.defaultEndTime) {\n eDate.setHours(24);\n }\n if (this.getSecondsInDecimal(eDate) === this.parent.defaultStartTime) {\n eDate.setHours(0, 0, 0, 0);\n }\n }\n else {\n isValid = true;\n }\n if ((sDate).getTime() === (eDate).getTime()) {\n return (this.parent.perDayWidth);\n }\n else {\n if (isValid) {\n return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);\n }\n else {\n return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * hour)) * this.parent.perDayWidth);\n }\n }\n };\n /**\n * Get task left value\n *\n * @param {Date} startDate .\n * @param {boolean} isMilestone .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.getTaskLeft = function (startDate, isMilestone) {\n var date = new Date(startDate.getTime());\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n if (tierMode === 'Day') {\n if (this.getSecondsInDecimal(date) === this.parent.defaultStartTime) {\n date.setHours(0, 0, 0, 0);\n }\n else if (isMilestone && this.getSecondsInDecimal(date) === this.parent.defaultEndTime) {\n date.setHours(24);\n }\n else if (this.getSecondsInDecimal(date) === this.parent.defaultEndTime && this.parent.allowUnscheduledTasks) {\n date.setHours(22);\n }\n }\n var timelineStartDate = this.parent.timelineModule.timelineStartDate;\n if (timelineStartDate) {\n return (date.getTime() - timelineStartDate.getTime()) / (1000 * 60 * 60 * 24) * this.parent.perDayWidth;\n }\n else {\n return 0;\n }\n };\n TaskProcessor.prototype.getSplitTaskWidth = function (sDate, duration, data) {\n var startDate = new Date(sDate.getTime());\n var endDate = new Date((this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false).getTime()));\n var tierViewMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n if (tierViewMode === 'Day') {\n if (this.getSecondsInDecimal(startDate) === this.parent.defaultStartTime) {\n startDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(endDate) === this.parent.defaultEndTime) {\n endDate.setHours(24);\n }\n if (this.getSecondsInDecimal(endDate) === this.parent.defaultStartTime) {\n endDate.setHours(0, 0, 0, 0);\n }\n }\n return ((this.getTimeDifference(startDate, endDate) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);\n };\n TaskProcessor.prototype.getSplitTaskLeft = function (sDate, segmentTaskStartDate) {\n var stDate = new Date(sDate.getTime());\n var tierViewMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n if (tierViewMode === 'Day') {\n if (this.getSecondsInDecimal(stDate) === this.parent.defaultStartTime) {\n stDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(segmentTaskStartDate) === this.parent.defaultStartTime) {\n segmentTaskStartDate.setHours(0, 0, 0, 0);\n }\n }\n if (segmentTaskStartDate) {\n return (stDate.getTime() - segmentTaskStartDate.getTime()) / (1000 * 60 * 60 * 24) * this.parent.perDayWidth;\n }\n else {\n return 0;\n }\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {string} fieldName .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateMappingData = function (ganttData, fieldName) {\n var columnMapping = this.parent.columnMapping;\n var ganttProp = ganttData.ganttProperties;\n if (isNullOrUndefined(columnMapping[fieldName]) && fieldName !== 'taskType' && fieldName !== 'segments') {\n return;\n }\n if (fieldName === 'predecessorName') {\n //\n }\n else if (fieldName === 'resourceInfo') {\n var resourceData = ganttProp.resourceInfo;\n var resourceSettings = this.parent.resourceFields;\n // eslint-disable-next-line\n var resourcesId = [];\n var resourcesName = [];\n if (!isNullOrUndefined(resourceData)) {\n for (var i = 0; i < resourceData.length; i++) {\n resourcesId.push(resourceData[i][resourceSettings.id]);\n var resName = resourceData[i][resourceSettings.name];\n var resourceUnit = resourceData[i][resourceSettings.unit];\n if (resourceUnit !== 100) {\n resName += '[' + resourceUnit + '%' + ']';\n }\n resourcesName.push(resName);\n }\n }\n this.parent.setRecordValue('resourceNames', resourcesName.join(','), ganttProp, true);\n this.updateTaskDataResource(ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], resourcesName.join(','), ganttData);\n }\n else if (fieldName === 'startDate' || fieldName === 'endDate') {\n this.setRecordDate(ganttData, ganttProp[fieldName], columnMapping[fieldName]);\n }\n else if (fieldName === 'duration') {\n this.setRecordDuration(ganttData, columnMapping[fieldName]);\n }\n else if (fieldName === 'work') {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], this.getWorkString(ganttProp.work, ganttProp.workUnit), ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], ganttProp[fieldName], ganttData);\n }\n else if (fieldName === 'type') {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], ganttProp[fieldName], ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], ganttProp[fieldName], ganttData);\n }\n else if (fieldName === 'manual') {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], !ganttProp.isAutoSchedule, ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], !ganttProp.isAutoSchedule, ganttData);\n }\n else if (fieldName === 'segments') {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, this.segmentTaskData(ganttData), ganttData);\n }\n else {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], ganttProp[fieldName], ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], ganttProp[fieldName], ganttData);\n }\n };\n TaskProcessor.prototype.segmentTaskData = function (data) {\n var segments = data.ganttProperties.segments;\n var taskSettings = this.parent.taskFields;\n if (isNullOrUndefined(segments)) {\n return null;\n }\n var taskData = extend([], [], data.taskData[taskSettings.segments], true);\n for (var i = 0; i < segments.length; i++) {\n if (this.parent.isEdit || (this.parent.editModule && this.parent.editModule.dialogModule &&\n getValue('isEdit', this.parent.editModule.dialogModule)) || (this.parent.contextMenuModule && getValue('isEdit', this.parent.contextMenuModule))) {\n taskData[i] = {};\n }\n if (!isNullOrUndefined(taskSettings.startDate)) {\n taskData[i][this.parent.taskFields.startDate] = segments[i].startDate;\n }\n if (!isNullOrUndefined(taskSettings.endDate)) {\n taskData[i][this.parent.taskFields.endDate] = segments[i].endDate;\n }\n if (!isNullOrUndefined(taskSettings.duration)) {\n taskData[i][this.parent.taskFields.duration] = Number(segments[i].duration);\n }\n }\n return taskData;\n };\n /**\n * Method to update the task data resource values\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateTaskDataResource = function (ganttData) {\n var resourceData = ganttData.ganttProperties.resourceInfo;\n var preTaskResources = ganttData.taskData[this.parent.taskFields.resourceInfo];\n var resourceSettings = this.parent.resourceFields;\n if (isNullOrUndefined(preTaskResources)) {\n ganttData.taskData[this.parent.taskFields.resourceInfo] = resourceData;\n }\n else if (resourceData.length) {\n for (var i = 0; i < resourceData.length; i++) {\n var isAdded = false;\n for (var j = 0; j < preTaskResources.length; j++) {\n if (typeof preTaskResources[j] === 'number' || typeof preTaskResources[j] === 'string') {\n if (parseInt(preTaskResources[j], 10) === parseInt(resourceData[i][resourceSettings.id], 10)) {\n preTaskResources[j] = resourceData[i];\n isAdded = true;\n break;\n }\n }\n else if (preTaskResources[j][resourceSettings.id] === resourceData[i][resourceSettings.id] && typeof preTaskResources[j] !== 'number') {\n preTaskResources[j] = extend({}, preTaskResources[j], resourceData[i], true);\n isAdded = true;\n break;\n }\n }\n if (!isAdded) {\n preTaskResources.push(resourceData[i]);\n }\n }\n var data_1 = [];\n var _loop_4 = function (k) {\n resourceData.filter(function (resourceInfo) {\n if (resourceInfo[resourceSettings.id] === preTaskResources[k][resourceSettings.id] && data_1.indexOf(preTaskResources[k]) === -1) {\n data_1.push(preTaskResources[k]);\n }\n });\n };\n for (var k = 0; k < preTaskResources.length; k++) {\n _loop_4(k);\n }\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, data_1, ganttData);\n }\n else {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, [], ganttData);\n }\n };\n TaskProcessor.prototype.setRecordDate = function (task, value, mapping) {\n var tempDate = typeof value === 'string' ? new Date(value) : value;\n if (!isNullOrUndefined(value)) {\n value = new Date(tempDate.getTime());\n }\n this.parent.setRecordValue(mapping, value, task);\n if (!isNullOrUndefined(value)) {\n value = new Date(tempDate.getTime());\n }\n if (!this.parent.isLoad && !this.parent.isDynamicData) {\n this.parent.setRecordValue('taskData.' + mapping, value, task);\n }\n this.parent.isDynamicData = false;\n };\n TaskProcessor.prototype.getDurationInDay = function (duration, durationUnit) {\n if (durationUnit === 'day') {\n return duration;\n }\n else if (durationUnit === 'hour') {\n return duration / (this.parent.secondsPerDay / 3600);\n }\n else {\n return duration / (this.parent.secondsPerDay / 60);\n }\n };\n TaskProcessor.prototype.setRecordDuration = function (task, mapping) {\n var duration = task.ganttProperties.duration;\n var durationUnit = task.ganttProperties.durationUnit;\n if (!isNullOrUndefined(duration)) {\n this.parent.setRecordValue(mapping, task.ganttProperties.duration, task);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var durationValue = (getValue(mapping, task.taskData));\n if (isNaN(durationValue) && isNullOrUndefined(this.parent.taskFields.durationUnit) && !isNullOrUndefined(durationValue)) {\n this.parent.setRecordValue('taskData.' + mapping, this.getDurationString(duration, durationUnit), task);\n }\n else {\n if (typeof durationValue === 'string') {\n this.parent.setRecordValue('taskData.' + mapping, duration.toString(), task);\n }\n else {\n this.parent.setRecordValue('taskData.' + mapping, duration, task);\n }\n }\n }\n else {\n this.parent.setRecordValue(mapping, duration, task);\n this.parent.setRecordValue('taskData.' + mapping, duration, task);\n }\n if (this.parent.taskFields.durationUnit) {\n task.taskData[this.parent.taskFields.durationUnit] = task.ganttProperties.durationUnit;\n }\n };\n TaskProcessor.prototype.setDataSource = function (data) {\n var createData = [];\n var length = data.length;\n for (var i = 0; i < length; i++) {\n var record = data[i];\n createData.push(record);\n if (!(isNullOrUndefined(data[i][this.parent.taskFields.child]))) {\n this.setDataSource(data[i][this.parent.taskFields.child]);\n }\n }\n return createData;\n };\n TaskProcessor.prototype.setStartDate = function (task) {\n var _this = this;\n var hierarchicalData = [];\n if (!isNullOrUndefined(this.parent.taskFields.parentID) && !isNullOrUndefined(this.parent.taskFields.id)) {\n hierarchicalData = this.setDataSource(this.parent.dataSource);\n }\n else {\n hierarchicalData = this.parent.dataSource;\n }\n this.parent.flatData.map(function (data) {\n hierarchicalData.map(function (record) {\n if (data.ganttProperties.taskId === record[_this.parent.taskFields.id]) {\n if (!isNullOrUndefined(_this.parent.taskFields.startDate)) {\n task[_this.parent.taskFields.endDate] = record[_this.parent.taskFields.endDate];\n }\n if (!isNullOrUndefined(_this.parent.taskFields.endDate)) {\n task[_this.parent.taskFields.endDate] = record[_this.parent.taskFields.endDate];\n }\n }\n });\n });\n };\n TaskProcessor.prototype.getWorkInHour = function (work, workUnit) {\n if (workUnit === 'day') {\n return work * (this.parent.secondsPerDay / 3600);\n }\n else if (workUnit === 'minute') {\n return work / 60;\n }\n else {\n return work;\n }\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateTaskData = function (ganttData) {\n var dataMapping = this.parent.taskFields;\n var ganttProperties = ganttData.ganttProperties;\n if (!isNullOrUndefined(ganttData.taskData)) {\n var data = ganttData.taskData;\n if (dataMapping.id) {\n this.parent.setRecordValue('taskData.' + dataMapping.id, ganttProperties.taskId, ganttData);\n this.parent.setRecordValue(dataMapping.id, ganttProperties.taskId, ganttData);\n }\n if (dataMapping.name) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.name, ganttProperties.taskName, ganttData);\n }\n this.parent.setRecordValue(dataMapping.name, ganttProperties.taskName, ganttData);\n }\n if (dataMapping.startDate) {\n this.setRecordDate(ganttData, ganttProperties.startDate, dataMapping.startDate);\n }\n if (dataMapping.endDate) {\n this.setRecordDate(ganttData, ganttProperties.endDate, dataMapping.endDate);\n }\n if (dataMapping.duration) {\n this.setRecordDuration(ganttData, dataMapping.duration);\n }\n if (dataMapping.durationUnit) {\n data[dataMapping.durationUnit] = ganttProperties.durationUnit;\n }\n if (dataMapping.progress) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.progress, ganttProperties.progress, ganttData);\n }\n this.parent.setRecordValue(dataMapping.progress, ganttProperties.progress, ganttData);\n }\n if (dataMapping.baselineStartDate) {\n this.setRecordDate(ganttData, ganttProperties.baselineStartDate, dataMapping.baselineStartDate);\n }\n if (dataMapping.baselineEndDate) {\n this.setRecordDate(ganttData, ganttProperties.baselineEndDate, dataMapping.baselineEndDate);\n }\n if (dataMapping.notes) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.notes, ganttProperties.notes, ganttData);\n }\n this.parent.setRecordValue(dataMapping.notes, ganttProperties.notes, ganttData);\n }\n if (dataMapping.cssClass) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.cssClass, ganttProperties.cssClass, ganttData);\n }\n this.parent.setRecordValue(dataMapping.cssClass, ganttProperties.cssClass, ganttData);\n }\n if (dataMapping.indicators) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.indicators, ganttProperties.indicators, ganttData);\n }\n this.parent.setRecordValue(dataMapping.indicators, ganttProperties.indicators, ganttData);\n }\n if (dataMapping.parentID) {\n var parentID = this.parent.viewType === 'ProjectView' ? ganttProperties.parentId : data[dataMapping.parentID];\n this.parent.setRecordValue('taskData.' + dataMapping.parentID, parentID, ganttData);\n this.parent.setRecordValue(dataMapping.parentID, ganttProperties.parentId, ganttData);\n }\n if (dataMapping.work) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.work, this.getWorkString(ganttProperties.work, ganttProperties.workUnit), ganttData);\n }\n this.parent.setRecordValue(dataMapping.work, ganttProperties.work, ganttData);\n }\n if (dataMapping.type) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.type, ganttProperties.taskType, ganttData);\n }\n this.parent.setRecordValue(dataMapping.type, ganttProperties.taskType, ganttData);\n }\n }\n };\n /**\n * To set resource value in Gantt record\n *\n * @param {object} data .\n * @returns {object[]} .\n * @private\n */\n TaskProcessor.prototype.setResourceInfo = function (data) {\n // eslint-disable-next-line\n var resourceIdCollection;\n if (isNullOrUndefined(data[this.parent.taskFields.resourceInfo])) {\n return resourceIdCollection;\n }\n resourceIdCollection = data[this.parent.taskFields.resourceInfo];\n var resourceData;\n if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)\n && this.parent.editModule.dialogModule.isAddNewResource) {\n resourceData = this.parent.editModule.dialogModule.ganttResources;\n }\n else {\n resourceData = this.parent.resources;\n }\n var resourceIDMapping = this.parent.resourceFields.id;\n var resourceUnitMapping = this.parent.resourceFields.unit;\n var resourceGroup = this.parent.resourceFields.group;\n var resources = [];\n var _loop_5 = function (count) {\n var resource = resourceData.filter(function (resourceInfo) {\n if (typeof (resourceIdCollection[count]) === 'object' &&\n resourceIdCollection[count][resourceIDMapping] === resourceInfo[resourceIDMapping]) {\n return true;\n }\n else {\n return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);\n }\n });\n var ganttDataResource = extend({}, resource[0]);\n resources.push(ganttDataResource);\n if (!isNullOrUndefined(resourceUnitMapping) && !isNullOrUndefined(resourceIdCollection[count][resourceUnitMapping])) {\n ganttDataResource[resourceUnitMapping] = resourceIdCollection[count][resourceUnitMapping];\n }\n if (!isNullOrUndefined(resourceGroup) && !isNullOrUndefined(resourceIdCollection[count][resourceGroup])) {\n ganttDataResource[resourceGroup] = resourceIdCollection[count][resourceGroup];\n }\n };\n for (var count = 0; count < resourceIdCollection.length; count++) {\n _loop_5(count);\n }\n this.updateResourceUnit(resources);\n return resources;\n };\n /**\n * To set resource unit in Gantt record\n *\n * @param {object[]} resourceData .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateResourceUnit = function (resourceData) {\n var resourceUnit = this.parent.resourceFields.unit;\n if (!isNullOrUndefined(resourceUnit)) {\n var length_1 = resourceData.length;\n var index = void 0;\n for (index = 0; index < length_1; index++) {\n if (isNullOrUndefined(resourceData[index][resourceUnit])) {\n resourceData[index][resourceUnit] = 100;\n }\n }\n }\n };\n /**\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateResourceName = function (data) {\n var resourceInfo = data.ganttProperties.resourceInfo;\n var resourceName = [];\n var taskMapping = this.parent.taskFields;\n if (resourceInfo) {\n var resourceLength = resourceInfo.length;\n var taskResources = extend([], [], data.taskData[this.parent.taskFields.resourceInfo], true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, [], data);\n for (var i = 0; i < resourceLength; i++) {\n var resource = resourceInfo[i];\n var resName = resource[this.parent.resourceFields.name];\n var resourceUnit = resource[this.parent.resourceFields.unit];\n if (resourceUnit !== 100) {\n resName += '[' + resourceUnit + '%' + ']';\n }\n if (!isNullOrUndefined(resName)) {\n resourceName.push(resName);\n }\n if (data.taskData) {\n var mapping = taskMapping.resourceInfo;\n // eslint-disable-next-line\n if (typeof (taskResources[i] === 'object')) {\n data.taskData[mapping].push(taskResources[i]);\n }\n else {\n data.taskData[mapping].push(resource[this.parent.resourceFields.id]);\n }\n }\n }\n this.parent.setRecordValue('resourceNames', resourceName.join(','), data.ganttProperties, true);\n this.parent.setRecordValue(this.parent.taskFields.resourceInfo, resourceName.join(','), data, true);\n this.updateTaskDataResource(data);\n }\n };\n TaskProcessor.prototype.dataReorder = function (flatCollection, rootCollection) {\n var result = [];\n while (flatCollection.length > 0 && rootCollection.length > 0) {\n var index = rootCollection.indexOf(flatCollection[0]);\n if (index === -1) {\n flatCollection.shift();\n }\n else {\n result.push(flatCollection.shift());\n rootCollection.splice(index, 1);\n }\n }\n return result;\n };\n TaskProcessor.prototype.validateDurationUnitMapping = function (durationUnit) {\n var unit = durationUnit;\n if ((unit === 'minute') || (unit === 'minutes') || (unit === 'm') || (unit === 'min')) {\n unit = 'minute';\n }\n else if ((unit === 'hour') || (unit === 'hours') || (unit === 'h') || (unit === 'hr')) {\n unit = 'hour';\n }\n else if ((unit === 'day') || (unit === 'days') || (unit === 'd')) {\n unit = 'day';\n }\n else {\n unit = this.parent.durationUnit.toLocaleLowerCase();\n }\n return unit;\n };\n TaskProcessor.prototype.validateTaskTypeMapping = function (taskType) {\n var type = taskType;\n if (type === 'FixedDuration') {\n type = 'FixedDuration';\n }\n else if (type === 'FixedUnit') {\n type = 'FixedUnit';\n }\n else if (type === 'FixedWork') {\n type = 'FixedWork';\n }\n else {\n type = this.parent.taskType;\n }\n return type;\n };\n TaskProcessor.prototype.validateWorkUnitMapping = function (workUnit) {\n var unit = workUnit;\n if (unit === 'minute') {\n unit = 'minute';\n }\n else if (unit === 'hour') {\n unit = 'hour';\n }\n else if (unit === 'day') {\n unit = 'day';\n }\n else {\n unit = this.parent.workUnit.toLocaleLowerCase();\n }\n return unit;\n };\n /**\n * To update duration value in Task\n *\n * @param {string} duration .\n * @param {ITaskData} ganttProperties .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateDurationValue = function (duration, ganttProperties) {\n var tempDuration = this.getDurationValue(duration);\n if (!isNaN(getValue('duration', tempDuration))) {\n this.parent.setRecordValue('duration', getValue('duration', tempDuration), ganttProperties, true);\n }\n if (!isNullOrUndefined(getValue('durationUnit', tempDuration))) {\n this.parent.setRecordValue('durationUnit', getValue('durationUnit', tempDuration), ganttProperties, true);\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.reUpdateGanttData = function () {\n if (this.parent.flatData.length > 0) {\n var data = void 0;\n var ganttData = void 0;\n this.parent.secondsPerDay = this.getSecondsPerDay();\n for (var index = 0; index < this.parent.flatData.length; index++) {\n data = this.parent.flatData[index].taskData;\n ganttData = this.parent.flatData[index];\n if (!isNullOrUndefined(this.parent.taskFields.duration)) {\n this.setRecordDuration(ganttData, this.parent.taskFields.duration);\n }\n if (this.parent.isLoad) {\n this.setStartDate(ganttData);\n }\n this.calculateScheduledValues(ganttData, data, false);\n }\n this.updateGanttData();\n }\n };\n //check day is fall between from and to date range\n TaskProcessor.prototype._isInStartDateRange = function (day, from, to) {\n var isInRange = false;\n if (day.getTime() >= from.getTime() && day.getTime() < to.getTime()) {\n isInRange = true;\n }\n return isInRange;\n };\n //check day is fall between from and to date range\n TaskProcessor.prototype._isInEndDateRange = function (day, from, to) {\n var isInRange = false;\n if (day.getTime() > from.getTime() && day.getTime() <= to.getTime()) {\n isInRange = true;\n }\n return isInRange;\n };\n /**\n * Method to find overlapping value of the parent task\n *\n * @param {IGanttData} resourceTask .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateOverlappingValues = function (resourceTask) {\n var tasks = resourceTask.childRecords;\n var currentTask;\n var ranges = [];\n if (tasks.length <= 1) {\n resourceTask.ganttProperties.workTimelineRanges = [];\n return;\n }\n tasks = this.setSortedChildTasks(resourceTask);\n this.updateOverlappingIndex(tasks);\n for (var count = 1; count < tasks.length; count++) {\n currentTask = tasks[count];\n var cStartDate = new Date(currentTask.ganttProperties.startDate.getTime());\n var cEndDate = new Date(currentTask.ganttProperties.endDate.getTime()); //task 2\n var range = [];\n // eslint-disable-next-line\n var rangeObj = {};\n for (var index = 0; index < count; index++) {\n var tStartDate = tasks[index].ganttProperties.startDate;\n var tEndDate = tasks[index].ganttProperties.endDate; // task 1\n var rangeObj_1 = {};\n if (this._isInStartDateRange(cStartDate, tStartDate, tEndDate) || this._isInEndDateRange(cEndDate, tStartDate, tEndDate)) {\n if ((tStartDate.getTime() > cStartDate.getTime() && tStartDate.getTime() < cEndDate.getTime()\n && tEndDate.getTime() > cStartDate.getTime() && tEndDate.getTime() >= cEndDate.getTime())\n || (cStartDate.getTime() === tStartDate.getTime() && cEndDate.getTime() <= tEndDate.getTime())) {\n rangeObj_1.from = tStartDate;\n rangeObj_1.to = cEndDate;\n }\n else if (cStartDate.getTime() === tStartDate.getTime() && cEndDate.getTime() > tEndDate.getTime()) {\n rangeObj_1.from = tStartDate;\n rangeObj_1.to = tEndDate;\n }\n else if (cStartDate.getTime() > tStartDate.getTime() && cEndDate.getTime() >= tEndDate.getTime()) {\n rangeObj_1.from = cStartDate;\n rangeObj_1.to = tEndDate;\n }\n else if (cStartDate.getTime() > tStartDate.getTime() && cEndDate.getTime() < tEndDate.getTime()) {\n rangeObj_1.from = cStartDate;\n rangeObj_1.to = cEndDate;\n }\n range.push(rangeObj_1);\n }\n }\n // eslint-disable-next-line\n ranges.push.apply(ranges, this.mergeRangeCollections(range));\n }\n this.parent.setRecordValue('workTimelineRanges', this.mergeRangeCollections(ranges, true), resourceTask.ganttProperties, true);\n this.calculateRangeLeftWidth(resourceTask.ganttProperties.workTimelineRanges);\n };\n /**\n * @param {IGanttData[]} tasks .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateOverlappingIndex = function (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n tasks[i].ganttProperties.eOverlapIndex = i;\n }\n };\n /**\n * Method to calculate the left and width value of oarlapping ranges\n *\n * @param {IWorkTimelineRanges[]} ranges .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.calculateRangeLeftWidth = function (ranges) {\n for (var count = 0; count < ranges.length; count++) {\n ranges[count].left = this.getTaskLeft(ranges[count].from, false);\n ranges[count].width = this.getTaskWidth(ranges[count].from, ranges[count].to);\n }\n };\n /**\n * @param {IWorkTimelineRanges[]} ranges .\n * @param {boolean} isSplit .\n * @returns {IWorkTimelineRanges[]} .\n * @private\n */\n TaskProcessor.prototype.mergeRangeCollections = function (ranges, isSplit) {\n var finalRange = [];\n var currentTopRange = {};\n var cCompareRange = {};\n var cStartDate;\n var cEndDate;\n var tStartDate;\n var tEndDate;\n var sortedRanges = new DataManager(ranges).executeLocal(new Query()\n .sortBy(this.parent.taskFields.startDate, 'Ascending'));\n for (var i = 0; i < sortedRanges.length; i++) {\n if (finalRange.length === 0 && i === 0) {\n finalRange.push(sortedRanges[i]);\n continue;\n }\n currentTopRange = finalRange[finalRange.length - 1];\n cStartDate = currentTopRange.from;\n cEndDate = currentTopRange.to;\n cCompareRange = sortedRanges[i];\n tStartDate = cCompareRange.from;\n tEndDate = cCompareRange.to;\n if ((cStartDate.getTime() === tStartDate.getTime() && cEndDate.getTime() >= tEndDate.getTime())\n || (cStartDate.getTime() < tStartDate.getTime() && cEndDate.getTime() >= tEndDate.getTime())) {\n continue;\n }\n /* eslint-disable-next-line */\n else if ((cStartDate.getTime() <= tStartDate.getTime() && cEndDate.getTime() >= tStartDate.getTime() && cEndDate.getTime() < tEndDate.getTime())\n || (cEndDate.getTime() < tStartDate.getTime() && this.checkStartDate(cEndDate).getTime() === tStartDate.getTime())) {\n currentTopRange.to = tEndDate;\n }\n else if (cEndDate.getTime() < tStartDate.getTime() && this.checkStartDate(cEndDate).getTime() !== tStartDate.getTime()) {\n finalRange.push(sortedRanges[i]);\n }\n }\n if (isSplit) {\n finalRange = this.splitRangeCollection(finalRange);\n }\n return finalRange;\n };\n /**\n * Sort resource child records based on start date\n *\n * @param {IGanttData} resourceTask .\n * @returns {IGanttData} .\n * @private\n */\n TaskProcessor.prototype.setSortedChildTasks = function (resourceTask) {\n var sortedRecords = [];\n sortedRecords = new DataManager(resourceTask.childRecords).executeLocal(new Query()\n .sortBy(this.parent.taskFields.startDate, 'Ascending'));\n return sortedRecords;\n };\n TaskProcessor.prototype.splitRangeCollection = function (rangeCollection, fromField, toField) {\n var splitArray = [];\n var unit;\n if (this.parent.timelineModule.isSingleTier) {\n unit = this.parent.timelineModule.bottomTier !== 'None' ?\n this.parent.timelineModule.bottomTier : this.parent.timelineModule.topTier;\n }\n else {\n unit = this.parent.timelineModule.bottomTier;\n }\n if (unit === 'Week' || unit === 'Month' || unit === 'Year') {\n splitArray = rangeCollection;\n }\n else if (unit === 'Day') {\n splitArray = this.getRangeWithWeek(rangeCollection, fromField, toField);\n }\n else {\n if (this.parent.workingTimeRanges[0].from === 0 && this.parent.workingTimeRanges[0].to === 86400) {\n splitArray = this.getRangeWithWeek(rangeCollection, fromField, toField);\n }\n else {\n splitArray = this.getRangeWithDay(rangeCollection, fromField, toField);\n }\n }\n return splitArray;\n };\n TaskProcessor.prototype.getRangeWithDay = function (ranges, fromField, toField) {\n var splitArray = [];\n for (var i = 0; i < ranges.length; i++) {\n // eslint-disable-next-line\n splitArray.push.apply(splitArray, this.splitRangeForDayMode(ranges[i], fromField, toField));\n }\n return splitArray;\n };\n TaskProcessor.prototype.splitRangeForDayMode = function (range, fromField, toField) {\n var fromString = fromField ? fromField : 'from';\n var toString = toField ? toField : 'to';\n var tempStart = new Date(range[fromString]);\n var end = new Date(range[toString]);\n var ranges = [];\n var rangeObject = {};\n if (tempStart.getTime() < end.getTime()) {\n do {\n var nStart = new Date(tempStart.getTime());\n var nEndDate = new Date(tempStart.getTime());\n var nextAvailDuration = 0;\n var sHour = this.parent.dataOperation.getSecondsInDecimal(tempStart);\n var startRangeIndex = -1;\n for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {\n var val = this.parent.workingTimeRanges[i];\n if (sHour >= val.from && sHour <= val.to) {\n startRangeIndex = i;\n break;\n }\n }\n if (startRangeIndex !== -1) {\n nextAvailDuration = Math.round(this.parent.workingTimeRanges[startRangeIndex].to - sHour);\n nEndDate.setSeconds(nEndDate.getSeconds() + nextAvailDuration);\n }\n var taskName = 'task';\n if (nEndDate.getTime() < end.getTime()) {\n rangeObject = {};\n if (range.task) {\n rangeObject[taskName] = extend([], range.task);\n }\n rangeObject[fromString] = nStart;\n rangeObject[toString] = nEndDate;\n rangeObject.isSplit = true;\n ranges.push(rangeObject);\n }\n else {\n rangeObject = {};\n if (range.task) {\n rangeObject[taskName] = extend([], range.task);\n }\n rangeObject[fromString] = nStart;\n rangeObject[toString] = end;\n rangeObject.isSplit = true;\n ranges.push(rangeObject);\n }\n tempStart = this.checkStartDate(nEndDate);\n } while (tempStart.getTime() < end.getTime());\n }\n else {\n ranges.push(range);\n }\n return ranges;\n };\n TaskProcessor.prototype.getRangeWithWeek = function (ranges, fromField, toField) {\n var splitArray = [];\n for (var i = 0; i < ranges.length; i++) {\n // eslint-disable-next-line\n splitArray.push.apply(splitArray, this.splitRangeForWeekMode(ranges[i], fromField, toField));\n }\n return splitArray;\n };\n TaskProcessor.prototype.splitRangeForWeekMode = function (range, fromField, toField) {\n var from = fromField ? fromField : 'from';\n var to = toField ? toField : 'to';\n var start = new Date(range[from]);\n var tempStart = new Date(range[from]);\n var end = new Date(range[to]);\n var isInSplit = false;\n var ranges = [];\n var rangeObj = {};\n tempStart.setDate(tempStart.getDate() + 1);\n if (tempStart.getTime() < end.getTime()) {\n do {\n if (this.parent.dataOperation.isOnHolidayOrWeekEnd(tempStart, null)) {\n var tempEndDate = new Date(tempStart.getTime());\n tempEndDate.setDate(tempStart.getDate() - 1);\n this.setTime(this.parent.defaultEndTime, tempEndDate);\n rangeObj = {};\n rangeObj[from] = start;\n rangeObj.isSplit = true;\n rangeObj[to] = tempEndDate;\n if (range.task) {\n rangeObj.task = extend([], range.task, true);\n }\n if (start.getTime() !== tempEndDate.getTime()) {\n ranges.push(rangeObj);\n }\n start = this.checkStartDate(tempEndDate);\n tempStart = new Date(start.getTime());\n isInSplit = true;\n }\n else {\n tempStart.setDate(tempStart.getDate() + 1);\n }\n } while (tempStart.getTime() < end.getTime());\n if (isInSplit) {\n if (start.getTime() !== end.getTime()) {\n rangeObj = {};\n if (range.task) {\n rangeObj.task = extend([], range.task, true);\n }\n rangeObj[from] = start;\n rangeObj[to] = end;\n rangeObj.isSplit = true;\n ranges.push(rangeObj);\n }\n }\n else {\n ranges.push(range);\n }\n }\n else {\n ranges.push(range);\n }\n return ranges;\n };\n /**\n * Update all gantt data collection width, progress width and left value\n *\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateGanttData = function () {\n var flatData = this.parent.flatData;\n var length = flatData.length;\n for (var i = 0; i < length; i++) {\n var data = flatData[i];\n this.updateTaskLeftWidth(data);\n }\n };\n /**\n * Update all gantt data collection width, progress width and left value\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @public\n */\n TaskProcessor.prototype.updateTaskLeftWidth = function (data) {\n var task = data.ganttProperties;\n if (!data.hasChildRecords || !this.parent.autoCalculateDateScheduling) {\n this.updateWidthLeft(data);\n }\n this.parent.setRecordValue('baselineLeft', this.calculateBaselineLeft(task), task, true);\n this.parent.setRecordValue('baselineWidth', this.calculateBaselineWidth(task), task, true);\n var childData = [];\n var parentItem;\n if (data.parentItem) {\n parentItem = this.parent.getParentTask(data.parentItem);\n childData = parentItem.childRecords;\n }\n if (parentItem && childData.indexOf(data) === childData.length - 1 && !data.hasChildRecords && this.parent.enableValidation) {\n if (this.parent.autoCalculateDateScheduling || this.parent.viewType === \"ResourceView\") {\n this.updateParentItems(parentItem);\n }\n if (!this.parent.autoCalculateDateScheduling) {\n this.updateWidthLeft(parentItem);\n }\n }\n else if (parentItem && !this.parent.enableValidation) {\n this.updateWidthLeft(parentItem);\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.reUpdateGanttDataPosition = function () {\n var flatData = this.parent.flatData;\n var length = flatData.length;\n for (var i = 0; i < length; i++) {\n var data = flatData[i];\n var task = data.ganttProperties;\n this.updateWidthLeft(data);\n if (this.parent.taskMode !== 'Auto' && data.hasChildRecords) {\n this.updateAutoWidthLeft(data);\n }\n this.parent.setRecordValue('baselineLeft', this.calculateBaselineLeft(task), task, true);\n this.parent.setRecordValue('baselineWidth', this.calculateBaselineWidth(task), task, true);\n this.parent.dataOperation.updateTaskData(data);\n }\n };\n /**\n * method to update left, width, progress width in record\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateWidthLeft = function (data) {\n var ganttRecord = data.ganttProperties;\n // task endDate may be changed in segment calculation so this must be calculated first.\n // task width calculating was based on endDate\n if (!isNullOrUndefined(ganttRecord.segments) && ganttRecord.segments.length > 0) {\n var segments = ganttRecord.segments;\n var fixedWidth = true;\n var totalTaskWidth = this.splitTasksDuration(segments) * ((this.parent.timelineModule.bottomTier === \"Hour\" || this.parent.timelineModule.bottomTier === \"Minutes\") ? this.parent.timelineSettings.timelineUnitSize : this.parent.perDayWidth);\n ;\n var totalProgressWidth = this.parent.dataOperation.getProgressWidth(totalTaskWidth, ganttRecord.progress);\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (i === 0 && !isNullOrUndefined(ganttRecord.startDate) &&\n segment.startDate.getTime() !== ganttRecord.startDate.getTime()) {\n segment.startDate = ganttRecord.startDate;\n var endDate = this.parent.dataOperation.getEndDate(segment.startDate, segment.duration, ganttRecord.durationUnit, ganttRecord, false);\n segment.endDate = this.parent.dataOperation.checkEndDate(endDate, ganttRecord, false);\n this.parent.chartRowsModule.incrementSegments(segments, 0, data);\n }\n segment.width = this.getSplitTaskWidth(segment.startDate, segment.duration, data);\n segment.showProgress = false;\n segment.progressWidth = -1;\n if (i !== 0) {\n var pStartDate = new Date(ganttRecord.startDate.getTime());\n segment.left = this.getSplitTaskLeft(segment.startDate, pStartDate);\n }\n if (totalProgressWidth > 0 && totalProgressWidth > segment.width) {\n totalProgressWidth = totalProgressWidth - segment.width;\n segment.progressWidth = segment.width;\n segment.showProgress = false;\n }\n else if (fixedWidth) {\n segment.progressWidth = totalProgressWidth;\n segment.showProgress = true;\n totalProgressWidth = totalProgressWidth - segment.width;\n fixedWidth = false;\n }\n }\n this.parent.setRecordValue('segments', ganttRecord.segments, ganttRecord, true);\n this.parent.dataOperation.updateMappingData(data, 'segments');\n }\n this.parent.setRecordValue('width', this.parent.dataOperation.calculateWidth(data), ganttRecord, true);\n this.parent.setRecordValue('left', this.parent.dataOperation.calculateLeft(ganttRecord), ganttRecord, true);\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth((ganttRecord.isAutoSchedule || !data.hasChildRecords ? ganttRecord.width : ganttRecord.autoWidth), ganttRecord.progress), ganttRecord, true);\n };\n /**\n * method to update left, width, progress width in record\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateAutoWidthLeft = function (data) {\n var ganttRecord = data.ganttProperties;\n this.parent.setRecordValue('autoWidth', this.calculateWidth(data, true), ganttRecord, true);\n this.parent.setRecordValue('autoLeft', this.calculateLeft(ganttRecord, true), ganttRecord, true);\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth((ganttRecord.isAutoSchedule ||\n !data.hasChildRecords ? ganttRecord.width : ganttRecord.autoWidth), ganttRecord.progress), ganttRecord, true);\n };\n /**\n * To calculate parent progress value\n *\n * @param {IGanttData} childGanttRecord .\n * @returns {object} .\n * @private\n */\n TaskProcessor.prototype.getParentProgress = function (childGanttRecord) {\n var durationInDay = 0;\n var progressValues = {};\n switch (childGanttRecord.ganttProperties.durationUnit) {\n case 'hour':\n durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 3600));\n break;\n case 'minute':\n durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 60));\n break;\n default:\n durationInDay = childGanttRecord.ganttProperties.duration;\n }\n if (childGanttRecord.hasChildRecords) {\n setValue('totalProgress', childGanttRecord.ganttProperties.totalProgress, progressValues);\n setValue('totalDuration', childGanttRecord.ganttProperties.totalDuration ? childGanttRecord.ganttProperties.totalDuration : 0, progressValues);\n }\n else {\n setValue('totalProgress', childGanttRecord.ganttProperties.progress * durationInDay, progressValues);\n setValue('totalDuration', durationInDay, progressValues);\n }\n return progressValues;\n };\n TaskProcessor.prototype.resetDependency = function (record) {\n var dependency = this.parent.taskFields.dependency;\n if (!isNullOrUndefined(dependency)) {\n var recordProp = record.ganttProperties;\n this.parent.setRecordValue('predecessor', [], recordProp, true);\n this.parent.setRecordValue('predecessorsName', null, recordProp, true);\n this.parent.setRecordValue('taskData.' + dependency, null, record);\n this.parent.setRecordValue(dependency, null, record);\n }\n };\n /**\n * @param {IParent | IGanttData} cloneParent .\n * @param {boolean} isParent .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateParentItems = function (cloneParent, isParent) {\n var parentData = isParent ? cloneParent : this.parent.getParentTask(cloneParent);\n var deleteUpdate = false;\n var ganttProp = parentData.ganttProperties;\n if (this.parent.autoCalculateDateScheduling || this.parent.viewType === \"ResourceView\") {\n if (parentData.childRecords.length > 0) {\n var previousStartDate = ganttProp.isAutoSchedule ? ganttProp.startDate : ganttProp.autoStartDate;\n var previousEndDate = ganttProp.isAutoSchedule ? ganttProp.endDate :\n ganttProp.autoEndDate;\n var childRecords = parentData.childRecords;\n var childLength = childRecords.length;\n var totalDuration = 0;\n var progressValues = {};\n var minStartDate = null;\n var maxEndDate = null;\n var milestoneCount = 0;\n var totalProgress = 0;\n var childCompletedWorks = 0;\n var childData = void 0;\n for (var count = 0; count < childLength; count++) {\n childData = childRecords[count];\n if (this.parent.isOnDelete && childData.isDelete) {\n if (childLength === 1 && this.parent.viewType === 'ProjectView') {\n deleteUpdate = true;\n }\n continue;\n }\n var startDate = this.getValidStartDate(childData.ganttProperties);\n if (parentData.hasChildRecords && !ganttProp.isAutoSchedule && !isNullOrUndefined(childData.ganttProperties.autoStartDate)) {\n startDate = childData.ganttProperties.autoStartDate;\n }\n var endDate = this.getValidEndDate(childData.ganttProperties);\n if (parentData.hasChildRecords && !ganttProp.isAutoSchedule && !isNullOrUndefined(childData.ganttProperties.autoEndDate)) {\n endDate = childData.ganttProperties.autoEndDate;\n }\n if (isNullOrUndefined(minStartDate)) {\n minStartDate = this.getDateFromFormat(startDate);\n }\n if (isNullOrUndefined(maxEndDate)) {\n maxEndDate = this.getDateFromFormat(endDate);\n }\n if (!isNullOrUndefined(endDate) && this.compareDates(endDate, maxEndDate) === 1) {\n maxEndDate = this.getDateFromFormat(endDate);\n }\n if (!isNullOrUndefined(startDate) && this.compareDates(startDate, minStartDate) === -1) {\n minStartDate = this.getDateFromFormat(startDate);\n }\n if (!childData.ganttProperties.isMilestone && isScheduledTask(childData.ganttProperties)) {\n progressValues = this.getParentProgress(childData);\n totalProgress += getValue('totalProgress', progressValues);\n if (childData[this.parent.taskFields.duration] < 1) {\n totalDuration += getValue('totalDuration', progressValues);\n totalDuration = Number(totalDuration.toFixed(4));\n }\n else {\n totalDuration += getValue('totalDuration', progressValues);\n }\n }\n else {\n milestoneCount++;\n }\n childCompletedWorks += childData.ganttProperties.work;\n }\n if (!deleteUpdate) {\n var taskCount = void 0;\n if (this.parent.isOnDelete && childData.isDelete) {\n taskCount = childLength - milestoneCount - 1;\n }\n else {\n taskCount = childLength - milestoneCount;\n }\n var parentProgress = (taskCount > 0 && totalDuration > 0) ? Number((totalProgress / totalDuration).toFixed(2)) : 0;\n var parentProp = parentData.ganttProperties;\n var milestone = (taskCount === 0) && minStartDate && maxEndDate &&\n minStartDate.getTime() === maxEndDate.getTime() ? true : false;\n if (this.compareDates(previousStartDate, minStartDate) !== 0) {\n this.parent.setRecordValue(ganttProp.isAutoSchedule ? 'startDate' : 'autoStartDate', minStartDate, parentData.ganttProperties, true);\n if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone && (parentData.hasChildRecords && parentData.ganttProperties.isAutoSchedule && this.parent.editModule.taskbarEditModule.taskbarEditedArgs.action !== \"TaskbarEditing\")) {\n this.parent.setRecordValue('startDate', minStartDate, parentData.ganttProperties, true);\n }\n }\n if (this.compareDates(previousEndDate, maxEndDate) !== 0) {\n this.parent.setRecordValue(ganttProp.isAutoSchedule ? 'endDate' : 'autoEndDate', maxEndDate, parentData.ganttProperties, true);\n if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone && (parentData.hasChildRecords && parentData.ganttProperties.isAutoSchedule && this.parent.editModule.taskbarEditModule.taskbarEditedArgs.action !== \"TaskbarEditing\")) {\n this.parent.setRecordValue('endDate', maxEndDate, parentData.ganttProperties, true);\n }\n }\n this.parent.setRecordValue('isMilestone', milestone, parentProp, true);\n if (!isNullOrUndefined(this.parent.taskFields.milestone)) {\n this.updateMappingData(parentData, 'milestone');\n }\n if (parentProp.isAutoSchedule) {\n this.calculateDuration(parentData);\n }\n this.updateWorkWithDuration(parentData);\n var parentWork = parentProp.work;\n parentWork = this.parent.isOnEdit ? parentWork : (parentWork + childCompletedWorks);\n this.parent.setRecordValue('work', parentWork, parentProp, true);\n this.parent.setRecordValue('taskType', 'FixedDuration', parentProp, true);\n if (!isNullOrUndefined(this.parent.taskFields.type)) {\n this.updateMappingData(parentData, 'type');\n }\n this.parent.setRecordValue('progress', Math.floor(parentProgress), parentProp, true);\n this.parent.setRecordValue('totalProgress', totalProgress, parentProp, true);\n this.parent.setRecordValue('totalDuration', totalDuration, parentProp, true);\n if (!parentProp.isAutoSchedule) {\n this.parent.setRecordValue('autoDuration', this.calculateAutoDuration(parentProp), parentProp, true);\n this.updateAutoWidthLeft(parentData);\n }\n if (!this.parent.allowParentDependency) {\n this.resetDependency(parentData);\n }\n this.updateWidthLeft(parentData);\n this.updateTaskData(parentData);\n }\n }\n }\n else {\n parentData.ganttProperties.endDate = parentData.taskData[this.parent.taskFields.endDate];\n }\n if (deleteUpdate && parentData.childRecords.length === 1 && parentData.ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, parentData.ganttProperties, true);\n this.updateWidthLeft(parentData);\n this.updateTaskData(parentData);\n }\n var parentItem = this.parent.getParentTask(parentData.parentItem);\n if (parentItem) {\n if (this.parent.autoCalculateDateScheduling || this.parent.viewType === \"ResourceView\") {\n this.updateParentItems(parentItem);\n }\n }\n deleteUpdate = false;\n };\n return TaskProcessor;\n}(DateProcessor));\nexport { TaskProcessor };\n","import { formatUnit, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * To handle scroll event on chart and from TreeGrid\n *\n * @hidden\n */\nvar ChartScroll = /** @class */ (function () {\n /**\n * Constructor for the scrolling.\n *\n * @param {Gantt} parent .\n * @hidden\n */\n function ChartScroll(parent) {\n this.previousScroll = { top: 0, left: 0 };\n this.parent = parent;\n this.element = this.parent.ganttChartModule.scrollElement;\n this.addEventListeners();\n }\n /**\n * Bind event\n *\n * @returns {void} .\n */\n ChartScroll.prototype.addEventListeners = function () {\n this.parent.on('grid-scroll', this.gridScrollHandler, this);\n EventHandler.add(this.element, 'scroll', this.onScroll, this);\n this.parent.treeGrid.grid.on('showGanttShimmer', this.updateShimmer, this);\n this.parent.treeGrid.grid.on('removeGanttShimmer', this.removeShimmer, this);\n };\n /**\n * Unbind events\n *\n * @returns {void} .\n */\n ChartScroll.prototype.removeEventListeners = function () {\n EventHandler.remove(this.element, 'scroll', this.onScroll);\n this.parent.off('grid-scroll', this.gridScrollHandler);\n this.parent.treeGrid.grid.off('showGanttShimmer', this.updateShimmer);\n this.parent.treeGrid.grid.off('removeGanttShimmer', this.removeShimmer);\n };\n /**\n *\n * @param {object} args .\n * @returns {void} .\n */\n ChartScroll.prototype.gridScrollHandler = function (args) {\n this.element.scrollTop = getValue('top', args);\n this.isFromTreeGrid = true;\n };\n /**\n * Method to update vertical grid line, holiday, event markers and weekend container's top position on scroll action\n *\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.updateTopPosition = function () {\n var content = this.parent.treeGrid.element.querySelector('.e-content');\n var contentScrollTop = content.scrollTop;\n var scrollTop;\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var top_1 = this.parent.virtualScrollModule.getTopPosition();\n scrollTop = contentScrollTop - top_1;\n }\n else {\n scrollTop = contentScrollTop;\n }\n if (!isNullOrUndefined(this.parent.dayMarkersModule)) {\n var holidayContainer = getValue('nonworkingDayRender.holidayContainer', this.parent.dayMarkersModule);\n var weekendContainer = getValue('nonworkingDayRender.weekendContainer', this.parent.dayMarkersModule);\n var eventMarkersContainer = getValue('eventMarkerRender.eventMarkersContainer', this.parent.dayMarkersModule);\n if (holidayContainer) {\n holidayContainer.style.top = formatUnit(scrollTop);\n }\n if (weekendContainer) {\n weekendContainer.style.top = formatUnit(scrollTop);\n }\n if (eventMarkersContainer) {\n eventMarkersContainer.style.top = formatUnit(scrollTop);\n }\n }\n if (this.parent.chartVerticalLineContainer) {\n this.parent.chartVerticalLineContainer.style.top = formatUnit(scrollTop);\n }\n };\n ChartScroll.prototype.removeShimmer = function () {\n var parent = this.parent;\n setTimeout(function () {\n parent.hideMaskRow();\n if (parent.viewType === 'ResourceView' && !parent.allowTaskbarOverlap && parent.showOverAllocation) {\n for (var i = 0; i < parent.currentViewData.length; i++) {\n var tr = parent.chartRowsModule.ganttChartTableBody.childNodes[i];\n if (tr['style'].display !== 'none' && parent.currentViewData[i].hasChildRecords && !parent.currentViewData[i].expanded) {\n parent.treeGrid.getRowByIndex(i)['style'].height = tr['style'].height;\n }\n }\n parent.contentHeight = parent.enableRtl ? parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = parent.contentHeight + 'px';\n }\n }, 0);\n };\n ChartScroll.prototype.updateShimmer = function () {\n var parent = this.parent;\n setTimeout(function () {\n parent.showMaskRow();\n }, 0);\n };\n ChartScroll.prototype.updateSpinner = function () {\n var parent = this.parent;\n this.parent.showSpinner();\n window.clearTimeout(this.isScrolling);\n this.isScrolling = setTimeout(function () {\n parent.hideSpinner();\n }, 200);\n };\n /**\n * Scroll event handler\n *\n * @returns {void} .\n */\n ChartScroll.prototype.onScroll = function () {\n var scrollArgs = {};\n if (this.element.scrollTop !== this.previousScroll.top) {\n // eslint-disable-next-line\n !this.isFromTreeGrid ? this.parent.notify('chartScroll', { top: this.element.scrollTop }) : (this.isFromTreeGrid = false);\n scrollArgs.previousScrollTop = this.previousScroll.top;\n this.previousScroll.top = this.element.scrollTop;\n scrollArgs.scrollTop = this.element.scrollTop;\n scrollArgs.scrollDirection = 'Vertical';\n scrollArgs.action = 'VerticalScroll';\n this.updateTopPosition();\n }\n if (this.element.scrollLeft !== this.previousScroll.left) {\n this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;\n scrollArgs.previousScrollLeft = this.previousScroll.left;\n this.previousScroll.left = this.element.scrollLeft;\n scrollArgs.scrollLeft = this.element.scrollLeft;\n scrollArgs.scrollDirection = 'Horizontal';\n scrollArgs.action = 'HorizontalScroll';\n }\n if ((scrollArgs.scrollDirection !== 'Horizontal' && !isNullOrUndefined(scrollArgs.scrollDirection)) && this.parent.enableVirtualization === true && (this.parent.isToolBarClick\n || isNullOrUndefined(this.parent.isToolBarClick))) {\n this.parent.isVirtualScroll = true;\n if (this.parent.showIndicator || isNullOrUndefined(this.parent.showIndicator)) {\n if (!this.parent.enableVirtualMaskRow && this.parent.enableVirtualization && this.parent.loadingIndicator.indicatorType === 'Spinner') {\n this.updateSpinner();\n }\n }\n }\n this.parent.isToolBarClick = true;\n scrollArgs.requestType = 'scroll';\n this.parent.trigger('actionComplete', scrollArgs);\n };\n /**\n * To set height for chart scroll container\n *\n * @param {string | number} height - To set height for scroll container in chart side\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.setHeight = function (height) {\n this.element.style.height = formatUnit(height);\n };\n /**\n * To set width for chart scroll container\n *\n * @param {string | number} width - To set width to scroll container\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.setWidth = function (width) {\n this.element.style.width = formatUnit(width);\n };\n /**\n * To set scroll top for chart scroll container\n *\n * @param {number} scrollTop - To set scroll top for scroll container\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.setScrollTop = function (scrollTop) {\n this.element.scrollTop = scrollTop;\n this.parent.treeGrid.element.querySelector('.e-content').scrollTop = scrollTop;\n };\n /**\n * To set scroll left for chart scroll container\n *\n * @param {number} scrollLeft - To set scroll left for scroll container\n * @param {number} leftSign - specifies left sign\n * @returns {void} .\n */\n ChartScroll.prototype.setScrollLeft = function (scrollLeft, leftSign) {\n if (leftSign) {\n scrollLeft = leftSign === -1 && this.parent.enableRtl ? -scrollLeft : scrollLeft;\n }\n this.element.scrollLeft = scrollLeft;\n this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;\n this.previousScroll.left = this.element.scrollLeft;\n };\n /**\n * Destroy scroll related elements and unbind the events\n *\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.destroy = function () {\n this.removeEventListeners();\n };\n return ChartScroll;\n}());\nexport { ChartScroll };\n","import { createElement } from '@syncfusion/ej2-base';\n/**\n * virtual Content renderer for Gantt\n */\nvar VirtualContentRenderer = /** @class */ (function () {\n function VirtualContentRenderer(parent) {\n this.parent = parent;\n }\n /**\n * To render a wrapper for chart body content when virtualization is enabled.\n *\n * @returns {void} .\n * @hidden\n */\n VirtualContentRenderer.prototype.renderWrapper = function () {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: 'position: absolute; transform: translate(0px, 0px);' });\n this.parent.ganttChartModule.scrollElement.appendChild(this.wrapper);\n this.virtualTrack = createElement('div', { className: 'e-virtualtrack', styles: 'position: relative; pointer-events: none; width: 100%;' });\n this.parent.ganttChartModule.scrollElement.appendChild(this.virtualTrack);\n this.wrapper.appendChild(this.parent.ganttChartModule.chartBodyContent);\n };\n /**\n * To append child elements for wrappered element when virtualization is enabled.\n *\n * @param {HTMLElement} element .\n * @returns {void} .\n * @hidden\n */\n VirtualContentRenderer.prototype.appendChildElements = function (element) {\n this.wrapper.appendChild(element);\n };\n /**\n * To adjust gantt content table's style when virtualization is enabled\n *\n * @returns {void} .\n * @hidden\n */\n VirtualContentRenderer.prototype.adjustTable = function () {\n var content = this.parent.treeGrid.getContent().querySelector('.e-content').querySelector('.e-virtualtable');\n this.parent.ganttChartModule.virtualRender.wrapper.style.transform = content.style.transform;\n };\n return VirtualContentRenderer;\n}());\nexport { VirtualContentRenderer };\n","import { createElement, formatUnit, EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, closest, addClass, removeClass, getValue, setValue } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { ChartScroll } from '../actions/chart-scroll';\nimport { click } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '../renderer/virtual-content-render';\n/**\n * module to render gantt chart - project view\n */\nvar GanttChart = /** @class */ (function () {\n function GanttChart(parent) {\n this.isExpandCollapseFromChart = false;\n this.isExpandAll = false;\n this.isGanttElement = false;\n this.parent = parent;\n this.chartTimelineContainer = null;\n this.rangeViewContainer =\n createElement('div', { className: cls.rangeContainer });\n this.rangeViewContainer.setAttribute(\"role\", \"RangeContainer\");\n this.virtualRender = new VirtualContentRenderer(this.parent);\n this.addEventListener();\n }\n GanttChart.prototype.addEventListener = function () {\n this.parent.on('renderPanels', this.renderChartContainer, this);\n this.parent.on('recordsUpdated', this.renderChartElements, this);\n this.parent.on('dataReady', this.renderInitialContents, this);\n this.parent.on('tree-grid-created', this.renderChartContents, this);\n this.parent.on('destroy', this.destroy, this);\n };\n GanttChart.prototype.renderChartContents = function () {\n this.parent.notify('refreshDayMarkers', {});\n this.wireEvents();\n };\n /**\n * Method to render top level containers in Gantt chart\n *\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderChartContainer = function () {\n this.chartElement = createElement('div', { id: this.parent.element.id + 'GanttChart', className: cls.ganttChart });\n this.parent.chartPane.appendChild(this.chartElement);\n this.renderTimelineContainer();\n this.renderBodyContainers();\n // render top level div header and content\n // Get timeline header from timeline class file and append to header div\n // render content div\n // Render scroll able div\n // Render container for all element like, table, weekend and holidays\n // Get rows element from rows renderer class\n // Get label related info label renderer class\n // Get baseline from baseline renderer class\n // Get weekend elements from weekend-holidays renderer class\n };\n /**\n * method to render timeline, holidays, weekends at load time\n *\n * @returns {void} .\n */\n GanttChart.prototype.renderInitialContents = function () {\n this.parent.timelineModule.createTimelineSeries();\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderOverAllocationContainer = function () {\n for (var i = 0; i < this.parent.flatData.length; i++) {\n var data = this.parent.flatData[i];\n if (data.childRecords.length > 0) {\n this.parent.dataOperation.updateOverlappingValues(data);\n }\n }\n var rangeContainer = this.parent.element.querySelector('.' + cls.rangeContainer);\n if (rangeContainer) {\n rangeContainer.innerHTML = '';\n }\n if (this.parent.treeGrid.grid.filterSettings.columns.length === 0) {\n this.renderRangeContainer(this.parent.currentViewData);\n }\n };\n GanttChart.prototype.renderChartElements = function () {\n if (this.parent.isFromOnPropertyChange) {\n this.rangeViewContainer.innerHTML = '';\n this.parent.updateProjectDates(this.parent.cloneProjectStartDate, this.parent.cloneProjectEndDate, this.parent.isTimelineRoundOff);\n this.parent.isFromOnPropertyChange = false;\n }\n else {\n this.parent.chartRowsModule.renderChartRows();\n if (this.parent.predecessorModule && this.parent.taskFields.dependency) {\n this.parent.connectorLineIds = [];\n this.parent.updatedConnectorLineCollection = [];\n this.parent.predecessorModule.createConnectorLinesCollection();\n }\n this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);\n for (var i = 0; i < this.parent.chartRowsModule.ganttChartTableBody.children.length; i++) {\n if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4]) {\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[2].setAttribute('tabindex', '-1');\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4].setAttribute('tabindex', '-1');\n }\n else {\n if (this.parent.viewType === 'ProjectView') {\n if (!isNullOrUndefined(this.parent.chartRowsModule.ganttChartTableBody.children[parseInt(i.toString(), 10)].children[0].children[1].children[1])) {\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');\n }\n }\n else if (this.parent.chartRowsModule.ganttChartTableBody.children[parseInt(i.toString(), 10)].children[0].children[1].children[0]) {\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0].setAttribute('tabindex', '-1');\n }\n }\n }\n if (this.parent.enableCriticalPath) {\n var crtiticalModule = this.parent.criticalPathModule;\n this.parent.criticalPathModule.criticalConnectorLine(crtiticalModule.criticalPathCollection, crtiticalModule.detailPredecessorCollection, this.parent.enableCriticalPath, crtiticalModule.predecessorCollectionTaskIds);\n }\n if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {\n this.renderOverAllocationContainer();\n }\n }\n this.updateWidthAndHeight();\n this.parent.notify('selectRowByIndex', {});\n };\n /**\n * @param {IGanttData[]} records .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderRangeContainer = function (records) {\n var recordLength = records.length;\n var count;\n var ganttRecord;\n var rangeCollection;\n if (this.parent.treeGrid.grid.filterSettings.columns.length === 0) {\n for (count = 0; count < recordLength; count++) {\n ganttRecord = records[count];\n rangeCollection = ganttRecord.ganttProperties.workTimelineRanges;\n if (rangeCollection) {\n this.renderRange(rangeCollection, ganttRecord);\n }\n }\n }\n };\n GanttChart.prototype.getTopValue = function (currentRecord) {\n var updatedRecords = this.parent.getExpandedRecords(this.parent.currentViewData);\n var recordIndex = updatedRecords.indexOf(currentRecord);\n if (!currentRecord.expanded) {\n return (recordIndex * this.parent.rowHeight);\n }\n return ((recordIndex + 1) * this.parent.rowHeight);\n };\n /*get height for range bar*/\n GanttChart.prototype.getRangeHeight = function (data) {\n if (!data.expanded && data.hasChildRecords) {\n return (this.parent.rowHeight - Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight)));\n }\n return (data.childRecords.length * this.parent.rowHeight) -\n Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight));\n };\n GanttChart.prototype.renderRange = function (rangeCollection, currentRecord) {\n var topValue = 0;\n var rowIndex = this.parent.currentViewData.indexOf(currentRecord);\n if (!this.parent.allowTaskbarOverlap && this.parent.enableMultiTaskbar) {\n topValue = !currentRecord.expanded ? this.parent.getRowByIndex(rowIndex).offsetTop : this.parent.getRowByIndex(rowIndex).offsetTop + this.parent.rowHeight;\n }\n else {\n topValue = this.getTopValue(currentRecord);\n }\n var sameIDElement = this.rangeViewContainer.querySelector('.' + 'rangeContainer' + currentRecord.ganttProperties.rowUniqueID);\n if (sameIDElement) {\n sameIDElement.remove();\n }\n var parentDiv = createElement('div', {\n className: 'rangeContainer' + currentRecord.ganttProperties.rowUniqueID, styles: \"top:\" + topValue + \"px; position: absolute;\"\n });\n if (currentRecord.level === 0 && !currentRecord.expanded && isNullOrUndefined(currentRecord.parentItem)\n && !this.parent.enableMultiTaskbar) {\n return;\n }\n for (var i = 0; i < rangeCollection.length; i++) {\n var height = void 0;\n if (!this.parent.allowTaskbarOverlap && !currentRecord.expanded && this.parent.enableMultiTaskbar) {\n height = parseInt(this.parent.chartRowsModule.ganttChartTableBody.childNodes[rowIndex].style.height) -\n (this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight);\n }\n else {\n height = this.getRangeHeight(currentRecord);\n }\n var leftDiv = createElement('div', {\n className: cls.rangeChildContainer + ' ' + 'e-leftarc', styles: (this.parent.enableRtl ? 'right:' : 'left:') +\n ((this.parent.enableRtl ? rangeCollection[i].left + rangeCollection[i].width - 5 : rangeCollection[i].left) + \"px;\\n top: \" + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + \"px;\\n height: \" + (height + 1) + \"px; border-right: 0px\")\n });\n var rightDiv = createElement('div', {\n className: cls.rangeChildContainer + ' ' + 'e-rightarc',\n styles: (this.parent.enableRtl ? 'right:' : 'left:') + ((this.parent.enableRtl ? rangeCollection[i].left :\n rangeCollection[i].left + rangeCollection[i].width - 5) + \"px;\\n top: \" + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + \"px; height: \" + (height + 1) + \"px;\\n border-left: 0px\")\n });\n parentDiv.appendChild(leftDiv);\n parentDiv.appendChild(rightDiv);\n this.rangeViewContainer.appendChild(parentDiv);\n }\n this.parent.ganttChartModule.chartBodyContent.appendChild(this.rangeViewContainer);\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderTimelineContainer = function () {\n this.chartTimelineContainer =\n createElement('div', { className: cls.timelineHeaderContainer });\n if (this.parent.enableRtl) {\n this.chartTimelineContainer.style.borderLeftWidth = '1px';\n this.chartTimelineContainer.style.borderRightWidth = '0px';\n }\n this.chartTimelineContainer.setAttribute(\"role\", \"presentation\");\n this.chartElement.appendChild(this.chartTimelineContainer);\n };\n /**\n * initiate chart container\n *\n * @returns {void} .\n */\n GanttChart.prototype.renderBodyContainers = function () {\n this.chartBodyContainer = createElement('div', { className: cls.chartBodyContainer });\n this.chartElement.appendChild(this.chartBodyContainer);\n this.scrollElement = createElement('div', {\n className: cls.chartScrollElement + ' ' + cls.scrollContent, styles: 'position:relative;'\n });\n this.chartBodyContainer.appendChild(this.scrollElement);\n this.chartBodyContent = createElement('div', { className: cls.chartBodyContent, styles: 'position:relative; overflow:hidden ' });\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n this.parent.ganttChartModule.virtualRender.renderWrapper();\n }\n else {\n this.scrollElement.appendChild(this.chartBodyContent);\n }\n // this.parent.chartRowsModule.createChartTable();\n this.scrollObject = new ChartScroll(this.parent);\n //this.scrollObject.setWidth(this.chartProperties.width);\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n this.scrollObject.\n setHeight(this.parent.ganttHeight - this.chartTimelineContainer.offsetHeight - toolbarHeight);\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.updateWidthAndHeight = function () {\n //empty row height\n var emptydivHeight = 36;\n var emptyHeight = this.parent.contentHeight === 0 ? this.parent.flatData.length > 1 ? emptydivHeight : 0 : this.parent.contentHeight;\n var contentElement = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0];\n if (emptyHeight >= contentElement['offsetHeight'] || this.parent.height === 'auto') {\n this.chartBodyContent.style.height = formatUnit(emptyHeight);\n }\n else {\n var scrollHeight = this.parent.element.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];\n if (contentElement['offsetHeight'] >= scrollHeight) {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] - 17 + 'px';\n }\n else {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';\n }\n } //let element: HTMLElement = this.chartTimelineContainer.querySelector('.' + cls.timelineHeaderTableContainer);\n this.chartBodyContent.style.width = formatUnit(this.parent.timelineModule.totalTimelineWidth);\n this.setVirtualHeight();\n this.parent.notify('updateHeight', {});\n this.parent.updateGridLineContainerHeight();\n this.updateLastRowBottomWidth();\n };\n GanttChart.prototype.setVirtualHeight = function () {\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var wrapper = getValue('virtualTrack', this.parent.ganttChartModule.virtualRender);\n wrapper.style.height = this.parent.treeGrid.element.getElementsByClassName('e-virtualtrack')[0].style.height;\n var wrapper1 = getValue('wrapper', this.parent.ganttChartModule.virtualRender);\n var treegridVirtualHeight = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.transform;\n wrapper1.style.transform = treegridVirtualHeight;\n }\n };\n /**\n * Method to update bottom border for chart rows\n *\n * @returns {void} .\n */\n GanttChart.prototype.updateLastRowBottomWidth = function () {\n if (this.parent.currentViewData.length > 0 && this.parent.height !== 'auto') {\n var expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.currentViewData : this.parent.getExpandedRecords(this.parent.currentViewData);\n var lastExpandedRow = expandedRecords[expandedRecords.length - 1];\n var lastExpandedRowIndex = this.parent.currentViewData.indexOf(lastExpandedRow);\n var lastRow = this.parent.getRowByIndex(lastExpandedRowIndex);\n var table = this.parent.chartRowsModule.ganttChartTableBody;\n if (table.querySelectorAll('.e-chart-row-cell.e-chart-row-border.e-lastrow')) {\n removeClass(table.querySelectorAll('.e-chart-row-cell.e-chart-row-border.e-lastrow'), 'e-lastrow');\n }\n if (this.chartBodyContent.clientHeight < this.chartBodyContainer.clientHeight) {\n if (lastRow) {\n addClass(lastRow.querySelectorAll('td'), 'e-lastrow');\n var emptydivHeight = 36;\n var emptyHeight = this.parent.contentHeight === 0 ? this.parent.flatData.length > 1 ? emptydivHeight : 0 : this.parent.contentHeight;\n var contentElement = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0];\n if (emptyHeight >= contentElement['offsetHeight']) {\n this.chartBodyContent.style.height = formatUnit(emptyHeight);\n }\n else {\n var scrollHeight = this.parent.element.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];\n if (contentElement['offsetHeight'] >= scrollHeight) {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] - 17 + 'px';\n }\n else {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';\n }\n }\n }\n }\n }\n };\n GanttChart.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('renderPanels', this.renderChartContainer);\n this.parent.off('recordsUpdated', this.renderChartElements);\n this.parent.off('dataReady', this.renderInitialContents);\n this.parent.off('tree-grid-created', this.renderChartContents);\n this.parent.off('destroy', this.destroy);\n };\n /**\n * Click event handler in chart side\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n */\n GanttChart.prototype.ganttChartMouseDown = function (e) {\n if (e.which !== 3 && this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseDown', e);\n this.parent.element.tabIndex = 0;\n }\n if (this.parent.editSettings.allowEditing && this.parent.treeGrid.element.getElementsByClassName('e-editedbatchcell').length > 0) {\n this.parent.treeGrid.endEdit();\n }\n };\n GanttChart.prototype.ganttChartMouseClick = function (e) {\n if (this.parent.autoFocusTasks) {\n this.scrollToTarget(e); /** Scroll to task */\n }\n this.parent.notify('chartMouseClick', e);\n };\n GanttChart.prototype.ganttChartMouseUp = function (e) {\n if (this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseUp', e);\n }\n };\n /**\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n */\n GanttChart.prototype.scrollToTarget = function (e) {\n var row = closest(e.target, 'tr');\n if (row && this.parent.element.contains(row) &&\n (this.parent.element.querySelectorAll('.e-chart-rows-container')[0].contains(e.target) ||\n this.parent.element.querySelectorAll('.e-gridcontent')[0].contains(e.target)) &&\n this.parent.currentViewData.length > 0) {\n var rowIndex = getValue('rowIndex', closest(e.target, 'tr'));\n var dateObject = this.parent.currentViewData[rowIndex].ganttProperties.startDate;\n if (!isNullOrUndefined(dateObject)) {\n var left = this.parent.dataOperation.getTaskLeft(dateObject, false);\n if (this.parent.autoFocusTasks) {\n this.updateScrollLeft(left);\n }\n }\n }\n };\n /**\n * To focus selected task in chart side\n *\n * @param {number} scrollLeft .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.updateScrollLeft = function (scrollLeft) {\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n scrollLeft = this.scrollElement.scrollWidth <= scrollLeft ? this.scrollElement.scrollWidth : scrollLeft;\n if ((this.scrollElement.offsetWidth + this.parent.ganttChartModule.scrollElement.scrollLeft) < scrollLeft\n || (this.scrollElement.scrollLeft > scrollLeft)) {\n this.scrollObject.setScrollLeft(scrollLeft - 50, this.parent.enableRtl ? -1 : 0);\n }\n // this.parent.ganttChartModule.scrollObject.updateLeftPosition();\n };\n /**\n * Method trigger while perform mouse up action.\n *\n * @param {PointerEvent} e .\n * @returns {void}\n * @private\n */\n GanttChart.prototype.mouseUp = function (e) {\n if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {\n this.parent.editModule.taskbarEditModule.removeFalseLine(false);\n }\n if (this.parent.allowRowDragAndDrop) {\n var ganttDragElemet = this.parent.element.querySelector('.e-ganttdrag');\n if (ganttDragElemet) {\n ganttDragElemet.remove();\n }\n }\n if (!this.isGanttElement) {\n this.parent.notify('chartMouseUp', e);\n }\n this.isGanttElement = false;\n };\n /**\n * Method trigger while perform mouse up action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.documentMouseUp = function (e) {\n this.isGanttElement = true;\n if (e.target.classList.contains('e-treegridexpand') ||\n e.target.classList.contains('e-treegridcollapse')) {\n if (getValue('isEditCollapse', this.parent.treeGrid) === true) {\n setValue('isEditCollapse', false, this.parent.treeGrid);\n }\n }\n if (this.parent.allowRowDragAndDrop) {\n var ganttDragElemet = this.parent.element.querySelector('.e-ganttdrag');\n if (ganttDragElemet) {\n ganttDragElemet.remove();\n }\n }\n if (this.parent.isDestroyed || e.which === 3) {\n return;\n }\n var resizeCheck = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');\n if (!isNullOrUndefined(resizeCheck)) {\n resizeCheck.remove();\n }\n var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar');\n if (!isNullOrUndefined(Check)) {\n var clonetbody = Check.parentElement;\n var cloneTable = clonetbody.parentElement;\n cloneTable.remove();\n }\n var isTaskbarEdited = false;\n if (this.parent.editSettings.allowTaskbarEditing &&\n getValue('editModule.taskbarEditModule.isMouseDragged', this.parent) &&\n getValue('editModule.taskbarEditModule.taskBarEditAction', this.parent)) {\n isTaskbarEdited = true;\n }\n this.parent.notify('chartMouseUp', e);\n if (this.parent.showActiveElement) {\n this.parent.showIndicator = true;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n if (this.focusedElement && !e.target.classList.contains('e-split-bar')) {\n this.focusedElement.tabIndex = this.focusedElement.tabIndex === 0 ? -1 : this.focusedElement.tabIndex;\n removeClass([this.focusedElement], 'e-active-container');\n }\n }\n if (!isTaskbarEdited) {\n /** Expand/collapse action */\n var target = e.target;\n var isOnTaskbarElement = e.target.classList.contains(cls.taskBarMainContainer)\n || closest(e.target, '.' + cls.taskBarMainContainer);\n if (closest(target, '.e-gantt-parent-taskbar') && !this.parent.editSettings.allowEditing) {\n this.chartExpandCollapseRequest(e);\n }\n else if (!isOnTaskbarElement && this.parent.autoFocusTasks) {\n this.scrollToTarget(e); /** Scroll to task */\n }\n }\n if (this.parent.editModule && this.parent.editModule.taskbarEditModule) {\n this.parent.editModule.taskbarEditModule.removeFalseLine(true);\n }\n if (!isNullOrUndefined(this.parent.onTaskbarClick) && !isTaskbarEdited) {\n var target = e.target;\n var taskbarElement = closest(target, '.e-gantt-parent-taskbar,.e-gantt-child-taskbar,.e-gantt-milestone');\n if (taskbarElement) {\n this.onTaskbarClick(e, target, taskbarElement);\n }\n }\n };\n /**\n * This event triggered when click on taskbar element\n *\n * @param {PointerEvent | KeyboardEventArgs} e .\n * @param {EventTarget} target .\n * @param {Element} taskbarElement .\n * @returns {void}\n */\n GanttChart.prototype.onTaskbarClick = function (e, target, taskbarElement) {\n var chartRow = closest(target, 'tr');\n var rowIndex = getValue('rowIndex', chartRow);\n var data = this.getRecordByTarget(e);\n var args = {\n data: data,\n taskbarElement: taskbarElement,\n rowIndex: rowIndex,\n target: target\n };\n this.parent.trigger('onTaskbarClick', args);\n };\n /**\n * Method trigger while perform mouse leave action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.ganttChartLeave = function (e) {\n if (this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseLeave', e);\n }\n };\n /**\n * Method trigger while perform mouse move action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.ganttChartMove = function (e) {\n if (this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseMove', e);\n if (!isNullOrUndefined(this.parent.taskFields.dependency) && this.parent.connectorLineEditModule) {\n this.parent.connectorLineEditModule.updateConnectorLineEditElement(e);\n }\n }\n };\n /**\n * Method trigger while perform right click action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.contextClick = function (e) {\n if (this.parent.allowFiltering && this.parent.filterModule) {\n this.parent.filterModule.closeFilterOnContextClick(e.srcElement);\n }\n };\n /**\n * Method to trigger while perform mouse move on Gantt.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.mouseMoveHandler = function (e) {\n if (!isNullOrUndefined(this.parent.onMouseMove) &&\n (this.parent.flatData.length ||\n e.target.classList.contains('e-header-cell-label') ||\n e.target.classList.contains('e-headercell'))) {\n var target = e.target;\n var args = { originalEvent: e };\n var element = closest(target, '.e-chart-row-cell,.e-connector-line-container,' +\n '.e-event-markers,.e-header-cell-label,.e-rowcell,.e-headercell,.e-indicator-span');\n if (element) {\n var rowData = void 0;\n var rowElement = closest(target, '.e-rowcell,.e-chart-row-cell');\n var columnElement = closest(target, '.e-rowcell,.e-headercell');\n if (rowElement) {\n rowData = this.parent.ganttChartModule.getRecordByTarget(e);\n args.data = rowData;\n }\n if (columnElement) {\n var cellIndex = getValue('cellIndex', columnElement);\n args.column = this.parent.treeGrid.columns[cellIndex];\n }\n if (closest(target, '.e-indicator-span')) {\n var index = 0;\n var indicators = rowData.ganttProperties.indicators;\n if (indicators.length > 1) {\n for (index = 0; index < indicators.length; index++) {\n if (indicators[index].name === (element.innerText).trim()) {\n break;\n }\n }\n }\n args.indicator = indicators[index];\n }\n if (closest(target, '.e-connector-line-container')) {\n var obj = {};\n obj.target = element;\n args.predecessor = this.parent.tooltipModule.getPredecessorTooltipData(obj);\n }\n if (closest(target, '.e-event-markers')) {\n var obj = {};\n obj.target = element;\n args.eventMarkers = this.parent.tooltipModule.getMarkerTooltipData(obj);\n }\n if (target.classList.contains('e-header-cell-label')) {\n args.date = new Date(target.dataset.content);\n }\n }\n this.parent.trigger('onMouseMove', args);\n }\n };\n /**\n * Double click handler for chart\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n */\n GanttChart.prototype.doubleClickHandler = function (e) {\n this.parent.notify('chartDblClick', e);\n var target = e.target;\n var row = closest(target, 'tr');\n var rowIndex = getValue('rowIndex', row);\n var rowData = this.parent.ganttChartModule.getRecordByTarget(e);\n var args = {\n row: row,\n rowData: rowData,\n rowIndex: rowIndex,\n target: target\n };\n this.recordDoubleClick(args);\n };\n /**\n * To trigger record double click event.\n *\n * @param {RecordDoubleClickEventArgs} args .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.recordDoubleClick = function (args) {\n this.parent.trigger('recordDoubleClick', args);\n };\n /**\n * @param {PointerEvent | KeyboardEventArgs} e .\n * @returns {IGanttData} .\n * @private\n */\n GanttChart.prototype.getRecordByTarget = function (e) {\n var ganttData;\n var row = closest(e.target, 'div.' + cls.taskBarMainContainer);\n if (!isNullOrUndefined(row)) {\n var id = row.getAttribute('rowUniqueId');\n ganttData = this.parent.getRecordByID(id);\n }\n else {\n row = closest(e.target, 'tr');\n if (row) {\n var rowIndex = getValue('rowIndex', closest(e.target, 'tr'));\n ganttData = this.parent.currentViewData[rowIndex];\n }\n }\n return ganttData;\n };\n /**\n * To get gantt chart row elements\n *\n * @returns {NodeListOf} .\n * @private\n */\n GanttChart.prototype.getChartRows = function () {\n if (document.getElementById(this.parent.element.id + 'GanttTaskTableBody') != null) {\n return document.getElementById(this.parent.element.id + 'GanttTaskTableBody').querySelectorAll('.e-chart-row');\n }\n else {\n return null;\n }\n };\n /**\n * Expand Collapse operations from gantt chart side\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.chartExpandCollapseRequest = function (e) {\n if (this.parent.enableMultiTaskbar) {\n return;\n }\n var target = e.target;\n var parentElement = closest(target, '.e-gantt-parent-taskbar');\n var record = this.getRecordByTarget(e);\n var chartRow = closest(target, 'tr');\n var rowIndex = getValue('rowIndex', chartRow);\n var gridRow = this.parent.treeGrid.getRows()[rowIndex];\n var args = { data: record, gridRow: gridRow, chartRow: chartRow, cancel: false };\n this.isExpandCollapseFromChart = true;\n if (parentElement.classList.contains('e-row-expand')) {\n this.collapseGanttRow(args);\n }\n else if (parentElement.classList.contains('e-row-collapse')) {\n this.expandGanttRow(args);\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.reRenderConnectorLines = function () {\n this.parent.connectorLineModule.dependencyViewContainer.innerHTML = '';\n this.parent.connectorLineIds = [];\n this.parent.updatedConnectorLineCollection = [];\n this.parent.predecessorModule.createConnectorLinesCollection();\n this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);\n if (this.parent.enableCriticalPath && this.parent.criticalPathModule) {\n var criticalModule = this.parent.criticalPathModule;\n criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n };\n /**\n * To collapse gantt rows\n *\n * @param {object} args .\n * @param {boolean} isCancel .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.collapseGanttRow = function (args, isCancel) {\n var _this = this;\n if (isCancel) {\n this.collapsedGanttRow(args);\n }\n else {\n this.parent.trigger('collapsing', args, function (arg) {\n if (_this.isExpandCollapseFromChart && !getValue('cancel', arg)) {\n _this.collapsedGanttRow(arg);\n }\n _this.isExpandCollapseFromChart = false;\n });\n }\n };\n /**\n * @returns {void} .\n * @param {object} args .\n * @private\n */\n GanttChart.prototype.collapsedGanttRow = function (args) {\n if ((isNullOrUndefined(args['gridRow']) && this.parent.enableVirtualization) || isNullOrUndefined(args['chartRow'])) {\n return;\n }\n var record = getValue('data', args);\n if (this.isExpandCollapseFromChart) {\n this.expandCollapseChartRows('collapse', getValue('chartRow', args), record, null);\n this.parent.treeGrid.collapseRow(getValue('gridRow', args), record);\n this.isExpandCollapseFromChart = false;\n }\n else {\n this.expandCollapseChartRows('collapse', getValue('chartRow', args), record, null);\n }\n // To render the child record on parent row after collapsing\n if (this.parent.viewType === 'ResourceView') {\n this.renderMultiTaskbar(record);\n }\n if (!this.parent.enableVirtualization) {\n this.parent.updateContentHeight();\n }\n this.updateWidthAndHeight();\n this.reRenderConnectorLines();\n getValue('chartRow', args).setAttribute('aria-expanded', 'false');\n this.parent.trigger('collapsed', args);\n };\n /**\n * To expand gantt rows\n *\n * @returns {void} .\n * @param {object} args .\n * @param {boolean} isCancel .\n * @private\n */\n GanttChart.prototype.expandGanttRow = function (args, isCancel) {\n var _this = this;\n if (isCancel) {\n this.expandedGanttRow(args);\n }\n else {\n this.parent.trigger('expanding', args, function (arg) {\n if (_this.isExpandCollapseFromChart && !getValue('cancel', arg)) {\n _this.expandedGanttRow(arg);\n }\n _this.isExpandCollapseFromChart = false;\n });\n }\n };\n /**\n * @returns {void} .\n * @param {object} args .\n * @private\n */\n GanttChart.prototype.expandedGanttRow = function (args) {\n if ((isNullOrUndefined(args['gridRow']) && this.parent.enableVirtualization) || isNullOrUndefined(args['chartRow'])) {\n return;\n }\n var record = getValue('data', args);\n if (this.isExpandCollapseFromChart) {\n this.expandCollapseChartRows('expand', getValue('chartRow', args), record, null);\n this.parent.treeGrid.expandRow(getValue('gridRow', args), record);\n this.isExpandCollapseFromChart = false;\n }\n else {\n if (!this.parent.isExpandCollapseLevelMethod) {\n this.expandCollapseChartRows('expand', getValue('chartRow', args), record, null);\n }\n this.parent.isExpandCollapseLevelMethod = false;\n }\n // To render the child record on parent row after expanding.\n if (this.parent.viewType === 'ResourceView') {\n this.renderMultiTaskbar(record);\n }\n if (!this.parent.enableVirtualization) {\n this.parent.updateContentHeight();\n }\n this.updateWidthAndHeight();\n this.reRenderConnectorLines();\n getValue('chartRow', args).setAttribute('aria-expanded', 'true');\n this.parent.trigger('expanded', args);\n };\n GanttChart.prototype.renderMultiTaskbar = function (record) {\n if (this.parent.enableMultiTaskbar) {\n this.parent.chartRowsModule.refreshRecords([record], true);\n }\n else if (this.parent.showOverAllocation) {\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n };\n /**\n * On expand collapse operation row properties will be updated here.\n *\n * @param {string} action .\n * @param {Node} rowElement .\n * @param {IGanttData} record .\n * @param {boolean} isChild .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.expandCollapseChartRows = function (action, rowElement, record, isChild) {\n var displayType;\n if (action === 'expand') {\n displayType = 'table-row';\n if (!isChild) {\n record.expanded = true;\n }\n var targetElement = rowElement.querySelectorAll('.e-row-collapse');\n for (var t = 0; t < targetElement.length; t++) {\n addClass([targetElement[t]], 'e-row-expand');\n removeClass([targetElement[t]], 'e-row-collapse');\n }\n }\n else if (action === 'collapse') {\n displayType = 'none';\n if (!isChild) {\n record.expanded = false;\n }\n var targetElement = rowElement.querySelectorAll('.e-row-expand');\n for (var t = 0; t < targetElement.length; t++) {\n addClass([targetElement[t]], 'e-row-collapse');\n removeClass([targetElement[t]], 'e-row-expand');\n }\n }\n var childRecords = record.childRecords;\n var chartRows = this.getChartRows();\n var rows = [];\n for (var i = 0; i < chartRows.length; i++) {\n if (chartRows[i].classList.contains('gridrowtaskId'\n + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {\n rows.push(chartRows[i]);\n }\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = displayType;\n if ((childRecords[i].childRecords && childRecords[i].childRecords.length)\n && (action === 'collapse' || childRecords[i].expanded || this.isExpandAll)) {\n this.expandCollapseChartRows(action, rows[i], childRecords[i], true);\n }\n }\n };\n /**\n * Public method to expand or collapse all the rows of Gantt\n *\n * @returns {void}\n * @param {string} action .\n * @private\n */\n GanttChart.prototype.expandCollapseAll = function (action) {\n if (action === 'expand') {\n this.isExpandAll = true;\n this.parent.treeGrid.expandAll();\n }\n else {\n this.parent.treeGrid.collapseAll();\n }\n this.isExpandAll = false;\n };\n /**\n * Public method to expand particular level of rows.\n *\n * @returns {void} .\n * @param {number} level .\n * @private\n */\n GanttChart.prototype.expandAtLevel = function (level) {\n this.parent.treeGrid.expandAtLevel(level);\n };\n /**\n * Public method to collapse particular level of rows.\n *\n * @returns {void} .\n * @param {number} level .\n * @private\n */\n GanttChart.prototype.collapseAtLevel = function (level) {\n if (this.parent.enableVirtualization) {\n this.parent.isExpandCollapseLevelMethod = true;\n }\n this.parent.treeGrid.collapseAtLevel(level);\n };\n /**\n * Event Binding for gantt chart click\n *\n * @returns {void} .\n */\n GanttChart.prototype.wireEvents = function () {\n var isIE11Pointer = Browser.isPointer; // eslint-disable-line\n var mouseDown = Browser.touchStartEvent;\n var mouseUp = Browser.touchEndEvent;\n var mouseMove = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n EventHandler.add(this.parent.chartPane, mouseDown, this.ganttChartMouseDown, this);\n EventHandler.add(this.parent.chartPane, cancel, this.ganttChartLeave, this);\n EventHandler.add(this.parent.chartPane, mouseMove, this.ganttChartMove, this);\n if (this.parent.isAdaptive) {\n EventHandler.add(this.parent.chartPane, click, this.ganttChartMouseClick, this);\n EventHandler.add(this.parent.chartPane, mouseUp, this.ganttChartMouseUp, this);\n }\n if (!this.parent.isAdaptive) {\n EventHandler.add(this.parent.element, mouseUp, this.documentMouseUp, this);\n EventHandler.add(document, mouseUp, this.mouseUp, this);\n }\n EventHandler.add(this.parent.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(document.body, 'contextmenu', this.contextClick, this);\n EventHandler.add(document, 'mouseup', this.contextClick, this);\n EventHandler.add(this.parent.chartRowsModule.ganttChartTableBody, 'dblclick', this.doubleClickHandler, this);\n };\n GanttChart.prototype.unWireEvents = function () {\n var isIE11Pointer = Browser.isPointer; // eslint-disable-line\n var mouseDown = Browser.touchStartEvent;\n var mouseUp = Browser.touchEndEvent;\n var mouseMove = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n EventHandler.remove(this.parent.chartRowsModule.ganttChartTableBody, mouseDown, this.ganttChartMouseDown);\n EventHandler.remove(this.parent.chartPane, cancel, this.ganttChartLeave);\n EventHandler.remove(this.parent.chartPane, mouseMove, this.ganttChartMove);\n if (this.parent.isAdaptive) {\n EventHandler.remove(this.parent.chartPane, click, this.ganttChartMouseClick);\n EventHandler.remove(this.parent.chartPane, mouseUp, this.ganttChartMouseUp);\n }\n if (!this.parent.isAdaptive) {\n EventHandler.remove(this.parent.element, mouseUp, this.documentMouseUp);\n EventHandler.remove(document, mouseUp, this.mouseUp);\n }\n EventHandler.remove(this.parent.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(document.body, 'contextmenu', this.contextClick);\n EventHandler.remove(document, 'mouseup', this.contextClick);\n EventHandler.remove(this.parent.chartRowsModule.ganttChartTableBody, 'dblclick', this.doubleClickHandler);\n };\n /**\n * To get record by taskbar element.\n *\n * @param {Element} target .\n * @returns {IGanttData} .\n * @private\n */\n GanttChart.prototype.getRecordByTaskBar = function (target) {\n var item;\n if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {\n item = this.parent.flatData[this.getIndexByTaskBar(target)];\n }\n else {\n item = this.parent.currentViewData[this.getIndexByTaskBar(target)];\n }\n return item;\n };\n /**\n * Trigger Tab & Shift + Tab keypress to highlight active element.\n *\n * @param {KeyboardEventArgs} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.onTabAction = function (e) {\n this.parent.treeGrid.grid.enableHeaderFocus = this.parent.enableHeaderFocus;\n var isInEditedState = this.parent.editModule && this.parent.editModule.cellEditModule &&\n this.parent.editModule.cellEditModule.isCellEdit;\n if (!this.parent.showActiveElement && !isInEditedState) {\n return;\n }\n var $target = isInEditedState ? e.target.closest('.e-rowcell') : e.target;\n if ($target.closest('.e-rowcell') || $target.closest('.e-chart-row')) {\n this.parent.focusModule.setActiveElement($target);\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.focusedRowIndex = $target.closest('.e-rowcell') ? $target.parentElement.rowIndex :\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n $target.closest('.e-chart-row') ? $target.closest('.e-chart-row').rowIndex : -1;\n var isTab = (e.action === 'tab') ? true : false;\n var nextElement = this.getNextElement($target, isTab, isInEditedState);\n if (nextElement && $target.classList.contains('e-headercell')) {\n var colIndex = parseInt(nextElement.getAttribute('data-colindex'));\n if (e.action === 'shiftTab') {\n while (colIndex != -1 && !this.parent.treeGrid.columns[colIndex]['visible']) {\n colIndex = colIndex - 1;\n }\n if (colIndex != -1) {\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];\n }\n else {\n var toolbarItems = document.getElementsByClassName('e-toolbar-item');\n for (var i = toolbarItems.length - 1; i > 0; i--) {\n if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {\n nextElement = document.getElementsByClassName('e-toolbar-item')[i];\n break;\n }\n }\n }\n }\n else {\n while (!this.parent.treeGrid.columns[colIndex]['visible']) {\n colIndex = colIndex + 1;\n }\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];\n }\n }\n if (!nextElement && e.action === 'shiftTab' && $target.classList.contains('e-headercell')) {\n var toolbarItems = document.getElementsByClassName('e-toolbar-item');\n for (var i = toolbarItems.length - 1; i > 0; i--) {\n if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {\n nextElement = document.getElementsByClassName('e-toolbar-item')[i];\n break;\n }\n }\n }\n if ($target.classList.contains('e-treegrid') && !nextElement) {\n for (var i = 0; i < this.parent.treeGrid.columns.length; i++) {\n if (this.parent.treeGrid.columns[i]['visible']) {\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];\n break;\n }\n }\n }\n if (!nextElement && $target.classList.contains('e-headercell')) {\n nextElement = document.getElementsByClassName('e-timeline-header-container')[0];\n }\n if (e.action !== 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {\n for (var i = 0; i < this.parent.treeGrid.columns.length; i++) {\n if (this.parent.treeGrid.columns[i]['visible']) {\n nextElement = document.getElementsByClassName('e-row')[0].childNodes[i];\n break;\n }\n }\n }\n if (e.action === 'shiftTab' && !nextElement) {\n nextElement = document.getElementsByClassName('e-timeline-header-container')[0];\n }\n if (e.action === 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {\n for (var i = this.parent.treeGrid.columns.length - 1; i > 0; i--) {\n if (this.parent.treeGrid.columns[i]['visible']) {\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];\n break;\n }\n }\n }\n this.tempNextElement = nextElement;\n if (!isNullOrUndefined(nextElement) && !isNullOrUndefined(nextElement['cellIndex'])) {\n if (this.parent.allowRowDragAndDrop) {\n this.childrenIndex = nextElement['cellIndex'];\n this.nextElementIndex = nextElement['cellIndex'] - 1;\n }\n else {\n this.childrenIndex = nextElement['cellIndex'];\n this.nextElementIndex = nextElement['cellIndex'];\n }\n if (!this.parent.ganttColumns[this.nextElementIndex]['allowEditing'] && this.parent.ganttColumns[this.nextElementIndex]['field'] !== this.parent.taskFields.id) {\n this.isEditableElement = true;\n }\n else {\n this.isEditableElement = false;\n }\n }\n if (nextElement === 'noNextRow') {\n this.manageFocus($target, 'remove', true);\n return;\n }\n if (typeof nextElement !== 'string') {\n if ($target.classList.contains('e-rowcell') || $target.closest('.e-chart-row-cell') ||\n $target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar') || $target.classList.contains('e-timeline-header-container')) {\n e.preventDefault();\n }\n if (isTab && $target.classList.contains('e-rowdragdrop')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n return;\n }\n if ($target.classList.contains('e-rowcell') && (nextElement && nextElement.classList.contains('e-rowcell')) ||\n $target.classList.contains('e-headercell')) { // eslint-disable-line \n if (isTab) {\n if (this.parent.editSettings.allowNextRowEdit) {\n var rowData = this.parent.currentViewData[this.focusedRowIndex];\n var columnName = this.parent.ganttColumns[nextElement.getAttribute('data-colindex')].field;\n if (rowData.hasChildRecords) {\n if (columnName === this.parent.taskFields.endDate || columnName ===\n this.parent.taskFields.duration || columnName === this.parent.taskFields.dependency ||\n columnName === this.parent.taskFields.progress || columnName === this.parent.taskFields.work ||\n columnName === 'taskType') {\n this.parent.treeGrid.grid.endEdit();\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n else if (columnName === this.parent.taskFields.name || columnName === this.parent.taskFields.startDate) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n else {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n if (isInEditedState) {\n this.parent.treeGrid.editCell(this.focusedRowIndex, columnName); // eslint-disable-line\n }\n }\n }\n else {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n }\n else {\n if (!nextElement || nextElement && !nextElement.classList.contains('e-headercell')) {\n if ($target.classList.contains('e-headercell')) {\n this.manageFocus($target, 'remove', false);\n }\n if (!nextElement || $target.classList.contains('e-editedbatchcell')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n }\n }\n }\n else {\n if (!nextElement.classList.contains('e-headercell') && !nextElement.classList.contains('e-rowcell')\n && !nextElement.classList.contains('e-toolbar-item')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n }\n }\n if (!(this.parent.editModule && this.parent.editModule.cellEditModule\n && !isNullOrUndefined(this.parent.editModule.cellEditModule.editedColumn))) {\n if (nextElement) {\n if ($target.classList.contains('e-rowcell')) {\n this.manageFocus($target, 'remove', false);\n }\n else {\n this.manageFocus($target, 'remove', true);\n }\n if ((nextElement.classList.contains('e-rowcell') && $target.nextElementSibling && !$target.classList.contains('e-timeline-header-container'))\n || $target.classList.contains('e-right-label-container')) {\n if (!$target.classList.contains('e-rowcell')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n var fmodule = getValue('focusModule', this.parent.treeGrid.grid);\n fmodule.currentInfo.element = nextElement;\n fmodule.currentInfo.elementToFocus = nextElement;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n fmodule.content.matrix.current = [nextElement.parentElement.rowIndex, nextElement.cellIndex];\n }\n this.manageFocus(nextElement, 'add', false);\n }\n else {\n if (nextElement && (nextElement.classList.contains('e-toolbar-item') || nextElement.classList.contains('e-headercell')\n || nextElement.classList.contains(\"e-rowcell\"))) {\n this.manageFocus($target, 'remove', false);\n this.manageFocus(nextElement, 'add', false);\n if ($target.classList.contains('e-treegrid')) {\n e.preventDefault();\n }\n }\n else {\n this.manageFocus(nextElement, 'add', true);\n }\n }\n this.parent.focusModule.setActiveElement(nextElement);\n }\n }\n }\n };\n /**\n * Get next/previous sibling element.\n *\n * @param {Element} $target .\n * @param {boolean} isTab .\n * @param {boolean} isInEditedState .\n * @returns {Element | string} .\n */\n GanttChart.prototype.getNextElement = function ($target, isTab, isInEditedState) {\n var nextElement = isTab ? $target.nextElementSibling : $target.previousElementSibling;\n while (nextElement && nextElement.parentElement.classList.contains('e-row')) {\n if (!nextElement.matches('.e-hide') && !nextElement.matches('.e-rowdragdrop')) {\n return nextElement;\n }\n nextElement = isTab ? nextElement.nextElementSibling : nextElement.previousElementSibling;\n }\n if (!isNullOrUndefined(nextElement) && (nextElement.classList.contains('e-taskbar-main-container')\n || nextElement.classList.contains('e-right-connectorpoint-outer-div'))) {\n var record = this.parent.currentViewData[this.focusedRowIndex];\n if (!isNullOrUndefined(record.ganttProperties.segments) && record.ganttProperties.segments.length > 0) {\n nextElement = nextElement.classList.contains('e-right-connectorpoint-outer-div')\n ? nextElement.parentElement.nextElementSibling\n : nextElement.getElementsByClassName('e-gantt-child-taskbar-inner-div')[0];\n }\n }\n if (this.validateNextElement(nextElement)) {\n return nextElement;\n }\n else {\n var rowIndex = -1;\n var rowElement = null;\n var childElement = void 0;\n if ($target.classList.contains('e-rowcell') && isInEditedState && this.parent.editSettings.allowNextRowEdit) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n rowIndex = $target.parentElement.rowIndex;\n rowElement = this.getNextRowElement(rowIndex, isTab, true);\n childElement = this.getChildElement(rowElement, isTab);\n return childElement;\n }\n else if ($target.classList.contains('e-rowcell')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n rowIndex = $target.parentElement.rowIndex;\n if (isTab) {\n rowElement = this.parent.getRowByIndex(rowIndex);\n if (this.validateNextElement(rowElement, 'e-left-label-container')) {\n return rowElement.getElementsByClassName('e-left-label-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-taskbar-main-container')) {\n return rowElement.getElementsByClassName('e-taskbar-main-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-right-label-container')) {\n return rowElement.getElementsByClassName('e-right-label-container')[0];\n }\n }\n else {\n rowElement = this.getNextRowElement(rowIndex, isTab, false);\n if (this.validateNextElement(rowElement, 'e-right-label-container')) {\n return rowElement.getElementsByClassName('e-right-label-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-taskbar-main-container')) {\n return rowElement.getElementsByClassName('e-taskbar-main-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-left-label-container')) {\n return rowElement.getElementsByClassName('e-left-label-container')[0];\n }\n }\n }\n else if ($target.parentElement.classList.contains('e-chart-row-cell') ||\n $target.parentElement.parentElement.classList.contains('e-chart-row-cell')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n rowIndex = closest($target, '.e-chart-row').rowIndex;\n if (isTab) {\n rowElement = this.getNextRowElement(rowIndex, isTab, true);\n }\n else {\n rowElement = this.parent.treeGrid.grid.getRowByIndex(rowIndex);\n }\n var childElement_1 = this.getChildElement(rowElement, isTab);\n return childElement_1;\n }\n nextElement = $target;\n if (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && this.parent.toolbarModule) {\n while (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && nextElement.parentElement.nextElementSibling.classList.contains('e-toolbar-item')) {\n if (nextElement.parentElement.nextElementSibling.classList.contains('e-hidden')) {\n nextElement = nextElement.parentElement.nextElementSibling.childNodes[0];\n }\n else {\n return nextElement.parentElement.nextElementSibling;\n }\n }\n }\n }\n return null;\n };\n /**\n * Get next/previous row element.\n *\n * @param {number} rowIndex .\n * @param {boolean} isTab .\n * @param {boolean} isChartRow .\n * @returns {Element} .\n */\n GanttChart.prototype.getNextRowElement = function (rowIndex, isTab, isChartRow) {\n var expandedRecords = this.parent.getExpandedRecords(this.parent.currentViewData);\n var currentItem = this.parent.currentViewData[rowIndex];\n var expandedRecordIndex = expandedRecords.indexOf(currentItem);\n var nextRecord = isTab ? expandedRecords[expandedRecordIndex + 1] : expandedRecords[expandedRecordIndex - 1];\n var nextRowIndex = this.parent.currentViewData.indexOf(nextRecord);\n if (nextRecord) {\n return isChartRow ? this.parent.treeGrid.grid.getRowByIndex(nextRowIndex) : this.parent.getRowByIndex(nextRowIndex);\n }\n else {\n return null;\n }\n };\n /**\n * Validate next/previous sibling element haschilds.\n *\n * @param {Element} $target .\n * @param {string} className .\n * @returns {boolean} .\n */\n GanttChart.prototype.validateNextElement = function ($target, className) {\n if ($target && $target.classList.contains('e-rowcell')) {\n return true;\n }\n if ($target && className) {\n var elementByClass = $target.getElementsByClassName(className)[0];\n return (elementByClass && elementByClass.hasChildNodes()) ? true : false;\n }\n else if ($target) {\n return (!isNullOrUndefined($target) && $target.hasChildNodes()) ? true : false;\n }\n return false;\n };\n /**\n * Getting child element based on row element.\n *\n * @param {Element} rowElement .\n * @param {boolean} isTab .\n * @returns {Element | string} .\n */\n GanttChart.prototype.getChildElement = function (rowElement, isTab) {\n var childElement;\n if (rowElement) {\n childElement = isTab ? rowElement.children[0] : rowElement.children[rowElement.children.length - 1];\n while (childElement) {\n if (!childElement.matches('.e-hide') && !childElement.matches('.e-rowdragdrop')) {\n return childElement;\n }\n childElement = isTab ? childElement.nextElementSibling : childElement.previousElementSibling;\n }\n }\n else {\n return 'noNextRow';\n }\n return childElement;\n };\n /**\n * Add/Remove active element.\n *\n * @private\n * @param {HTMLElement} element .\n * @param {string} focus .\n * @param {boolean} isChartElement .\n * @returns {void} .\n */\n GanttChart.prototype.manageFocus = function (element, focus, isChartElement) {\n if (isChartElement) {\n var childElement = null;\n if (element.classList.contains('e-left-label-container') ||\n element.classList.contains('e-right-label-container')) {\n childElement = element.getElementsByTagName('span')[0];\n }\n else if (element.classList.contains('e-taskbar-main-container')\n || element.classList.contains('e-gantt-child-taskbar-inner-div')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var rowIndex = closest(element, '.e-chart-row').rowIndex;\n var data = this.parent.currentViewData[rowIndex];\n var className = data.hasChildRecords ? data.ganttProperties.isAutoSchedule ? 'e-gantt-parent-taskbar' :\n 'e-manualparent-main-container' :\n data.ganttProperties.isMilestone ? 'e-gantt-milestone' : !isNullOrUndefined(data.ganttProperties.segments)\n && data.ganttProperties.segments.length > 0 ? 'e-segmented-taskbar' : 'e-gantt-child-taskbar';\n childElement = element.getElementsByClassName(className)[0];\n if (isNullOrUndefined(childElement)) {\n childElement = element;\n }\n }\n if (element.classList.contains('e-right-label-temp-container') || element.classList.contains('e-left-label-temp-container') || element.classList.contains('e-indicator-span')) {\n if (focus === 'add') {\n element.setAttribute('tabIndex', '0');\n addClass([element], 'e-active-container');\n element.focus();\n }\n else {\n removeClass([element], 'e-active-container');\n element.setAttribute('tabIndex', '-1');\n element.blur();\n }\n }\n if (focus === 'add' && !isNullOrUndefined(childElement)) {\n element.setAttribute('tabIndex', '0');\n addClass([childElement], 'e-active-container');\n element.focus();\n this.focusedElement = childElement;\n }\n else if (!isNullOrUndefined(childElement)) {\n removeClass([childElement], 'e-active-container');\n element.setAttribute('tabIndex', '-1');\n element.blur();\n }\n }\n else {\n if (focus === 'add') {\n element.setAttribute('tabIndex', '0');\n addClass([element], ['e-focused', 'e-focus']);\n element.focus();\n }\n else {\n element.setAttribute('tabIndex', '-1');\n removeClass([element], ['e-focused', 'e-focus']);\n element.blur();\n }\n }\n };\n /**\n * To get index by taskbar element.\n *\n * @param {Element} target .\n * @returns {number} .\n * @private\n */\n GanttChart.prototype.getIndexByTaskBar = function (target) {\n var row;\n var recordIndex;\n if (!target.classList.contains(cls.taskBarMainContainer)) {\n row = closest(target, 'div.' + cls.taskBarMainContainer);\n }\n else {\n row = target;\n }\n if (isNullOrUndefined(row)) {\n row = closest(target, 'tr.' + cls.chartRow);\n recordIndex = [].slice.call(this.parent.chartRowsModule.ganttChartTableBody.childNodes).indexOf(row);\n }\n else {\n var id = row.getAttribute('rowUniqueId');\n var record = this.parent.getRecordByID(id);\n if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {\n recordIndex = this.parent.flatData.indexOf(record);\n }\n else {\n recordIndex = this.parent.currentViewData.indexOf(record);\n }\n }\n return recordIndex;\n };\n GanttChart.prototype.destroy = function () {\n this.removeEventListener();\n this.unWireEvents();\n this.scrollObject.destroy();\n this.scrollObject = null;\n };\n return GanttChart;\n}());\nexport { GanttChart };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createElement, isNullOrUndefined, getValue, addClass, removeClass, extend } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Configures the `Timeline` of the gantt.\n */\nvar Timeline = /** @class */ (function () {\n function Timeline(ganttObj) {\n this.isZoomIn = false;\n this.isZooming = false;\n this.isZoomToFit = false;\n this.topTierCollection = [];\n this.bottomTierCollection = [];\n this.parent = ganttObj;\n this.initProperties();\n }\n /**\n * To initialize the public property.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.initProperties = function () {\n this.timelineStartDate = null;\n this.timelineEndDate = null;\n this.totalTimelineWidth = 0;\n this.customTimelineSettings = null;\n this.parent.isTimelineRoundOff = this.isZoomToFit ? false : isNullOrUndefined(this.parent.projectStartDate) ? true : false;\n if (this.parent.enablePersistence && this.parent.isLoad) {\n this.parent.timelineSettings = this.parent.currentZoomingLevel;\n }\n };\n /**\n * To render timeline header series.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.validateTimelineProp = function () {\n this.roundOffDays();\n this.processTimelineProperty();\n this.timelineWidthCalculation();\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.refreshTimeline = function () {\n this.initProperties();\n this.processTimelineUnit();\n this.parent.dataOperation.calculateProjectDates();\n if (!this.parent.isFromOnPropertyChange) {\n this.parent.updateProjectDates(this.parent.cloneProjectStartDate, this.parent.cloneProjectEndDate, this.parent.isTimelineRoundOff);\n }\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.refreshTimelineByTimeSpan = function () {\n this.validateTimelineProp();\n this.parent.ganttChartModule.chartTimelineContainer.innerHTML = '';\n this.createTimelineSeries();\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.updateChartByNewTimeline = function () {\n this.parent.chartRowsModule.refreshChartByTimeline();\n this.parent.notify('refreshDayMarkers', {});\n };\n /**\n * Function used to perform Zoomin and Zoomout actions in Gantt control.\n *\n * @param {boolean} isZoomIn .\n * @private\n * @returns {void}\n */\n Timeline.prototype.processZooming = function (isZoomIn) {\n this.isZoomToFit = false;\n if (!isNullOrUndefined(this.parent.zoomingProjectStartDate)) {\n this.parent.cloneProjectStartDate = this.parent.cloneProjectStartDate.getTime() < this.parent.zoomingProjectStartDate.getTime()\n ? this.parent.cloneProjectStartDate : this.parent.zoomingProjectStartDate;\n this.parent.cloneProjectEndDate = this.parent.cloneProjectEndDate.getTime() > this.parent.zoomingProjectEndDate.getTime()\n ? this.parent.cloneProjectEndDate : this.parent.zoomingProjectEndDate;\n }\n this.parent.zoomingProjectStartDate = null;\n this.parent.zoomingProjectEndDate = null;\n var currentZoomingLevel = this.checkCurrentZoomingLevel();\n this.isZoomIn = isZoomIn;\n this.isZooming = true;\n var currentLevel = isZoomIn ? currentZoomingLevel + 1 : currentZoomingLevel - 1;\n if (this.parent.toolbarModule) {\n if (isZoomIn) {\n if (currentLevel === this.parent.zoomingLevels[this.parent.zoomingLevels.length - 1].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], false); // disable toolbar items.\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], true);\n }\n else {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], true); // disable toolbar items.\n }\n }\n else {\n if (currentLevel === this.parent.zoomingLevels[0].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], false); // disable toolbar items.\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], true);\n }\n else {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], true); // enable toolbar items.\n }\n }\n }\n currentLevel = this.parent.zoomingLevels.findIndex(function (tempLevel) {\n return tempLevel.level === currentLevel;\n });\n var newTimeline = this.parent.zoomingLevels[currentLevel];\n var args = {\n requestType: isZoomIn ? 'beforeZoomIn' : 'beforeZoomOut',\n timeline: newTimeline,\n cancel: false\n };\n this.parent.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n if (!args.cancel) {\n newTimeline = args.timeline;\n this.changeTimelineSettings(newTimeline);\n }\n };\n /**\n * To change the timeline settings property values based upon the Zooming levels.\n *\n * @param {ZoomTimelineSettings} newTimeline .\n * @returns {void}\n * @private\n */\n Timeline.prototype.changeTimelineSettings = function (newTimeline) {\n var _this = this;\n if (this.isZoomToFit) {\n this.isSingleTier = this.customTimelineSettings.topTier.unit === 'None' || this.customTimelineSettings.bottomTier.unit === 'None' ? true : false;\n }\n else if (!this.isZoomIn) {\n this.isSingleTier = newTimeline.topTier.unit === 'None' || newTimeline.bottomTier.unit === 'None' ? true : false;\n }\n var skipProperty = this.isSingleTier ?\n this.customTimelineSettings.topTier.unit === 'None' ?\n 'topTier' : 'bottomTier' : null;\n Object.keys(this.customTimelineSettings).forEach(function (property) {\n if (property !== skipProperty) {\n _this.customTimelineSettings[property] = (typeof newTimeline[property] === 'object'\n && !isNullOrUndefined(newTimeline[property])) ? __assign({}, newTimeline[property]) : newTimeline[property];\n }\n else {\n var value = property === 'topTier' ? 'bottomTier' : 'topTier';\n var assignValue = 'bottomTier';\n if (newTimeline[\"\" + assignValue].unit != \"None\") {\n _this.customTimelineSettings[value] = __assign({}, newTimeline[assignValue]);\n }\n }\n });\n this.parent.isTimelineRoundOff = this.isZoomToFit ? false : isNullOrUndefined(this.parent.projectStartDate) ? true : false;\n this.processTimelineUnit();\n this.parent.updateProjectDates(this.parent.cloneProjectStartDate, this.parent.cloneProjectEndDate, this.parent.isTimelineRoundOff);\n var criticalModule = this.parent.criticalPathModule;\n if (this.parent.enableCriticalPath && criticalModule) {\n criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n if (this.isZooming || this.isZoomToFit) {\n var args = {\n requestType: this.isZoomIn ? 'AfterZoomIn' : this.isZoomToFit ? 'AfterZoomToProject' : 'AfterZoomOut',\n timeline: this.parent.currentZoomingLevel\n };\n this.parent.trigger('actionComplete', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n }\n };\n /**\n * To perform the zoom to fit operation in Gantt.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.processZoomToFit = function () {\n this.isZoomToFit = true;\n this.isZooming = false;\n if (!this.parent.zoomingProjectStartDate) {\n this.parent.zoomingProjectStartDate = this.parent.cloneProjectStartDate;\n this.parent.zoomingProjectEndDate = this.parent.cloneProjectEndDate;\n }\n this.parent.dataOperation.calculateProjectDates();\n if (this.parent.zoomingProjectStartDate > this.parent.cloneProjectStartDate) {\n this.parent.cloneProjectStartDate = new Date(this.parent.allowUnscheduledTasks ? this.parent.zoomingProjectStartDate : this.parent.cloneProjectStartDate);\n }\n var timeDifference = (this.parent.cloneProjectEndDate.getTime() - this.parent.cloneProjectStartDate.getTime());\n var totalDays = (timeDifference / (1000 * 3600 * 24));\n var chartWidth = this.parent.ganttChartModule.chartElement.offsetWidth;\n var perDayWidth = chartWidth / totalDays;\n var zoomingLevel;\n var firstValue;\n var secondValue;\n var zoomingCollections = this.parent.zoomingLevels.slice();\n var sortedCollectons = zoomingCollections.sort(function (a, b) {\n return (!a.perDayWidth && !b.perDayWidth ? 0 : (a.perDayWidth < b.perDayWidth) ? 1 : -1);\n });\n if (perDayWidth === 0) { // return when the Gantt chart is not in viewable state.\n return;\n }\n for (var i = 0; i < sortedCollectons.length; i++) {\n firstValue = sortedCollectons[i];\n if (i === sortedCollectons.length - 1) {\n zoomingLevel = sortedCollectons[i];\n break;\n }\n else {\n secondValue = sortedCollectons[i + 1];\n }\n if (perDayWidth >= firstValue.perDayWidth) {\n zoomingLevel = sortedCollectons[i];\n break;\n }\n if (perDayWidth < firstValue.perDayWidth && perDayWidth > secondValue.perDayWidth) {\n zoomingLevel = sortedCollectons[i + 1];\n break;\n }\n }\n var newTimeline = extend({}, {}, zoomingLevel, true);\n this.roundOffDateToZoom(this.parent.cloneProjectStartDate, true, perDayWidth, newTimeline.bottomTier.unit, zoomingLevel);\n this.roundOffDateToZoom(this.parent.cloneProjectEndDate, false, perDayWidth, newTimeline.bottomTier.unit, zoomingLevel);\n var numberOfCells = this.calculateNumberOfTimelineCells(newTimeline);\n var scrollHeight = this.parent.ganttChartModule.scrollElement.offsetHeight - 17; //17 is horizontal scrollbar width\n var contentHeight = this.parent.ganttChartModule.chartBodyContent.offsetHeight;\n var emptySpace = contentHeight <= scrollHeight ? 0 : 17;\n newTimeline.timelineUnitSize = Math.abs((chartWidth - emptySpace)) / numberOfCells;\n var args = {\n requestType: 'beforeZoomToProject',\n timeline: newTimeline\n };\n if (this.parent.toolbarModule) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin', this.parent.controlId + '_zoomout'], true);\n }\n this.parent.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n this.changeTimelineSettings(newTimeline);\n };\n Timeline.prototype.bottomTierCellWidthCalc = function (mode, zoomLevel, date) {\n var convertedMilliSeconds;\n switch (mode) {\n case 'Minutes':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 1000);\n break;\n case 'Hour':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 60 * 1000);\n break;\n case 'Week':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (7 * 24 * 60 * 60 * 1000);\n break;\n case 'Day':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (24 * 60 * 60 * 1000);\n break;\n case 'Month':\n var daysInMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 60 * 24 * daysInMonth * 1000);\n break;\n case 'Year':\n var daysInYear = (date.getFullYear() % 400 === 0 || (date.getFullYear() % 100 !== 0 && date.getFullYear() % 4 === 0)) ? 366 : 365;\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 60 * 24 * daysInYear * 1000);\n break;\n }\n return convertedMilliSeconds;\n };\n Timeline.prototype.roundOffDateToZoom = function (date, isStartDate, perDayWidth, tierMode, zoomingLevel) {\n var roundOffTime = this.bottomTierCellWidthCalc(tierMode, zoomingLevel, date);\n if (isStartDate) {\n date.setTime(date.getTime() - roundOffTime);\n }\n else {\n date.setTime(date.getTime() + roundOffTime);\n }\n };\n Timeline.prototype.calculateNumberOfTimelineCells = function (newTimeline) {\n var numberOfDays = Math.abs((this.parent.cloneProjectEndDate.getTime() -\n this.parent.cloneProjectStartDate.getTime()) / (24 * 60 * 60 * 1000));\n var count = newTimeline.bottomTier.count;\n var unit = newTimeline.bottomTier.unit;\n if (unit === 'Day') {\n return numberOfDays / count;\n }\n else if (unit === 'Week') {\n return (numberOfDays / count) / 7;\n }\n else if (unit === 'Month') {\n return (numberOfDays / count) / 28;\n }\n else if (unit === 'Year') {\n return (numberOfDays / count) / (12 * 28);\n }\n else if (unit === 'Hour') {\n return numberOfDays * (24 / count);\n }\n else {\n return numberOfDays * ((60 * 24) / count);\n }\n };\n /**\n * To validate time line unit.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.processTimelineUnit = function () {\n var directProperty = ['timelineViewMode', 'timelineUnitSize', 'weekStartDay', 'weekendBackground'];\n var innerProperty = {\n 'topTier': ['unit', 'format', 'count', 'formatter'],\n 'bottomTier': ['unit', 'format', 'count', 'formatter']\n };\n var tierUnits = ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minutes'];\n this.customTimelineSettings = this.customTimelineSettings ? this.customTimelineSettings :\n this.extendFunction(this.parent.timelineSettings, directProperty, innerProperty);\n if ((tierUnits.indexOf(this.customTimelineSettings.topTier.unit) === -1) &&\n (tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit) === -1)) {\n this.customTimelineSettings.topTier.unit = tierUnits.indexOf(this.customTimelineSettings.timelineViewMode) !== -1 ?\n this.customTimelineSettings.timelineViewMode : 'Week';\n this.customTimelineSettings.bottomTier.unit = tierUnits.indexOf(this.customTimelineSettings.topTier.unit) !== 5 ?\n tierUnits[tierUnits.indexOf(this.customTimelineSettings.topTier.unit) + 1] : 'None';\n }\n else if ((tierUnits.indexOf(this.customTimelineSettings.topTier.unit) !== -1 &&\n tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit) !== -1)\n && (tierUnits.indexOf(this.customTimelineSettings.topTier.unit) >\n tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit))) {\n this.customTimelineSettings.bottomTier.unit = this.customTimelineSettings.topTier.unit;\n }\n else {\n this.customTimelineSettings.topTier.unit = tierUnits.indexOf(this.customTimelineSettings.topTier.unit) === -1 ?\n 'None' : this.customTimelineSettings.topTier.unit;\n this.customTimelineSettings.bottomTier.unit = tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit) === -1 ?\n 'None' : this.customTimelineSettings.bottomTier.unit;\n }\n this.topTier = this.customTimelineSettings.topTier.unit;\n this.bottomTier = this.customTimelineSettings.bottomTier.unit;\n this.previousIsSingleTier = this.isSingleTier;\n this.isSingleTier = this.topTier === 'None' || this.bottomTier === 'None' ? true : false;\n };\n /**\n * To validate timeline properties.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.processTimelineProperty = function () {\n this.customTimelineSettings.topTier.count = (this.topTier === 'None') ?\n 1 : this.validateCount(this.customTimelineSettings.topTier.unit, this.customTimelineSettings.topTier.count, 'topTier');\n this.customTimelineSettings.bottomTier.count = this.customTimelineSettings.bottomTier.unit === 'None' ?\n 1 : this.validateCount(this.customTimelineSettings.bottomTier.unit, this.customTimelineSettings.bottomTier.count, 'bottomTier');\n this.customTimelineSettings.bottomTier.format = this.validateFormat(this.customTimelineSettings.bottomTier.unit, this.customTimelineSettings.bottomTier.format);\n this.customTimelineSettings.topTier.format = this.validateFormat(this.topTier, this.customTimelineSettings.topTier.format);\n this.customTimelineSettings.weekStartDay = this.customTimelineSettings.weekStartDay >= 0 &&\n this.customTimelineSettings.weekStartDay <= 6 ? this.customTimelineSettings.weekStartDay : 0;\n this.checkCurrentZoomingLevel();\n };\n /**\n * To find the current zooming level of the Gantt control.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.calculateZoomingLevelsPerDayWidth = function () {\n var collections = this.parent.zoomingLevels;\n for (var i = 0; i < collections.length; i++) {\n var perDayWidth = this.getPerDayWidth(collections[i].timelineUnitSize, collections[i].bottomTier.count, collections[i].bottomTier.unit);\n collections[i].perDayWidth = perDayWidth;\n }\n };\n /**\n * To find the current zooming level of the Gantt control.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.checkCurrentZoomingLevel = function () {\n var count = this.customTimelineSettings.bottomTier.unit !== 'None' ?\n this.customTimelineSettings.bottomTier.count : this.customTimelineSettings.topTier.count;\n var unit = this.customTimelineSettings.bottomTier.unit !== 'None' ?\n this.customTimelineSettings.bottomTier.unit : this.customTimelineSettings.topTier.unit;\n var tier = this.customTimelineSettings.bottomTier.unit !== 'None' ?\n \"bottomTier\" : \"topTier\";\n var zoomLevel = this.getCurrentZoomingLevel(unit, count, tier);\n if (this.parent.toolbarModule) {\n if (zoomLevel === this.parent.zoomingLevels[this.parent.zoomingLevels.length - 1].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], false);\n }\n else if (zoomLevel === this.parent.zoomingLevels[0].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], false);\n }\n }\n this.parent.currentZoomingLevel = this.parent.zoomingLevels[zoomLevel];\n return zoomLevel;\n };\n /**\n * @param {string} unit .\n * @param {number} count .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.getCurrentZoomingLevel = function (unit, count, tier) {\n var level;\n var currentZoomCollection;\n var checkSameCountLevels;\n var secondValue;\n var firstValue;\n if (!this.parent.zoomingLevels.length) {\n this.parent.zoomingLevels = this.parent.getZoomingLevels();\n }\n var sameUnitLevels = this.parent.zoomingLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.unit === unit;\n }\n else {\n return tempLevel.topTier.unit === unit;\n }\n });\n if (sameUnitLevels.length === 0) {\n var closestUnit_1 = this.getClosestUnit(unit, '', false);\n sameUnitLevels = this.parent.zoomingLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.unit === closestUnit_1;\n }\n else {\n return tempLevel.topTier.unit === closestUnit_1;\n }\n });\n }\n var sortedUnitLevels = sameUnitLevels.sort(function (a, b) {\n if (tier === \"bottomTier\") {\n return (!a.bottomTier.count || !b.bottomTier.count) ? 0 : ((a.bottomTier.count < b.bottomTier.count) ? 1 : -1);\n }\n else {\n return (!a.topTier.count || !b.topTier.count) ? 0 : ((a.topTier.count < b.topTier.count) ? 1 : -1);\n }\n });\n for (var i = 0; i < sortedUnitLevels.length; i++) {\n firstValue = sortedUnitLevels[i];\n if (i === sortedUnitLevels.length - 1) {\n level = sortedUnitLevels[i].level;\n break;\n }\n else {\n secondValue = sortedUnitLevels[i + 1];\n }\n if (count >= firstValue[\"\" + tier].count) {\n currentZoomCollection = sortedUnitLevels[i];\n checkSameCountLevels = sortedUnitLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.count === currentZoomCollection.bottomTier.count;\n }\n else {\n return tempLevel.topTier.count === currentZoomCollection.topTier.count;\n }\n });\n if (checkSameCountLevels.length > 1) {\n level = this.checkCollectionsWidth(checkSameCountLevels);\n }\n else {\n level = checkSameCountLevels[0].level;\n }\n break;\n }\n else if (count < firstValue[\"\" + tier].count && count > secondValue[\"\" + tier].count) {\n currentZoomCollection = sortedUnitLevels[i + 1];\n checkSameCountLevels = sortedUnitLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.count === currentZoomCollection.bottomTier.count;\n }\n else {\n return tempLevel.topTier.count === currentZoomCollection.topTier.count;\n }\n });\n if (checkSameCountLevels.length > 1) {\n level = this.checkCollectionsWidth(checkSameCountLevels);\n }\n else {\n level = checkSameCountLevels[0].level;\n }\n break;\n }\n }\n return level;\n };\n /**\n * Getting closest zooimg level.\n *\n * @param {string} unit .\n * @param {string} closetUnit .\n * @param {boolean} isCont .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.getClosestUnit = function (unit, closetUnit, isCont) {\n var bottomTierUnits = ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minutes'];\n var index = bottomTierUnits.indexOf(unit);\n if (index === 0) {\n isCont = true;\n }\n if (this.isZoomIn || isCont) {\n unit = bottomTierUnits[index + 1];\n }\n else {\n unit = bottomTierUnits[index - 1];\n }\n var sameUnitLevels = this.parent.zoomingLevels.filter(function (tempLevel) {\n return tempLevel.bottomTier.unit === unit;\n });\n if (sameUnitLevels.length === 0) {\n if (unit === 'Year') {\n isCont = true;\n }\n closetUnit = unit;\n return this.getClosestUnit(unit, closetUnit, isCont);\n }\n else {\n return unit;\n }\n };\n Timeline.prototype.checkCollectionsWidth = function (checkSameLevels) {\n var zoomLevels = checkSameLevels;\n var width = this.customTimelineSettings.timelineUnitSize;\n var level;\n var secondValue;\n var firstValue;\n var sortedZoomLevels = zoomLevels.sort(function (a, b) {\n return (a.timelineUnitSize < b.timelineUnitSize) ? 1 : -1;\n });\n for (var i = 0; i < sortedZoomLevels.length; i++) {\n firstValue = sortedZoomLevels[i];\n if (i === sortedZoomLevels.length - 1) {\n level = sortedZoomLevels[i].level;\n break;\n }\n else {\n secondValue = sortedZoomLevels[i + 1];\n }\n if (width >= firstValue.timelineUnitSize) {\n level = sortedZoomLevels[i].level;\n break;\n }\n else if (width < firstValue.timelineUnitSize && width > secondValue.timelineUnitSize) {\n level = sortedZoomLevels[i + 1].level;\n break;\n }\n }\n return level;\n };\n /**\n * To create timeline header template.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.updateTimelineHeaderHeight = function () {\n if (this.parent.timelineModule.isSingleTier) {\n addClass([this.parent.ganttChartModule.chartTimelineContainer], cls.timelineSingleHeaderOuterDiv);\n if (this.parent.treeGrid.element) {\n addClass(this.parent.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n addClass(this.parent.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n }\n else {\n removeClass([this.parent.ganttChartModule.chartTimelineContainer], cls.timelineSingleHeaderOuterDiv);\n if (this.parent.treeGrid.element) {\n removeClass(this.parent.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n removeClass(this.parent.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n }\n if (this.previousIsSingleTier !== this.isSingleTier) {\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n this.parent.ganttChartModule.scrollObject.\n setHeight(this.parent.ganttHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight - toolbarHeight);\n this.parent.treeGrid.height = this.parent.ganttHeight - toolbarHeight -\n this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;\n }\n };\n /**\n * To create timeline header template.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.createTimelineSeries = function () {\n var tr;\n var td;\n var div;\n var table;\n var thead;\n var loopCount = this.isSingleTier ? 1 : 2;\n var tier = this.topTier === 'None' ? 'bottomTier' : 'topTier';\n this.updateTimelineHeaderHeight();\n this.topTierCollection = [];\n this.bottomTierCollection = [];\n for (var count = 0; count < loopCount; count++) {\n table = createElement('table', { className: cls.timelineHeaderTableContainer, styles: 'display: block;' });\n thead = createElement('thead', { className: cls.timelineHeaderTableBody, styles: 'display:block; border-collapse:collapse' });\n tr = createElement('tr', { innerHTML: this.createTimelineTemplate(tier) });\n td = createElement('th');\n div = createElement('div', { styles: 'width: 20px' });\n td.appendChild(div);\n tr.appendChild(td);\n thead.appendChild(tr);\n table.appendChild(thead);\n this.parent.ganttChartModule.chartTimelineContainer.appendChild(table);\n tier = 'bottomTier';\n tr = null;\n }\n };\n /**\n * To validate timeline tier count.\n *\n * @param {string} mode .\n * @param {number} count .\n * @param {string} tier .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.validateCount = function (mode, count, tier) {\n var tierCount = !isNullOrUndefined(count) && parseInt(count.toString(), 10) > 0 ? parseInt(count.toString(), 10) : 1;\n var timeDifference = Math.abs(this.timelineRoundOffEndDate.getTime() - this.timelineStartDate.getTime());\n var difference;\n switch (mode) {\n case 'Year':\n difference = Math.round((timeDifference / (1000 * 3600 * 24)) / (12 * 28));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Month':\n difference = Math.round((timeDifference / (1000 * 3600 * 24)) / 28);\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? (difference + 1) : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Week':\n difference = Math.round((timeDifference / (1000 * 3600 * 24)) / 7);\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Day':\n difference = Math.round(timeDifference / (1000 * 3600 * 24));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Hour':\n difference = Math.round(timeDifference / (1000 * 3600));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Minutes':\n difference = Math.round(timeDifference / (1000 * 60));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n }\n if (count !== tierCount && this.isZooming && this.parent.toolbarModule && (tier === 'bottomTier' || this.isSingleTier)) {\n if (this.isZoomIn) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], false);\n }\n else {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], false);\n }\n }\n return tierCount;\n };\n /**\n * To validate bottom tier count.\n *\n * @param {string} mode .\n * @param {number} tierCount .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.validateBottomTierCount = function (mode, tierCount) {\n var count;\n switch (mode) {\n case 'Year':\n count = tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Month':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * 12) ?\n tierCount : (this.customTimelineSettings.topTier.count * 12) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Week':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 4)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 4)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * 4) ?\n tierCount : (this.customTimelineSettings.topTier.count * 4) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Day':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 28)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 28)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * 28) ?\n tierCount : (this.customTimelineSettings.topTier.count * 28) :\n this.topTier === 'Week' ? tierCount <= (this.customTimelineSettings.topTier.count * 7) ?\n tierCount : (this.customTimelineSettings.topTier.count * 7) :\n tierCount <= this.customTimelineSettings.topTier.count ? tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Hour':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 28 * 24)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 28 * 24)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * (28 * 24)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (28 * 24)) :\n this.topTier === 'Week' ? tierCount <= (this.customTimelineSettings.topTier.count * 7 * 24) ?\n tierCount : (this.customTimelineSettings.topTier.count * 7 * 24) :\n this.topTier === 'Day' ? tierCount <= (this.customTimelineSettings.topTier.count * 24) ?\n tierCount : (this.customTimelineSettings.topTier.count * 24) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Minutes':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 28 * 24 * 60)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 28 * 24 * 60)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * (28 * 24 * 60)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (28 * 24 * 60)) :\n this.topTier === 'Week' ? tierCount <= (this.customTimelineSettings.topTier.count * 7 * 24 * 60) ?\n tierCount : (this.customTimelineSettings.topTier.count * 7 * 24 * 60) :\n this.topTier === 'Day' ? tierCount <= (this.customTimelineSettings.topTier.count * 24 * 60) ?\n tierCount : (this.customTimelineSettings.topTier.count * 24 * 60) :\n this.topTier === 'Hour' ? tierCount <= (this.customTimelineSettings.topTier.count * 60) ?\n tierCount : (this.customTimelineSettings.topTier.count * 60) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n }\n return count;\n };\n /**\n * To validate timeline tier format.\n *\n * @param {string} mode .\n * @param {string} format .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.validateFormat = function (mode, format) {\n var tierFormat;\n switch (mode) {\n case 'Week':\n tierFormat = !format ? 'MMM dd, yyyy' : format;\n break;\n case 'Day':\n case 'None':\n tierFormat = !format ? '' : format;\n break;\n case 'Hour':\n tierFormat = !format ? 'H' : format;\n break;\n case 'Month':\n tierFormat = !format ? 'MMM yyyy' : format;\n break;\n case 'Year':\n tierFormat = !format ? 'yyyy' : format;\n break;\n case 'Minutes':\n tierFormat = !format ? 'm' : format;\n break;\n }\n return tierFormat;\n };\n /**\n * To perform extend operation.\n *\n * @param {object} cloneObj .\n * @param {string[]} propertyCollection .\n * @param {object} innerProperty .\n * @returns {object} .\n * @private\n */\n Timeline.prototype.extendFunction = function (cloneObj, propertyCollection, innerProperty) {\n var _this = this;\n var tempObj = {};\n for (var index = 0; index < propertyCollection.length; index++) {\n tempObj[propertyCollection[index]] = cloneObj[propertyCollection[index]];\n }\n if (innerProperty) {\n Object.keys(innerProperty).forEach(function (key) {\n tempObj[key] = _this.extendFunction(cloneObj[key], innerProperty[key], null);\n });\n }\n return tempObj;\n };\n /**\n * To format date.\n *\n * @param {string} dayFormat .\n * @param {Date} data .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.formatDateHeader = function (dayFormat, data) {\n var date = new Date(data.getTime());\n var dateString;\n if (dayFormat === '') {\n dateString = this.parent.globalize.formatDate(date, { format: 'E' });\n if (this.parent.locale === 'zh') {\n dateString = dateString.slice(1);\n }\n else {\n dateString = dateString.slice(0, 1);\n }\n }\n else {\n dateString = this.parent.globalize.formatDate(date, { format: dayFormat });\n }\n return dateString;\n };\n /**\n * Custom Formatting.\n *\n * @param {Date} date .\n * @param {string} format .\n * @param {string} tier .\n * @param {string} mode .\n * @param {string | ITimelineFormatter} formatter .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.customFormat = function (date, format, tier, mode, formatter) {\n formatter = (typeof formatter === 'string' ? getValue(formatter, window) : formatter);\n return formatter(date, format, tier, mode);\n };\n /**\n * To create timeline template .\n *\n * @param {string} tier .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.createTimelineTemplate = function (tier) {\n var isFirstCell = false;\n var parent = this.parent;\n var parentTh = '';\n var parentTr = '';\n var mode = tier === 'topTier' ?\n parent.timelineModule.customTimelineSettings.topTier.unit : parent.timelineModule.customTimelineSettings.bottomTier.unit;\n var count = tier === 'topTier' ? parent.timelineModule.customTimelineSettings.topTier.count :\n parent.timelineModule.customTimelineSettings.bottomTier.count;\n var increment;\n var newTime;\n var startDate = new Date(this.parent.timelineModule.timelineStartDate.toString());\n var endDate = new Date(this.timelineRoundOffEndDate.toString());\n var scheduleDateCollection = [];\n do {\n // PDf export collection\n var timelineCell = {};\n timelineCell.startDate = new Date(startDate.getTime());\n if (mode === 'Month' && tier === 'bottomTier' && (count != 1) && scheduleDateCollection.length === 0) {\n isFirstCell = true;\n }\n parentTr = this.getHeaterTemplateString(new Date(startDate.toString()), mode, tier, false, count, timelineCell, isFirstCell);\n scheduleDateCollection.push(new Date(startDate.toString()));\n if (isFirstCell) {\n newTime = this.calculateQuarterEndDate(startDate, count).getTime();\n }\n else {\n increment = this.getIncrement(startDate, count, mode);\n newTime = startDate.getTime() + increment;\n }\n isFirstCell = false;\n startDate.setTime(newTime);\n if (startDate.getHours() === 5 && count === 2 && tier === 'bottomTier' &&\n this.parent.timelineSettings.bottomTier.unit === 'Hour') {\n startDate.setTime(startDate.getTime() - (1000 * 60 * 60));\n }\n if (startDate >= endDate) {\n /* eslint-disable-next-line */\n parentTr = this.getHeaterTemplateString(scheduleDateCollection[scheduleDateCollection.length - 1], mode, tier, true, count, timelineCell);\n }\n parentTh = parentTh + parentTr;\n var tierCollection = tier === 'topTier' ? this.topTierCollection : this.bottomTierCollection;\n timelineCell.endDate = new Date(startDate.getTime());\n tierCollection.push(timelineCell);\n } while ((startDate < endDate));\n return parentTh;\n };\n Timeline.prototype.updateTimelineAfterZooming = function (endDate, resized) {\n var timeDiff;\n var perDayWidth;\n var totWidth;\n var contentElement = document.getElementsByClassName('e-chart-scroll-container e-content')[0];\n if (!isNullOrUndefined(contentElement)) {\n var contentWidth = contentElement['offsetWidth'];\n var contentHeight = contentElement['offsetHeight'];\n var scrollHeight = document.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];\n timeDiff = Math.abs(this.timelineStartDate.getTime() - endDate.getTime());\n timeDiff = timeDiff / (1000 * 3600 * 24);\n if (this.bottomTier === 'None') {\n perDayWidth = this.getPerDayWidth(this.customTimelineSettings.timelineUnitSize, this.customTimelineSettings.topTier.count, this.topTier);\n }\n else {\n perDayWidth = this.getPerDayWidth(this.customTimelineSettings.timelineUnitSize, this.customTimelineSettings.bottomTier.count, this.bottomTier);\n }\n if (contentHeight < scrollHeight) {\n totWidth = (perDayWidth * timeDiff) + 17;\n }\n else {\n totWidth = (perDayWidth * timeDiff);\n }\n if (contentWidth >= totWidth) {\n var widthDiff = contentWidth - totWidth;\n widthDiff = Math.round(widthDiff / perDayWidth);\n endDate.setDate(endDate.getDate() + widthDiff);\n this.parent.timelineModule.timelineEndDate = endDate;\n if (resized) {\n this.parent.updateProjectDates(this.timelineStartDate, this.timelineEndDate, this.parent.isTimelineRoundOff);\n }\n }\n }\n };\n Timeline.prototype.getTimelineRoundOffEndDate = function (date) {\n var tierMode = this.topTier === 'None' ? this.bottomTier : this.topTier;\n var endDate = new Date(date.toString());\n if (this.parent.isTimelineRoundOff) {\n if (tierMode === 'Hour') {\n endDate.setMinutes(60);\n }\n else if (tierMode === 'Minutes') {\n endDate.setSeconds(60);\n }\n else {\n endDate.setHours(24, 0, 0, 0);\n }\n }\n if (isNullOrUndefined(this.parent.projectEndDate)) {\n this.updateTimelineAfterZooming(endDate, false);\n }\n return endDate;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {number} count .\n * @param {string} mode .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.getIncrement = function (startDate, count, mode) {\n var firstDay = new Date(startDate.getTime());\n var lastDay = new Date(startDate.getTime());\n var increment;\n switch (mode) {\n case 'Year':\n firstDay = startDate;\n lastDay = new Date(startDate.getFullYear() + (count - 1), 11, 31);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * 24);\n break;\n case 'Month':\n firstDay = startDate;\n lastDay = new Date(startDate.getFullYear(), startDate.getMonth() + count, 1);\n increment = lastDay.getTime() - firstDay.getTime();\n break;\n case 'Week':\n {\n var dayIndex = this.parent.timelineModule.customTimelineSettings.weekStartDay;\n var dayIntervel = startDate.getDay() < dayIndex ? (dayIndex - startDate.getDay()) :\n (6 - startDate.getDay()) + dayIndex;\n count = dayIntervel > 0 ? count - 1 : 0;\n lastDay.setHours(24, 0, 0, 0);\n dayIntervel = startDate.getDay() < dayIndex ? dayIntervel > 0 ?\n dayIntervel - 1 : dayIntervel : dayIntervel;\n lastDay.setDate(lastDay.getDate() + (dayIntervel + (7 * count)));\n increment = lastDay.getTime() - firstDay.getTime();\n break;\n }\n case 'Day':\n lastDay.setHours(24, 0, 0, 0);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * 24 * (count - 1));\n break;\n case 'Hour':\n lastDay.setMinutes(60);\n lastDay.setSeconds(0);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * (count - 1));\n increment = this.checkDate(firstDay, lastDay, increment, count);\n break;\n case 'Minutes':\n lastDay.setSeconds(60);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * (count - 1));\n break;\n }\n return increment;\n };\n Timeline.prototype.checkDate = function (firstDay, lastDay, increment, count) {\n var date = new Date(firstDay.getTime());\n date.setTime(date.getTime() + increment);\n if (count !== 1 && ((date.getTime() - lastDay.getTime()) / (1000 * 60 * 60)) != count && (firstDay.getTimezoneOffset() !== date.getTimezoneOffset())) {\n var diffCount = count - (date.getTime() - lastDay.getTime()) / (1000 * 60 * 60);\n if (!this.parent.isInDst(date)) {\n increment += (1000 * 60 * 60 * diffCount);\n }\n else if (this.parent.isInDst(date) && count !== 2) {\n increment -= (1000 * 60 * 60 * diffCount);\n }\n }\n return increment;\n };\n /**\n * Method to find header cell was weekend or not\n *\n * @param {string} mode .\n * @param {string} tier .\n * @param {Date} day .\n * @returns {boolean} .\n */\n Timeline.prototype.isWeekendHeaderCell = function (mode, tier, day) {\n return (mode === 'Day' || mode === 'Hour' || mode === 'Minutes') && (this.customTimelineSettings[tier].count === 1 ||\n mode === 'Hour' || mode === 'Minutes') &&\n this.parent.nonWorkingDayIndex.indexOf(day.getDay()) !== -1;\n };\n Timeline.prototype.calculateQuarterEndDate = function (date, count) {\n var month = date.getMonth();\n if (count === 3) {\n if (month >= 0 && month <= 2) {\n return new Date(date.getFullYear(), 3, 1);\n }\n else if (month >= 3 && month <= 5) {\n return new Date(date.getFullYear(), 6, 1);\n }\n else if (month >= 6 && month <= 8) {\n return new Date(date.getFullYear(), 9, 1);\n }\n else {\n return new Date(date.getFullYear() + 1, 0, 1);\n }\n }\n else {\n if (month >= 0 && month <= 5) {\n return new Date(date.getFullYear(), 6, 1);\n }\n else {\n return new Date(date.getFullYear() + 1, 0, 1);\n }\n }\n };\n /**\n * To construct template string.\n *\n * @param {Date} scheduleWeeks .\n * @param {string} mode .\n * @param {string} tier .\n * @param {boolean} isLast .\n * @param {number} count .\n * @param {TimelineFormat} timelineCell .\n * @returns {string} .\n * @private\n */\n /* eslint-disable-next-line */\n Timeline.prototype.getHeaterTemplateString = function (scheduleWeeks, mode, tier, isLast, count, timelineCell, isFirstCell) {\n var parentTr = '';\n var td = '';\n var format = tier === 'topTier' ?\n this.parent.timelineModule.customTimelineSettings.topTier.format :\n this.parent.timelineModule.customTimelineSettings.bottomTier.format;\n var formatter = tier === 'topTier' ?\n this.parent.timelineModule.customTimelineSettings.topTier.formatter :\n this.parent.timelineModule.customTimelineSettings.bottomTier.formatter;\n var thWidth;\n var date = isNullOrUndefined(formatter) ?\n this.parent.globalize.formatDate(scheduleWeeks, { format: this.parent.getDateFormat() }) :\n this.customFormat(scheduleWeeks, format, tier, mode, formatter);\n thWidth = (this.getIncrement(scheduleWeeks, count, mode) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth;\n var cellWidth = thWidth;\n thWidth = isLast || isFirstCell ? isLast ? this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.timelineRoundOffEndDate) : this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.calculateQuarterEndDate(scheduleWeeks, count))\n : thWidth;\n var isWeekendCell = this.isWeekendHeaderCell(mode, tier, scheduleWeeks);\n var textClassName = tier === 'topTier' ? ' e-gantt-top-cell-text' : '';\n var value = (isNullOrUndefined(formatter) ? this.formatDateHeader(format, scheduleWeeks) :\n this.customFormat(scheduleWeeks, format, tier, mode, formatter));\n td += this.parent.timelineModule.isSingleTier ?\n '';\n parentTr += td;\n parentTr += '';\n if ((this.isSingleTier || tier === 'topTier') && !isLast) {\n this.totalTimelineWidth = this.totalTimelineWidth + thWidth;\n }\n else if ((this.isSingleTier || tier === 'topTier') && isLast) {\n this.totalTimelineWidth = (this.totalTimelineWidth - cellWidth) + thWidth;\n }\n // PDf export collection\n timelineCell.value = value;\n timelineCell.isWeekend = isWeekendCell;\n timelineCell.width = cellWidth;\n return parentTr;\n };\n /**\n * To calculate last 'th' width.\n *\n * @param {string} mode .\n * @param {Date} scheduleWeeks .\n * @param {Date} endDate .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.calculateWidthBetweenTwoDate = function (mode, scheduleWeeks, endDate) {\n var timeDifference = (endDate.getTime() - scheduleWeeks.getTime());\n var balanceDay = (timeDifference / (1000 * 60 * 60 * 24));\n return balanceDay * this.parent.perDayWidth;\n };\n /**\n * To calculate timeline width.\n *\n * @returns {void} .\n * @private\n */\n Timeline.prototype.timelineWidthCalculation = function () {\n var timelineUnitSize = this.customTimelineSettings.timelineUnitSize;\n var bottomTierCount = this.customTimelineSettings.bottomTier.count;\n var topTierCount = this.customTimelineSettings.topTier.count;\n this.bottomTierCellWidth = timelineUnitSize;\n if (this.bottomTier === 'None') {\n this.parent.perDayWidth = this.getPerDayWidth(timelineUnitSize, topTierCount, this.topTier);\n }\n else {\n this.parent.perDayWidth = this.getPerDayWidth(timelineUnitSize, bottomTierCount, this.bottomTier);\n }\n this.topTierCellWidth = this.bottomTier !== 'None' ? this.topTier === 'Week' ?\n this.parent.perDayWidth * 7 : this.topTier === 'Hour' ?\n this.parent.perDayWidth / 24 : this.topTier === 'Minutes' ?\n this.parent.perDayWidth / (24 * 60) : this.parent.perDayWidth : timelineUnitSize;\n this.topTierCellWidth = this.isSingleTier ? this.topTierCellWidth : this.topTierCellWidth * topTierCount;\n };\n /**\n * To validate per day width.\n *\n * @param {number} timelineUnitSize .\n * @param {number} bottomTierCount .\n * @param {string} mode .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.getPerDayWidth = function (timelineUnitSize, bottomTierCount, mode) {\n var perDayWidth;\n switch (mode) {\n case 'Year':\n perDayWidth = (timelineUnitSize / bottomTierCount) / (12 * 28);\n break;\n case 'Month':\n perDayWidth = (timelineUnitSize / bottomTierCount) / 28;\n break;\n case 'Week':\n perDayWidth = (timelineUnitSize / bottomTierCount) / 7;\n break;\n case 'Day':\n perDayWidth = timelineUnitSize / bottomTierCount;\n break;\n case 'Hour':\n perDayWidth = (24 / bottomTierCount) * timelineUnitSize;\n break;\n case 'Minutes':\n perDayWidth = ((60 * 24) / bottomTierCount) * timelineUnitSize;\n break;\n }\n return perDayWidth;\n };\n /**\n * To validate project start date and end date.\n *\n * @returns {void} .\n * @private\n */\n Timeline.prototype.roundOffDays = function () {\n var startDate = this.parent.cloneProjectStartDate;\n var endDate = this.parent.cloneProjectEndDate;\n var tierMode = this.topTier === 'None' ? this.bottomTier : this.topTier;\n if (this.parent.isTimelineRoundOff) {\n if (tierMode === 'Year') {\n startDate = new Date(startDate.getFullYear(), 0, 1);\n endDate = new Date(endDate.getFullYear(), 11, 31);\n }\n else if (tierMode === 'Month') {\n startDate = new Date(startDate.getFullYear(), startDate.getMonth(), 1);\n endDate = new Date(endDate.getFullYear(), endDate.getMonth() + 1, 0);\n }\n else if (tierMode === 'Week') {\n var dayIndex = this.parent.timelineModule.customTimelineSettings.weekStartDay;\n var roundOffStartDate = startDate.getDay() < dayIndex ?\n (startDate.getDate()) - (7 - dayIndex + startDate.getDay()) :\n (startDate.getDate()) - startDate.getDay() + dayIndex;\n startDate.setDate(roundOffStartDate);\n var first = endDate.getDate() - endDate.getDay();\n var last = first + 6 + dayIndex;\n endDate.setDate(last);\n }\n if (tierMode === 'Hour') {\n startDate.setMinutes(0);\n }\n else if (tierMode === 'Minutes') {\n startDate.setSeconds(0);\n }\n else {\n startDate.setHours(0, 0, 0, 0);\n }\n }\n this.timelineStartDate = startDate;\n this.timelineEndDate = endDate;\n this.timelineRoundOffEndDate = this.getTimelineRoundOffEndDate(this.timelineEndDate);\n };\n /**\n * To validate project start date and end date.\n *\n * @param {string} mode .\n * @param {string} span .\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {void} .\n * @private\n */\n Timeline.prototype.updateScheduleDatesByToolBar = function (mode, span, startDate, endDate) {\n if (mode === 'Year') {\n if (span === 'prevTimeSpan') {\n if (startDate.getMonth() === 0) {\n startDate = new Date(startDate.getFullYear() - 1, 0, 1);\n }\n else {\n startDate = new Date(startDate.getFullYear(), 0, 1);\n }\n }\n else {\n if (endDate.getMonth() === 11) {\n endDate = new Date(endDate.getFullYear() + 1, 0, 1);\n }\n else {\n endDate = new Date(endDate.getFullYear(), 12, 1);\n }\n }\n }\n if (mode === 'Month') {\n if (span === 'prevTimeSpan') {\n if (startDate.getDate() === 1) {\n startDate = new Date(startDate.getFullYear(), startDate.getMonth() - 1, 1);\n }\n else {\n startDate = new Date(startDate.getFullYear(), startDate.getMonth(), 1);\n }\n }\n else {\n endDate = new Date(endDate.getFullYear(), endDate.getMonth() + 1, 1);\n }\n }\n if (mode === 'Week') {\n var dayIndex = this.parent.timelineModule.customTimelineSettings.weekStartDay;\n var dayIntervel = void 0;\n if (span === 'prevTimeSpan') {\n dayIntervel = startDate.getDay() < dayIndex ? 7 - (dayIndex - startDate.getDay()) :\n startDate.getDay() - dayIndex;\n startDate.setHours(0, 0, 0, 0);\n if (dayIntervel === 0) {\n startDate.setDate(startDate.getDate() - 7);\n }\n else {\n startDate.setDate(startDate.getDate() - dayIntervel);\n }\n }\n else {\n dayIntervel = endDate.getDay() < dayIndex ? (dayIndex - endDate.getDay()) :\n (7 - endDate.getDay()) + dayIndex;\n endDate.setHours(0, 0, 0, 0);\n if (dayIntervel === 0) {\n endDate.setDate(endDate.getDate() + 6);\n }\n else {\n endDate.setDate(endDate.getDate() + dayIntervel);\n }\n }\n }\n if (mode === 'Day') {\n if (span === 'prevTimeSpan') {\n if (startDate.getHours() === 0) {\n startDate.setTime(startDate.getTime() - (1000 * 60 * 60 * 24));\n }\n else {\n startDate.setHours(0);\n }\n }\n else {\n if (endDate.getHours() === 0) {\n endDate.setTime(endDate.getTime() + (1000 * 60 * 60 * 24));\n }\n else {\n endDate.setHours(24);\n }\n }\n }\n if (mode === 'Hour') {\n if (span === 'prevTimeSpan') {\n if (startDate.getMinutes() === 0) {\n startDate.setTime(startDate.getTime() - (1000 * 60 * 60));\n }\n else {\n startDate.setMinutes(0);\n }\n }\n else {\n if (endDate.getMinutes() === 0) {\n endDate.setTime(endDate.getTime() + (1000 * 60 * 60));\n }\n else {\n endDate.setMinutes(60);\n }\n }\n }\n if (mode === 'Minutes') {\n if (span === 'prevTimeSpan') {\n if (startDate.getSeconds() === 0) {\n startDate.setTime(startDate.getTime() - (1000 * 60));\n }\n else {\n startDate.setSeconds(0);\n }\n }\n else {\n if (endDate.getSeconds() === 0) {\n endDate.setTime(endDate.getTime() + (1000 * 60));\n }\n else {\n endDate.setSeconds(60);\n }\n }\n }\n this.parent.cloneProjectStartDate = startDate;\n this.parent.cloneProjectEndDate = endDate;\n };\n /**\n * To validate project start date and end date.\n *\n * @param {IGanttData[]} tempArray .\n * @param {string} action .\n * @returns {void} .\n * @private\n */\n Timeline.prototype.updateTimeLineOnEditing = function (tempArray, action) {\n if (tempArray[0].length >= 1) {\n for (var i = 0; i < tempArray.length; i++) {\n /* eslint-disable-next-line */\n var temp = tempArray[i];\n var filteredStartDateRecord = temp.filter(function (pdc) { return !isNullOrUndefined(pdc.ganttProperties.startDate); });\n var filteredEndDateRecord = temp.filter(function (pdc) { return !isNullOrUndefined(pdc.ganttProperties.endDate); });\n var minStartDate = filteredStartDateRecord.length > 0 ?\n new Date(DataUtil.aggregates.min(filteredStartDateRecord, 'ganttProperties.startDate')) : null;\n var maxEndDate = filteredEndDateRecord.length > 0 ?\n new Date(DataUtil.aggregates.max(filteredEndDateRecord, 'ganttProperties.endDate')) : null;\n var validStartDate = new Date(this.parent.dataOperation.checkStartDate(this.timelineStartDate).getTime());\n var validEndDate = new Date(this.parent.dataOperation.checkEndDate(this.timelineEndDate).getTime());\n var maxStartLeft = isNullOrUndefined(minStartDate) ?\n null : this.parent.dataOperation.getTaskLeft(minStartDate, false);\n var maxEndLeft = isNullOrUndefined(maxEndDate) ?\n null : this.parent.dataOperation.getTaskLeft(maxEndDate, false);\n var validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);\n var validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);\n var isChanged = void 0;\n var taskbarModule = this.parent.editModule.taskbarEditModule;\n if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) ||\n (!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)\n && taskbarModule.taskBarEditAction !== 'ProgressResizing' &&\n taskbarModule.taskBarEditAction !== 'RightResizing')) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {\n isChanged = 'prevTimeSpan';\n minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;\n }\n else {\n minStartDate = this.timelineStartDate;\n }\n if (!isNullOrUndefined(maxEndLeft) && (maxEndLeft >= (this.totalTimelineWidth - this.bottomTierCellWidth) ||\n maxEndLeft >= validEndLeft)) {\n isChanged = isChanged === 'prevTimeSpan' ? 'both' : 'nextTimeSpan';\n maxEndDate = maxEndDate < this.timelineEndDate ? this.timelineEndDate : maxEndDate;\n }\n else {\n maxEndDate = this.timelineEndDate;\n }\n if (isChanged) {\n this.performTimeSpanAction(isChanged, action, minStartDate, maxEndDate);\n }\n else if (!isNullOrUndefined(temp[0].ganttProperties.segments)) {\n this.parent.dataOperation.updateWidthLeft(temp[0]);\n }\n break;\n }\n }\n };\n /**\n * To validate project start date and end date on editing action\n *\n * @param {string} type .\n * @param {string} isFrom .\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {string} mode .\n * @returns {void} .\n * @private\n */\n Timeline.prototype.performTimeSpanAction = function (type, isFrom, startDate, endDate, mode) {\n mode = !isNullOrUndefined(mode) ? mode : this.parent.timelineModule.topTier === 'None' ?\n this.parent.timelineModule.bottomTier : this.parent.timelineModule.topTier;\n var projectStartDate = new Date(this.parent.cloneProjectStartDate.getTime());\n var projectEndDate = new Date(this.parent.cloneProjectEndDate.getTime());\n if (isFrom !== 'publicMethod' && type === 'both') {\n this.updateScheduleDatesByToolBar(mode, 'prevTimeSpan', startDate, endDate);\n this.updateScheduleDatesByToolBar(mode, 'nextTimeSpan', new Date(this.parent.cloneProjectStartDate.getTime()), endDate);\n }\n else {\n this.updateScheduleDatesByToolBar(mode, type, startDate, endDate);\n }\n var args = this.timeSpanActionEvent('actionBegin', type, isFrom);\n if (!args.cancel) {\n this.parent.updateProjectDates(args.projectStartDate, args.ProjectEndDate, args.isTimelineRoundOff, isFrom);\n if (type === 'prevTimeSpan' && isFrom === 'publicMethod') {\n this.parent.ganttChartModule.updateScrollLeft(0);\n }\n else if (type === 'nextTimeSpan' && isFrom === 'publicMethod') {\n this.parent.ganttChartModule.updateScrollLeft(this.parent.timelineModule.totalTimelineWidth);\n }\n else if (type === 'nextTimeSpan' && isFrom === 'TaskbarEditing') {\n var currentScrollLeft = document.getElementsByClassName('e-chart-scroll-container e-content')[0].scrollLeft;\n this.parent.element.querySelector('.e-timeline-header-container').scrollLeft = currentScrollLeft;\n }\n this.parent.timelineModule.timeSpanActionEvent('actionComplete', type, isFrom);\n }\n else {\n this.parent.cloneProjectStartDate = projectStartDate;\n this.parent.cloneProjectEndDate = projectEndDate;\n }\n };\n /**\n * To validate project start date and end date.\n *\n * @param {string} eventType .\n * @param {string} requestType .\n * @param {string} isFrom .\n * @returns {void}\n * @private\n */\n Timeline.prototype.timeSpanActionEvent = function (eventType, requestType, isFrom) {\n var args = {};\n args.projectStartDate = new Date(this.parent.cloneProjectStartDate.getTime());\n args.ProjectEndDate = new Date(this.parent.cloneProjectEndDate.getTime());\n args.requestType = isFrom === 'publicMethod' ? requestType : isFrom === 'beforeAdd' ?\n 'TimelineRefreshOnAdd' : isFrom === 'TaskbarEditing' ? 'TimelineRefreshOnEdit' : requestType;\n if (eventType === 'actionBegin') {\n args.isTimelineRoundOff = this.parent.isTimelineRoundOff;\n args.cancel = false;\n }\n args.action = 'TimescaleUpdate';\n this.parent.trigger(eventType, args);\n return args;\n };\n return Timeline;\n}());\nexport { Timeline };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Configures column collection in Gantt.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n merge(this, options);\n }\n return Column;\n}());\nexport { Column };\n","import { TreeGrid } from '@syncfusion/ej2-treegrid';\nimport { createElement, isNullOrUndefined, getValue, extend, EventHandler, deleteObject, remove } from '@syncfusion/ej2-base';\nimport { setValue } from '@syncfusion/ej2-base';\nimport { Deferred, Query } from '@syncfusion/ej2-data';\nimport { Column as GanttColumn } from '../models/column';\nimport { isCountRequired } from './utils';\n/**\n * TreeGrid related code goes here\n *\n * @param {object} args .\n * @returns {void} .\n */\nvar GanttTreeGrid = /** @class */ (function () {\n function GanttTreeGrid(parent) {\n var _this = this;\n this.previousScroll = { top: 0, left: 0 };\n this.queryCellInfo = function (args) {\n _this.parent.trigger('queryCellInfo', args);\n };\n this.headerCellInfo = function (args) {\n _this.parent.trigger('headerCellInfo', args);\n };\n this.rowDataBound = function (args) {\n _this.parent.trigger('rowDataBound', args);\n };\n this.columnMenuOpen = function (args) {\n _this.parent.notify('columnMenuOpen', args);\n _this.parent.trigger('columnMenuOpen', args);\n document.querySelector(\".e-colmenu\").addEventListener('mousemove', function (event) {\n var filPopOptions = document.querySelector(\".e-filter-popup\");\n var filOptions = document.querySelector(\".e-filter-item\");\n if (!isNullOrUndefined(filPopOptions)) {\n if (!filOptions.classList.contains('e-focused')) {\n remove(_this.parent.filterModule.filterMenuElement);\n }\n }\n });\n };\n this.columnMenuClick = function (args) {\n _this.parent.trigger('columnMenuClick', args);\n };\n // eslint-disable-next-line valid-jsdoc\n this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'ganttProperties'];\n for (var i = 0; i < keys.length; i++) {\n /* eslint-disable-next-line */\n var oldKey = old[keys[i]] instanceof Date ? new Date(old[keys[i]]).getTime() : old[keys[i]];\n /* eslint-disable-next-line */\n var currentKey = current[keys[i]] instanceof Date ? new Date(current[keys[i]]).getTime() : current[keys[i]];\n if (oldKey !== currentKey && excludeKeys.indexOf(keys[i]) === -1) {\n _this.parent.modifiedRecords.push(current);\n isEqual = false;\n break;\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n this.parent = parent;\n this.parent.treeGrid = new TreeGrid();\n this.parent.treeGrid.allowSelection = false;\n this.parent.treeGrid.allowKeyboard = this.parent.allowKeyboard;\n this.parent.treeGrid['${enableHtmlSanitizer}'] = this.parent.enableHtmlSanitizer;\n this.parent.treeGrid.enableImmutableMode = this.parent.enableImmutableMode;\n this.treeGridColumns = [];\n if (!this.parent.isLocaleChanged && this.parent.isLoad) {\n this.parent.previousGanttColumns = extend([], [], this.parent.columns, true);\n }\n this.validateGanttColumns();\n if (this.parent.isLocaleChanged) {\n this.parent.isLocaleChanged = false;\n }\n this.addEventListener();\n }\n GanttTreeGrid.prototype.addEventListener = function () {\n this.parent.on('renderPanels', this.createContainer, this);\n this.parent.on('chartScroll', this.updateScrollTop, this);\n this.parent.on('destroy', this.destroy, this);\n this.parent.treeGrid.on('renderReactTemplate', this.renderReactTemplate, this);\n };\n GanttTreeGrid.prototype.renderReactTemplate = function (args) {\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.renderTemplates();\n };\n GanttTreeGrid.prototype.createContainer = function () {\n //let height: number = this.parent.ganttHeight - this.parent.toolbarModule.element.offsetHeight - 46;\n this.treeGridElement = createElement('div', {\n id: 'treeGrid' + this.parent.element.id, className: 'e-gantt-tree-grid'\n // styles: 'height:' + height + 'px;'\n });\n var tempHeader = createElement('div', { className: 'e-gantt-temp-header' });\n this.parent.treeGridPane.appendChild(this.treeGridElement);\n this.treeGridElement.appendChild(tempHeader);\n this.parent.treeGridPane.classList.add('e-temp-content');\n };\n /**\n * Method to initiate TreeGrid\n *\n * @returns {void} .\n */\n GanttTreeGrid.prototype.renderTreeGrid = function () {\n this.composeProperties();\n this.bindEvents();\n var root = 'root';\n this.parent.treeGrid[root] = this.parent[root] ? this.parent[root] : this.parent;\n this.parent.treeGrid.appendTo(this.treeGridElement);\n this.wireEvents();\n };\n GanttTreeGrid.prototype.composeProperties = function () {\n this.parent.treeGrid.showColumnMenu = this.parent.showColumnMenu;\n this.parent.treeGrid.enableCollapseAll = this.parent.collapseAllParentTasks;\n this.parent.treeGrid.columnMenuItems = this.parent.columnMenuItems;\n this.parent.treeGrid.enableRtl = this.parent.enableRtl;\n this.parent.treeGrid.childMapping = isNullOrUndefined(this.parent.taskFields.child) ? '' : this.parent.taskFields.child;\n this.parent.treeGrid.treeColumnIndex = this.parent.treeColumnIndex;\n this.parent.treeGrid.columns = this.treeGridColumns;\n this.parent.treeGrid.loadingIndicator = this.parent.loadingIndicator;\n this.parent.treeGrid.enableVirtualMaskRow = this.parent.enableVirtualMaskRow;\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent)) {\n // In order to bind the observable data at load time, hasChildMapping is necessary to be mapped.\n this.parent.treeGrid.hasChildMapping = 'isParent';\n var count = getValue('count', this.parent.dataSource);\n this.parent.treeGrid.dataSource = { result: this.parent.flatData, count: count };\n }\n else {\n this.parent.treeGrid.hasChildMapping = null;\n this.parent.treeGrid.dataSource = this.parent.flatData;\n }\n this.parent.treeGrid.expandStateMapping = this.parent.taskFields.expandState;\n var isGantt = 'isGantt';\n this.parent.treeGrid[isGantt] = true;\n this.parent.treeGrid.rowHeight = this.parent.rowHeight;\n this.parent.treeGrid.gridLines = this.parent.gridLines;\n if (this.parent.searchSettings.fields.length !== 0 || this.parent.searchSettings.key !== '') {\n this.parent.treeGrid.searchSettings = this.parent.searchSettings;\n }\n var isJsComponent = 'isJsComponent';\n this.parent.treeGrid[isJsComponent] = true;\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n this.parent.treeGrid.height =\n this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['offsetHeight'] - 19;\n };\n GanttTreeGrid.prototype.getContentDiv = function () {\n return this.treeGridElement.querySelector('.e-content');\n };\n GanttTreeGrid.prototype.getHeaderDiv = function () {\n return this.treeGridElement.querySelector('.e-headercontent');\n };\n GanttTreeGrid.prototype.getScrollbarWidth = function () {\n var outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n outer.style.msOverflowStyle = 'scrollbar';\n var inner = document.createElement('div');\n outer.appendChild(inner);\n this.parent.element.appendChild(outer);\n var scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);\n outer.parentNode.removeChild(outer);\n return scrollbarWidth;\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttTreeGrid.prototype.ensureScrollBar = function () {\n var content = this.getContentDiv();\n var headerDiv = this.getHeaderDiv();\n var scrollWidth = this.getScrollbarWidth();\n var isMobile = /Android|Mac|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n if (scrollWidth !== 0) {\n content.style.cssText += 'width: calc(100% + ' + (scrollWidth + 1) + 'px);'; //actual scrollbar width 17 px but here scrollbar width set to 16px hence adding increment of 1\n }\n else {\n content.classList.add('e-gantt-scroll-padding');\n }\n if (scrollWidth === 0 && isMobile) {\n headerDiv.style.cssText += 'width: calc(100% + 17px);';\n }\n };\n GanttTreeGrid.prototype.bindEvents = function () {\n this.parent.treeGrid.dataBound = this.dataBound.bind(this);\n this.parent.treeGrid.collapsing = this.collapsing.bind(this);\n this.parent.treeGrid.collapsed = this.collapsed.bind(this);\n this.parent.treeGrid.expanding = this.expanding.bind(this);\n this.parent.treeGrid.expanded = this.expanded.bind(this);\n this.parent.treeGrid.actionBegin = this.actionBegin.bind(this);\n this.parent.treeGrid.actionComplete = this.treeActionComplete.bind(this);\n this.parent.treeGrid.created = this.created.bind(this);\n this.parent.treeGrid.actionFailure = this.actionFailure.bind(this);\n this.parent.treeGrid.queryCellInfo = this.queryCellInfo.bind(this);\n this.parent.treeGrid.headerCellInfo = this.headerCellInfo.bind(this);\n this.parent.treeGrid.rowDataBound = this.rowDataBound.bind(this);\n this.parent.treeGrid.columnMenuOpen = this.columnMenuOpen.bind(this);\n this.parent.treeGrid.columnMenuClick = this.columnMenuClick.bind(this);\n this.parent.treeGrid.beforeDataBound = this.beforeDataBound.bind(this);\n this.parent.treeGrid.dataStateChange = this.dataStateChange.bind(this);\n };\n GanttTreeGrid.prototype.beforeDataBound = function (args) {\n this.parent.updatedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n getValue('virtualScrollModule.visualData', this.parent.treeGrid) : getValue('result', args);\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n this.parent.updateContentHeight(args);\n }\n setValue('contentModule.objectEqualityChecker', this.objectEqualityChecker, this.parent.treeGrid.grid);\n };\n GanttTreeGrid.prototype.dataBound = function (args) {\n this.ensureScrollBar();\n this.parent.treeDataBound(args);\n if (this.parent.isVirtualScroll) {\n if ((this.parent.enableVirtualMaskRow && this.parent.enableVirtualization) ||\n (this.parent.enableVirtualization && !this.parent.enableVirtualMaskRow && this.parent.loadingIndicator.indicatorType === \"Shimmer\") ||\n (this.parent.loadingIndicator.indicatorType === \"Shimmer\")) {\n this.parent.hideMaskRow();\n }\n this.parent.isVirtualScroll = false;\n }\n this.prevCurrentView = extend([], [], this.parent.currentViewData, true);\n };\n GanttTreeGrid.prototype.dataStateChange = function (args) {\n if (args.action && args.action.requestType === 'refresh') {\n this.parent.treeGrid.dataSource = {\n result: getValue('result', this.parent.treeGrid.dataSource),\n count: getValue('count', this.parent.treeGrid.dataSource)\n };\n }\n this.parent.trigger('dataStateChange', args);\n };\n GanttTreeGrid.prototype.collapsing = function (args) {\n // Collapsing event\n var callBackPromise = new Deferred();\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart) {\n var collapsingArgs = this.createExpandCollapseArgs(args);\n this.parent.ganttChartModule.collapseGanttRow(collapsingArgs);\n setValue('cancel', getValue('cancel', collapsingArgs), args);\n }\n };\n GanttTreeGrid.prototype.expanding = function (args) {\n // Expanding event\n var callBackPromise = new Deferred();\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart) {\n var expandingArgs = this.createExpandCollapseArgs(args);\n this.parent.ganttChartModule.expandGanttRow(expandingArgs);\n setValue('cancel', getValue('cancel', expandingArgs), args);\n }\n };\n GanttTreeGrid.prototype.collapsed = function (args) {\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart && !this.parent.isExpandCollapseLevelMethod) {\n var collapsedArgs = this.createExpandCollapseArgs(args);\n this.parent.ganttChartModule.collapsedGanttRow(collapsedArgs);\n if (this.parent.viewType === 'ResourceView' && !this.parent.allowTaskbarOverlap && collapsedArgs['gridRow']) {\n collapsedArgs['gridRow'].style.height = collapsedArgs['chartRow'].style.height;\n this.parent.contentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n };\n GanttTreeGrid.prototype.expanded = function (args) {\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart && !this.parent.isExpandCollapseLevelMethod) {\n if (!args['data'].length) {\n var expandedArgs = this.createExpandCollapseArgs(args);\n this.parent.ganttChartModule.expandedGanttRow(expandedArgs);\n if (this.parent.viewType === 'ResourceView' && !this.parent.allowTaskbarOverlap && args['row']) {\n args['row'].style.height = this.parent.rowHeight + 'px';\n this.parent.contentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n }\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n };\n GanttTreeGrid.prototype.actionBegin = function (args) {\n this.parent.notify('actionBegin', args);\n var flag = getValue('doubleClickTarget', this.parent.treeGrid.editModule);\n if (flag !== null) {\n setValue('doubleClickTarget', null, this.parent.treeGrid.editModule);\n }\n this.parent.trigger('actionBegin', args);\n if (args.requestType != \"virtualscroll\" && args.type != \"edit\" && args.requestType != \"beginEdit\") {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n }\n }; // eslint-disable-next-line\n GanttTreeGrid.prototype.created = function (args) {\n this.updateKeyConfigSettings();\n };\n GanttTreeGrid.prototype.actionFailure = function (args) {\n this.parent.trigger('actionFailure', args);\n };\n GanttTreeGrid.prototype.createExpandCollapseArgs = function (args) {\n var record = getValue('data', args);\n var gridRow = getValue('row', args);\n var chartRow;\n chartRow = this.parent.ganttChartModule.getChartRows()[this.parent.currentViewData.indexOf(record)];\n var eventArgs = { data: record, gridRow: gridRow, chartRow: chartRow, cancel: false };\n return eventArgs;\n };\n GanttTreeGrid.prototype.treeActionComplete = function (args) {\n var updatedArgs = extend({}, args);\n if (getValue('requestType', args) === 'sorting') {\n this.parent.notify('updateModel', {});\n deleteObject(updatedArgs, 'isFrozen');\n }\n else if (getValue('requestType', args) === 'filtering') {\n this.parent.notify('updateModel', {});\n var focussedElement = this.parent.element.querySelector('.e-treegrid');\n focussedElement.focus();\n }\n else if (getValue('type', args) === 'save') {\n if (this.parent.editModule && this.parent.editModule.cellEditModule) {\n var data = getValue('data', args);\n if (!isNullOrUndefined(data) && !isNullOrUndefined(this.parent.getTaskByUniqueID(data.uniqueID))) {\n /* eslint-disable-next-line */\n this.parent.getTaskByUniqueID(data.uniqueID).taskData[this.parent.taskFields.duration] = data.taskData[this.parent.taskFields.duration];\n if (!isNullOrUndefined(data.taskData[this.parent.taskFields.resourceInfo])) {\n /* eslint-disable-next-line */\n this.parent.getTaskByUniqueID(data.uniqueID).taskData[this.parent.taskFields.resourceInfo] = data.taskData[this.parent.taskFields.resourceInfo];\n }\n }\n this.parent.editModule.cellEditModule.initiateCellEdit(args, this.currentEditRow);\n this.currentEditRow = {};\n }\n }\n if (getValue('requestType', args) === 'filterafteropen') {\n this.parent.notify('actionComplete', args);\n }\n if (getValue('requestType', args) === 'searching') {\n this.parent.notify('actionComplete', args);\n }\n if (!isNullOrUndefined(getValue('batchChanges', args)) && !isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n if (this.parent.isCancelled) {\n setValue('requestType', 'cancel', updatedArgs);\n setValue('action', 'CellEditing', updatedArgs);\n this.parent.isCancelled = false;\n }\n if (getValue('requestType', args) === 'refresh' && isNullOrUndefined(getValue('type', args)) && this.parent.addDeleteRecord) {\n if (this.parent.selectedRowIndex != -1) {\n this.parent.selectRow(this.parent.selectedRowIndex);\n if (this.parent.selectedRowIndex > this.parent.currentViewData.length - 1) {\n this.parent.selectedRowIndex = -1;\n }\n }\n else {\n this.parent.selectRow(0);\n }\n this.parent.addDeleteRecord = false;\n }\n this.parent.trigger('actionComplete', updatedArgs);\n if (this.parent.viewType === 'ResourceView' && !this.parent.allowTaskbarOverlap && this.parent.showOverAllocation) {\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n if (this.parent.currentViewData[i].hasChildRecords && !this.parent.currentViewData[i].expanded) {\n this.parent.chartRowsModule.updateDragDropRecords(this.parent.currentViewData[i]);\n }\n }\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n };\n GanttTreeGrid.prototype.updateKeyConfigSettings = function () {\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.delete;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.insert;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.upArrow;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.downArrow;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.ctrlHome;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.ctrlEnd;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.enter;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.tab;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.shiftTab;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.enter;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.upArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.downArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlShiftUpArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlShiftDownArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlUpArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlDownArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.tab;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.shiftTab;\n };\n /**\n * Method to bind internal events on TreeGrid element\n *\n * @returns {void} .\n */\n GanttTreeGrid.prototype.wireEvents = function () {\n var content = this.parent.treeGrid.element.querySelector('.e-content');\n if (content) {\n EventHandler.add(content, 'scroll', this.scrollHandler, this);\n }\n if (this.parent.isAdaptive) {\n EventHandler.add(this.parent.treeGridPane, 'click', this.treeGridClickHandler, this);\n }\n };\n GanttTreeGrid.prototype.unWireEvents = function () {\n var content = this.parent.treeGrid.element &&\n this.parent.treeGrid.element.querySelector('.e-content');\n if (content) {\n EventHandler.remove(content, 'scroll', this.scrollHandler);\n }\n if (this.parent.isAdaptive) {\n EventHandler.remove(this.parent.treeGridPane, 'click', this.treeGridClickHandler);\n }\n };\n // eslint-disable-next-line\n GanttTreeGrid.prototype.scrollHandler = function (e) {\n var content = this.parent.treeGrid.element.querySelector('.e-content');\n if (content.scrollTop !== this.previousScroll.top) {\n this.parent.notify('grid-scroll', { top: content.scrollTop });\n }\n this.previousScroll.top = content.scrollTop;\n if (this.parent.contextMenuModule && this.parent.contextMenuModule.isOpen) {\n this.parent.contextMenuModule.contextMenu.close();\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttTreeGrid.prototype.validateGanttColumns = function () {\n var ganttObj = this.parent;\n var length = ganttObj.columns.length;\n var tasks = this.parent.taskFields;\n this.parent.columnMapping = {};\n this.parent.columnByField = {};\n this.parent.customColumns = [];\n var tasksMapping = ['id', 'name', 'startDate', 'endDate', 'duration', 'dependency',\n 'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type', 'milestone'];\n var _loop_1 = function (i) {\n var column = {};\n if (typeof ganttObj.columns[i] === 'string') {\n column.field = ganttObj.columns[i];\n }\n else {\n column = ganttObj.columns[i];\n }\n var columnName = [];\n if (tasksMapping.length > 0) {\n columnName = tasksMapping.filter(function (name) {\n return column.field === tasks[name];\n });\n }\n if (columnName.length === 0) {\n if (column.field === this_1.parent.resourceFields.group) {\n return \"continue\";\n }\n this_1.parent.customColumns.push(column.field);\n column.headerText = column.headerText ? column.headerText : column.field;\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = column.type ? column.type : 'string';\n this_1.bindTreeGridColumnProperties(column, true);\n return \"continue\";\n }\n else {\n var index = tasksMapping.indexOf(columnName[0]);\n tasksMapping.splice(index, 1);\n this_1.createTreeGridColumn(column, true);\n this_1.parent.columnMapping[columnName[0]] = column.field;\n }\n };\n var this_1 = this;\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n /** Create default columns with task settings property */\n for (var j = 0; j < tasksMapping.length; j++) {\n var column = {};\n if (!isNullOrUndefined(tasks[tasksMapping[j]])) {\n column.field = tasks[tasksMapping[j]];\n this.createTreeGridColumn(column, length === 0);\n this.parent.columnMapping[tasksMapping[j]] = column.field;\n }\n }\n if (this.parent.viewType !== 'ProjectView') {\n var column = {};\n this.composeUniqueIDColumn(column);\n this.createTreeGridColumn(column, true);\n }\n };\n /**\n *\n * @param {GanttColumnModel} column .\n * @param {boolean} isDefined .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.createTreeGridColumn = function (column, isDefined) {\n var taskSettings = this.parent.taskFields;\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n column.disableHtmlEncode = !isNullOrUndefined(column.disableHtmlEncode) ? column.disableHtmlEncode : this.parent.disableHtmlEncode;\n if (taskSettings.id !== column.field) {\n column.clipMode = column.clipMode ? column.clipMode : 'EllipsisWithTooltip';\n }\n if (taskSettings.id === column.field) {\n /** Id column */\n this.composeIDColumn(column);\n }\n else if (taskSettings.name === column.field) {\n /** Name column */\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('name');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('name');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = column.type ? column.type : 'string';\n }\n else if (taskSettings.startDate === column.field) {\n /** Name column */\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('startDate');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('startDate');\n }\n column.editType = column.editType ? column.editType :\n this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';\n column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };\n column.width = column.width ? column.width : 150;\n column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };\n }\n else if (taskSettings.endDate === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('endDate');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('endDate');\n }\n column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };\n column.editType = column.editType ? column.editType :\n this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';\n column.width = column.width ? column.width : 150;\n column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };\n }\n else if (taskSettings.duration === column.field) {\n column.width = column.width ? column.width : 150;\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('duration');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('duration');\n }\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : !isNullOrUndefined(column.edit) ? null :\n this.durationValueAccessor.bind(this);\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = column.type ? column.type : 'string';\n }\n else if (taskSettings.progress === column.field) {\n this.composeProgressColumn(column);\n }\n else if (taskSettings.dependency === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('dependency');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('dependency');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = 'string';\n column.allowFiltering = column.allowFiltering === false ? false : true;\n }\n else if (taskSettings.resourceInfo === column.field) {\n this.composeResourceColumn(column);\n }\n else if (taskSettings.notes === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('notes');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('notes');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n if (!this.parent.showInlineNotes) {\n if (!column.template) {\n column.template = '
' +\n '
';\n }\n }\n }\n else if (taskSettings.baselineStartDate === column.field ||\n taskSettings.baselineEndDate === column.field) {\n var colName = (taskSettings.baselineEndDate === column.field) ? 'baselineEndDate' :\n 'baselineStartDate';\n column.width = column.width ? column.width : 150;\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant(colName);\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant(colName);\n }\n column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };\n column.editType = column.editType ? column.editType :\n this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';\n }\n else if (taskSettings.work === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('work');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('work');\n }\n column.width = column.width ? column.width : 150;\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.workValueAccessor.bind(this);\n column.editType = column.editType ? column.editType : 'numericedit';\n }\n else if (taskSettings.type === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('taskType');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('taskType');\n }\n column.width = column.width ? column.width : 150;\n //column.type = 'string';\n column.editType = 'dropdownedit';\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.taskTypeValueAccessor.bind(this);\n }\n else if (taskSettings.manual === column.field && this.parent.taskMode === 'Custom') {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('taskMode');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('taskMode');\n }\n column.width = column.width ? column.width : 120;\n column.editType = column.editType ? column.editType : 'dropdownedit';\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.modeValueAccessor.bind(this);\n column.edit = {\n params: {\n query: new Query(),\n dataSource: [\n { id: 1, text: this.parent.localeObj.getConstant('manual'), value: true },\n { id: 2, text: this.parent.localeObj.getConstant('auto'), value: false }\n ],\n fields: { text: 'text', value: 'value' }\n }\n };\n }\n this.bindTreeGridColumnProperties(column, isDefined);\n };\n /**\n * Compose Resource columns\n *\n * @param {GanttColumnModel} column .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.composeResourceColumn = function (column) {\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('resourceName');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('resourceName');\n }\n column.width = column.width ? column.width : 150;\n column.type = 'string';\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.resourceValueAccessor.bind(this);\n column.allowFiltering = column.allowFiltering === false ? false : true;\n };\n /**\n * @param {IGanttData} data .\n * @returns {object} .\n * @private\n */\n GanttTreeGrid.prototype.getResourceIds = function (data) {\n var value = getValue(this.parent.taskFields.resourceInfo, data.taskData);\n var id = [];\n if (!isNullOrUndefined(value)) {\n for (var i = 0; i < value.length; i++) {\n id.push(typeof value[i] === 'object' ? value[i][this.parent.resourceFields.id] : value[i]);\n }\n return id;\n }\n else {\n return value;\n }\n };\n /**\n * Create Id column\n *\n * @param {GanttColumnModel} column .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.composeIDColumn = function (column) {\n var isProjectView = this.parent.viewType === 'ProjectView';\n var lengthDataSource = this.parent.dataSource['length'];\n var taskIDName;\n column.isPrimaryKey = isProjectView ? true : false;\n if (this.parent.isLocaleChanged) {\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n if (previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('id');\n }\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('id');\n }\n column.width = column.width ? column.width : 100;\n for (var i = 0; i < lengthDataSource; i++) {\n if (!isNullOrUndefined(this.parent.dataSource[i][this.parent.taskFields.id])) {\n taskIDName = this.parent.dataSource[i][this.parent.taskFields.id];\n break;\n }\n }\n if (typeof (taskIDName) === \"string\" || isNullOrUndefined(taskIDName)) {\n if (this.parent.viewType === 'ResourceView') {\n column.allowEditing = column.allowEditing ? column.allowEditing : false;\n }\n else {\n column.allowEditing = column.allowEditing ? column.allowEditing : true;\n }\n column.editType = column.editType ? column.editType : 'stringedit';\n }\n else {\n column.allowEditing = column.allowEditing ? column.allowEditing : false;\n column.editType = column.editType ? column.editType : 'numericedit';\n }\n column.valueAccessor = isProjectView ? null : this.idValueAccessor.bind(this);\n };\n GanttTreeGrid.prototype.composeUniqueIDColumn = function (column) {\n column.field = 'rowUniqueID';\n column.isPrimaryKey = true;\n column.headerText = 'UniqueID';\n column.allowEditing = false;\n column.visible = false;\n };\n /**\n * Create progress column\n *\n * @param {GanttColumnModel} column .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.composeProgressColumn = function (column) {\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('progress');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('progress');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'numericedit';\n };\n /**\n * @param {GanttColumnModel} newGanttColumn .\n * @param {boolean} isDefined .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.bindTreeGridColumnProperties = function (newGanttColumn, isDefined) {\n var treeGridColumn = {};\n var ganttColumn = {};\n for (var _i = 0, _a = Object.keys(newGanttColumn); _i < _a.length; _i++) {\n var prop = _a[_i];\n treeGridColumn[prop] = ganttColumn[prop] = newGanttColumn[prop];\n }\n this.parent.columnByField[ganttColumn.field] = ganttColumn;\n this.parent.ganttColumns.push(new GanttColumn(ganttColumn));\n if (isDefined) {\n this.treeGridColumns.push(treeGridColumn);\n }\n }; // eslint-disable-next-line\n GanttTreeGrid.prototype.durationValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);\n }\n return '';\n }; // eslint-disable-next-line\n GanttTreeGrid.prototype.resourceValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return ganttProp.resourceNames;\n }\n return '';\n };\n GanttTreeGrid.prototype.workValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return this.parent.dataOperation.getWorkString(ganttProp.work, ganttProp.workUnit);\n }\n return '';\n };\n GanttTreeGrid.prototype.taskTypeValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return ganttProp.taskType;\n }\n return '';\n };\n GanttTreeGrid.prototype.modeValueAccessor = function (field, data, column) {\n if (data[field]) {\n return 'Manual';\n }\n else {\n return 'Auto';\n }\n };\n GanttTreeGrid.prototype.idValueAccessor = function (field, data, column) {\n return data.level === 0 ? 'R-' + data.ganttProperties.taskId : 'T-' + data.ganttProperties.taskId;\n };\n GanttTreeGrid.prototype.updateScrollTop = function (args) {\n var newScrollTop;\n if (getValue('top', args) > (this.parent.flatData.length * this.parent.rowHeight)) {\n newScrollTop = getValue('top', args) - document.getElementsByClassName('e-chart-scroll-container e-content')[0]['offsetHeight'];\n }\n else {\n newScrollTop = getValue('top', args);\n }\n this.treeGridElement.querySelector('.e-content').scrollTop = newScrollTop;\n this.previousScroll.top = this.treeGridElement.querySelector('.e-content').scrollTop;\n };\n GanttTreeGrid.prototype.treeGridClickHandler = function (e) {\n this.parent.notify('treeGridClick', e);\n };\n GanttTreeGrid.prototype.removeEventListener = function () {\n this.parent.off('renderPanels', this.createContainer);\n this.parent.off('chartScroll', this.updateScrollTop);\n this.parent.off('destroy', this.destroy);\n this.parent.treeGrid.off('reactTemplateRender', this.renderReactTemplate);\n };\n GanttTreeGrid.prototype.destroy = function () {\n this.removeEventListener();\n this.unWireEvents();\n if (this.parent.treeGrid.element) {\n this.parent.treeGrid.destroy();\n }\n };\n return GanttTreeGrid;\n}());\nexport { GanttTreeGrid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Gantt.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from \"@syncfusion/ej2-base\";\n/**\n * Configures the Loading Indicator of the Gantt.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines working time of day in project.\n */\nvar DayWorkingTime = /** @class */ (function (_super) {\n __extends(DayWorkingTime, _super);\n function DayWorkingTime() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], DayWorkingTime.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], DayWorkingTime.prototype, \"to\", void 0);\n return DayWorkingTime;\n}(ChildProperty));\nexport { DayWorkingTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines holidays of project.\n */\nvar Holiday = /** @class */ (function (_super) {\n __extends(Holiday, _super);\n function Holiday() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Holiday.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], Holiday.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], Holiday.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Holiday.prototype, \"cssClass\", void 0);\n return Holiday;\n}(ChildProperty));\nexport { Holiday };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines event marker collection in Gantt.\n */\nvar EventMarker = /** @class */ (function (_super) {\n __extends(EventMarker, _super);\n function EventMarker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EventMarker.prototype, \"day\", void 0);\n __decorate([\n Property(null)\n ], EventMarker.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], EventMarker.prototype, \"cssClass\", void 0);\n return EventMarker;\n}(ChildProperty));\nexport { EventMarker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines mapping property to get task details from data source.\n */\nvar TaskFields = /** @class */ (function (_super) {\n __extends(TaskFields, _super);\n function TaskFields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"id\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"startDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"endDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"dependency\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"progress\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"child\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"milestone\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"duration\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"durationUnit\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"baselineStartDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"baselineEndDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"resourceInfo\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"expandState\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"indicators\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"notes\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"work\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"manual\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"segments\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"segmentId\", void 0);\n return TaskFields;\n}(ChildProperty));\nexport { TaskFields };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\n/**\n * Configures timeline settings of Gantt.\n */\nvar TimelineTierSettings = /** @class */ (function (_super) {\n __extends(TimelineTierSettings, _super);\n function TimelineTierSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineTierSettings.prototype, \"format\", void 0);\n __decorate([\n Property('None')\n ], TimelineTierSettings.prototype, \"unit\", void 0);\n __decorate([\n Property(1)\n ], TimelineTierSettings.prototype, \"count\", void 0);\n __decorate([\n Property(null)\n ], TimelineTierSettings.prototype, \"formatter\", void 0);\n return TimelineTierSettings;\n}(ChildProperty));\nexport { TimelineTierSettings };\n/**\n * Configures the timeline settings property in the Gantt.\n */\nvar TimelineSettings = /** @class */ (function (_super) {\n __extends(TimelineSettings, _super);\n function TimelineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Week')\n ], TimelineSettings.prototype, \"timelineViewMode\", void 0);\n __decorate([\n Complex({}, TimelineTierSettings)\n ], TimelineSettings.prototype, \"topTier\", void 0);\n __decorate([\n Complex({}, TimelineTierSettings)\n ], TimelineSettings.prototype, \"bottomTier\", void 0);\n __decorate([\n Property(33)\n ], TimelineSettings.prototype, \"timelineUnitSize\", void 0);\n __decorate([\n Property(0)\n ], TimelineSettings.prototype, \"weekStartDay\", void 0);\n __decorate([\n Property(null)\n ], TimelineSettings.prototype, \"weekendBackground\", void 0);\n __decorate([\n Property(true)\n ], TimelineSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property(true)\n ], TimelineSettings.prototype, \"updateTimescaleView\", void 0);\n return TimelineSettings;\n}(ChildProperty));\nexport { TimelineSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures edit settings of Gantt.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Auto')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowTaskbarEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the Gantt.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines labels for task, this will be placed right, left and inner side of taskbar.\n */\nvar LabelSettings = /** @class */ (function (_super) {\n __extends(LabelSettings, _super);\n function LabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LabelSettings.prototype, \"rightLabel\", void 0);\n __decorate([\n Property(null)\n ], LabelSettings.prototype, \"leftLabel\", void 0);\n __decorate([\n Property(null)\n ], LabelSettings.prototype, \"taskLabel\", void 0);\n return LabelSettings;\n}(ChildProperty));\nexport { LabelSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures tooltip settings for Gantt.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"taskbar\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"baseline\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"connectorLine\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"editing\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection } from '@syncfusion/ej2-base';\nimport { Predicate } from '@syncfusion/ej2-grids';\n/**\n * Configures the filtering behavior of the Gantt.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('Menu')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures splitter position and splitter bar.\n */\nvar SplitterSettings = /** @class */ (function (_super) {\n __extends(SplitterSettings, _super);\n function SplitterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], SplitterSettings.prototype, \"position\", void 0);\n __decorate([\n Property(-1)\n ], SplitterSettings.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(4)\n ], SplitterSettings.prototype, \"separatorSize\", void 0);\n __decorate([\n Property(null)\n ], SplitterSettings.prototype, \"minimum\", void 0);\n __decorate([\n Property('Default')\n ], SplitterSettings.prototype, \"view\", void 0);\n return SplitterSettings;\n}(ChildProperty));\nexport { SplitterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Defines mapping property to get resource details from resource collection.\n */\nvar ResourceFields = /** @class */ (function (_super) {\n __extends(ResourceFields, _super);\n function ResourceFields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"id\", void 0);\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"unit\", void 0);\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"group\", void 0);\n return ResourceFields;\n}(ChildProperty));\nexport { ResourceFields };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the searching behavior of the Gantt.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('Parent')\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement, isNullOrUndefined, extend, compile, getValue, setValue, SanitizeHtmlHelper, append } from '@syncfusion/ej2-base';\nimport { formatUnit, addClass } from '@syncfusion/ej2-base';\nimport { isScheduledTask } from '../base/utils';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as cls from '../base/css-constants';\nimport { DateProcessor } from '../base/date-processor';\n/**\n * To render the chart rows in Gantt\n */\nvar ChartRows = /** @class */ (function (_super) {\n __extends(ChartRows, _super);\n function ChartRows(ganttObj) {\n var _this = _super.call(this, ganttObj) || this;\n _this.taskBarHeight = 0;\n _this.milestoneHeight = 0;\n _this.milesStoneRadius = 0;\n _this.baselineTop = 0;\n _this.baselineHeight = 8;\n _this.touchLeftConnectorpoint = '';\n _this.touchRightConnectorpoint = '';\n _this.dropSplit = false;\n _this.refreshedTr = [];\n _this.refreshedData = [];\n _this.isUpdated = true;\n _this.parent = ganttObj;\n _this.initPublicProp();\n _this.addEventListener();\n return _this;\n }\n /**\n * To initialize the public property.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.initPublicProp = function () {\n this.ganttChartTableBody = null;\n };\n ChartRows.prototype.addEventListener = function () {\n this.parent.on('renderPanels', this.createChartTable, this);\n this.parent.on('dataReady', this.initiateTemplates, this);\n this.parent.on('destroy', this.destroy, this);\n };\n ChartRows.prototype.refreshChartByTimeline = function () {\n this.taskTable.style.width = formatUnit(this.parent.timelineModule.totalTimelineWidth);\n var prevDate = getValue('prevProjectStartDate', this.parent.dataOperation);\n var isUpdated = false;\n if (prevDate) {\n isUpdated = prevDate.getTime() === this.parent.cloneProjectStartDate.getTime();\n }\n this.isUpdated = this.parent.isFromOnPropertyChange && isUpdated &&\n getValue('mutableData', this.parent.treeGrid.grid.contentModule) ? true : false;\n this.refreshGanttRows();\n this.isUpdated = true;\n };\n /**\n * To render chart rows.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.createChartTable = function () {\n this.taskTable = createElement('table', {\n className: cls.taskTable + ' ' + cls.zeroSpacing, id: 'GanttTaskTable' + this.parent.element.id,\n styles: 'position: absolute;width:' + this.parent.timelineModule.totalTimelineWidth + 'px;',\n attrs: { cellspacing: '0.25px' }\n });\n var colgroup = createElement('colgroup');\n var column = createElement('col', { styles: 'width:' + this.parent.timelineModule.totalTimelineWidth + 'px;' });\n colgroup.appendChild(column);\n this.taskTable.appendChild(colgroup);\n this.ganttChartTableBody = createElement('tbody', {\n id: this.parent.element.id + 'GanttTaskTableBody'\n });\n this.taskTable.appendChild(this.ganttChartTableBody);\n this.parent.ganttChartModule.chartBodyContent.appendChild(this.taskTable);\n };\n ChartRows.prototype.initiateTemplates = function () {\n this.taskTable.style.width = formatUnit(this.parent.timelineModule.totalTimelineWidth);\n this.initChartHelperPrivateVariable();\n this.initializeChartTemplate();\n };\n /**\n * To render chart rows.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.renderChartRows = function () {\n this.createTaskbarTemplate();\n this.parent.isGanttChartRendered = true;\n };\n /**\n * To get gantt Indicator.\n *\n * @param {IIndicator} indicator .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getIndicatorNode = function (indicator) {\n var templateString = '';\n return this.createDivElement(templateString);\n };\n /**\n * To get gantt Indicator.\n *\n * @param {Date | string} date .\n * @returns {number} .\n * @private\n */\n ChartRows.prototype.getIndicatorleft = function (date) {\n date = this.parent.dateValidationModule.getDateFromFormat(date);\n var left = this.parent.dataOperation.getTaskLeft(date, false);\n return left;\n };\n /**\n * To get child taskbar Node.\n *\n * @param {number} i .\n * @param {NodeList} rootElement .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getChildTaskbarNode = function (i, rootElement) {\n var childTaskbarNode = null;\n var data = this.templateData;\n var direction;\n if (this.parent.enableRtl) {\n direction = 'right:';\n }\n else {\n direction = 'left:';\n }\n if (this.childTaskbarTemplateFunction) {\n childTaskbarNode = this.childTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'TaskbarTemplate', this.getTemplateID('TaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);\n }\n else {\n var labelString = '';\n var taskLabel = '';\n var taskbarInnerDiv = void 0;\n var progressDiv = void 0;\n if (data.ganttProperties.startDate && data.ganttProperties.endDate\n && data.ganttProperties.duration) {\n taskbarInnerDiv = this.createDivElement('
');\n progressDiv = this.createDivElement('
' +\n '
');\n }\n var tempDiv = createElement('div');\n if (this.taskLabelTemplateFunction && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {\n var taskLabelTemplateNode = this.taskLabelTemplateFunction(extend({ index: i }, data), this.parent, 'TaskLabelTemplate', this.getTemplateID('TaskLabelTemplate'), false, undefined, progressDiv[0]);\n if (taskLabelTemplateNode && taskLabelTemplateNode.length > 0) {\n append(taskLabelTemplateNode, tempDiv);\n labelString = tempDiv.innerHTML;\n }\n }\n else {\n var field = this.parent.labelSettings.taskLabel;\n labelString = this.getTaskLabel(field);\n labelString = labelString === 'isCustomTemplate' ? this.parent.labelSettings.taskLabel : labelString;\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n }\n }\n if (labelString.indexOf('null') === -1) {\n if (this.getTaskLabel(this.parent.labelSettings.taskLabel) === 'isCustomTemplate' &&\n !this.isTemplate(this.parent.labelSettings.taskLabel)) {\n labelString = '';\n }\n if (isNaN(parseInt(labelString))) {\n taskLabel = '';\n }\n else {\n taskLabel = '';\n }\n }\n var template = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length > 0 ?\n this.splitTaskbar(data, labelString) : (data.ganttProperties.startDate && data.ganttProperties.endDate\n && data.ganttProperties.duration) ? (taskLabel) :\n (data.ganttProperties.startDate && !data.ganttProperties.endDate && !data.ganttProperties.duration) ? ('
') :\n (data.ganttProperties.endDate && !data.ganttProperties.startDate && !data.ganttProperties.duration) ?\n ('
') :\n (data.ganttProperties.duration && !data.ganttProperties.startDate && !data.ganttProperties.endDate) ?\n ('
') : '';\n if (data.ganttProperties.startDate && data.ganttProperties.endDate && data.ganttProperties.duration &&\n (isNullOrUndefined(data.ganttProperties.segments) || (!isNullOrUndefined(data.ganttProperties.segments) &&\n data.ganttProperties.segments.length === 0))) {\n if (template !== '' && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {\n var templateElement = this.createDivElement(template)[0];\n if (this.parent.disableHtmlEncode) {\n templateElement.innerText = labelString;\n }\n else {\n templateElement.innerHTML = labelString;\n }\n var childLabel = this.parent.labelSettings.taskLabel;\n if (childLabel && childLabel['elementRef'])\n templateElement.appendChild(tempDiv);\n progressDiv[0].appendChild(templateElement);\n if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent !== '' &&\n !this.isTemplate(childLabel) &&\n progressDiv[0].querySelectorAll('.e-task-label')[0].children[0])\n progressDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();\n if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&\n childLabel && !childLabel['elementRef'] && tempDiv.innerHTML !== '')\n progressDiv[0].querySelectorAll('.e-task-label')[0].textContent = childLabel;\n }\n if (!isNullOrUndefined(taskbarInnerDiv) && taskbarInnerDiv.length > 0) {\n taskbarInnerDiv[0].appendChild([].slice.call(progressDiv)[0]);\n }\n childTaskbarNode = taskbarInnerDiv;\n }\n else {\n childTaskbarNode = this.createDivElement(template);\n }\n }\n if (this.parent.enableRtl && childTaskbarNode[0] && childTaskbarNode[0].querySelector('.e-task-label')) {\n childTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';\n childTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';\n if (childTaskbarNode[0].querySelector('.e-gantt-child-progressbar')) {\n childTaskbarNode[0].querySelector('.e-gantt-child-progressbar').style.textAlign = 'left';\n }\n }\n return childTaskbarNode;\n };\n ChartRows.prototype.splitTaskbar = function (data, labelString) {\n var splitTasks = '';\n for (var i = 0; i < data.ganttProperties.segments.length; i++) {\n var segment = data.ganttProperties.segments[i];\n var progressBarVisible = void 0;\n if (!segment.showProgress) {\n progressBarVisible = 'hidden';\n }\n else {\n progressBarVisible = 'initial';\n }\n var segmentPosition = (i === 0) ? 'e-segment-first' : (i === data.ganttProperties.segments.length - 1)\n ? 'e-segment-last' : 'e-segment-inprogress';\n splitTasks += (\n //split taskbar\n '
' +\n this.getSplitTaskbarLeftResizerNode() +\n //split progress bar\n '
= 0 ? 'block;' : 'none;') +\n 'width:' + segment.progressWidth + 'px;height:100%;' + 'text-align:' + (this.parent.enableRtl ? 'left;' : 'right;') +\n 'border-top-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;' +\n 'border-bottom-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;\">' +\n // progress label\n '' + labelString + '' +\n '
' +\n this.getSplitTaskbarRightResizerNode(segment) +\n (segment.showProgress ? this.getSplitProgressResizerNode(segment) : '') +\n '
');\n }\n return splitTasks;\n };\n ChartRows.prototype.getSplitTaskbarLeftResizerNode = function () {\n var lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);\n var template = '
';\n return template;\n };\n ChartRows.prototype.getSplitTaskbarRightResizerNode = function (segment) {\n var rResizerLeft = this.parent.isAdaptive ? -2 : -10;\n var template = '
';\n return template;\n };\n ChartRows.prototype.getSplitProgressResizerNode = function (segment) {\n var width = this.parent.enableRtl ? (segment.progressWidth + 8) : (segment.progressWidth - 6);\n var template = '
' +\n '
';\n return template;\n };\n ChartRows.prototype.getSegmentIndex = function (splitStartDate, record) {\n var segmentIndex = -1;\n var ganttProp = record.ganttProperties;\n var segments = ganttProp.segments;\n if (!isNullOrUndefined(segments)) {\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n var length_1 = segments.length;\n for (var i = 0; i < length_1; i++) {\n var segment = segments[i];\n // To find if user tend to split the start date of a main taskbar\n // purpose of this to restrict the split action\n if (splitStartDate.getTime() === ganttProp.startDate.getTime()) {\n this.dropSplit = true;\n segmentIndex = 0;\n // To find the if user tend to split the first date of already segmented task.\n // purpose of this to move on day of a segment\n }\n else if (splitStartDate.getTime() === segment.startDate.getTime()) {\n this.dropSplit = true;\n var sDate = segment.startDate;\n sDate.setDate(sDate.getDate() + 1);\n sDate = segment.startDate = this.parent.dataOperation.checkStartDate(sDate, ganttProp, false);\n segment.startDate = sDate;\n var eDate = segment.endDate;\n eDate = this.parent.dataOperation.getEndDate(sDate, segment.duration, ganttProp.durationUnit, ganttProp, false);\n segment.endDate = eDate;\n if (i === segments.length - 1) {\n this.parent.setRecordValue('endDate', eDate, ganttProp, true);\n }\n this.incrementSegments(segments, i, record);\n segmentIndex = segment.segmentIndex;\n // To find if the user tend to split the segment and find the segment index\n }\n else {\n segment.endDate = this.parent.dataOperation.getEndDate(segment.startDate, segment.duration, ganttProp.durationUnit, ganttProp, false);\n if (splitStartDate.getTime() >= segment.startDate.getTime() && splitStartDate.getTime() <= segment.endDate.getTime()) {\n segmentIndex = segment.segmentIndex;\n }\n }\n this.parent.setRecordValue('segments', ganttProp.segments, ganttProp, true);\n }\n }\n if (segmentIndex === -1) {\n this.dropSplit = true;\n }\n return segmentIndex;\n };\n ChartRows.prototype.mergeTask = function (taskId, segmentIndexes) {\n var mergeArrayLength = segmentIndexes.length;\n var taskFields = this.parent.taskFields;\n var mergeData = this.parent.flatData.filter(function (x) {\n if (x[taskFields.id] === taskId) {\n return x;\n }\n else {\n return null;\n }\n })[0];\n var segments = mergeData.ganttProperties.segments;\n segmentIndexes = segmentIndexes.sort(function (a, b) {\n return b.firstSegmentIndex - a.firstSegmentIndex;\n });\n for (var arrayLength = 0; arrayLength < mergeArrayLength; arrayLength++) {\n var firstSegment = segments[segmentIndexes[arrayLength].firstSegmentIndex];\n var secondSegment = segments[segmentIndexes[arrayLength].secondSegmentIndex];\n var duration = firstSegment.duration + secondSegment.duration;\n var endDate = this.parent.dataOperation.getEndDate(firstSegment.startDate, duration, mergeData.ganttProperties.durationUnit, mergeData.ganttProperties, false);\n var segment = {\n startDate: firstSegment.startDate,\n endDate: endDate,\n duration: duration\n };\n var insertIndex = segmentIndexes[arrayLength].firstSegmentIndex;\n segments.splice(insertIndex, 2, segment);\n this.parent.setRecordValue('segments', segments, mergeData.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(mergeData, 'segments');\n if (segments.length === 1) {\n this.parent.setRecordValue('endDate', endDate, mergeData.ganttProperties, true);\n this.parent.setRecordValue('EndDate', endDate, mergeData, true);\n this.parent.setRecordValue('segments', null, mergeData.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(mergeData, 'segments');\n }\n else if (mergeData.ganttProperties.endDate !== segments[segments.length - 1].endDate) {\n this.parent.setRecordValue('endDate', segments[segments.length - 1].endDate, mergeData.ganttProperties, true);\n }\n }\n this.refreshChartAfterSegment(mergeData, 'mergeSegment');\n };\n ChartRows.prototype.refreshChartAfterSegment = function (data, requestType) {\n this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(data, false), data.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(data, 'segments');\n this.parent.dataOperation.updateWidthLeft(data);\n if (this.parent.predecessorModule && this.parent.taskFields.dependency) {\n this.parent.predecessorModule.updatedRecordsDateByPredecessor();\n this.parent.connectorLineModule.removePreviousConnectorLines(this.parent.flatData);\n this.parent.connectorLineEditModule.refreshEditedRecordConnectorLine(this.parent.flatData);\n if (data.parentItem && this.parent.getParentTask(data.parentItem).ganttProperties.isAutoSchedule\n && this.parent.isInPredecessorValidation) {\n this.parent.dataOperation.updateParentItems(data.parentItem);\n }\n this.refreshRecords(this.parent.currentViewData);\n }\n else {\n this.refreshRow(this.parent.currentViewData.indexOf(data));\n }\n var tr = this.ganttChartTableBody.querySelectorAll('tr')[this.parent.currentViewData.indexOf(data)];\n var args = {\n requestType: requestType,\n rowData: data\n };\n this.triggerQueryTaskbarInfoByIndex(tr, data);\n this.parent.selectionModule.clearSelection();\n var segments = args.rowData.taskData[this.parent.taskFields.segments];\n if (this.parent.timezone && segments != null) {\n for (var i = 0; i < segments.length; i++) {\n segments[i][this.parent.taskFields.startDate] = this.parent.dateValidationModule.remove(args.rowData.ganttProperties.segments[i].startDate, this.parent.timezone);\n if (this.parent.taskFields.endDate) {\n segments[i][this.parent.taskFields.endDate] = this.parent.dateValidationModule.remove(args.rowData.ganttProperties.segments[i].endDate, this.parent.timezone);\n }\n }\n }\n this.parent.trigger('actionComplete', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n setValue('isEdit', false, this.parent.contextMenuModule);\n setValue('isEdit', false, this.parent);\n };\n /**\n * public method to split task bar.\n *\n * @public\n */\n ChartRows.prototype.splitTask = function (taskId, splitDates) {\n var taskFields = this.parent.taskFields;\n var splitDate = splitDates;\n var splitRecord = this.parent.flatData.filter(function (x) {\n if (x[taskFields.id] === taskId) {\n return x;\n }\n else {\n return null;\n }\n })[0];\n var ganttProp = splitRecord.ganttProperties;\n this.dropSplit = false;\n var segmentIndex = -1;\n var segments = ganttProp.segments;\n if (isNullOrUndefined(splitDates.length) || splitDates.length < 0) {\n var splitStartDate = this.parent.dataOperation.checkStartDate(splitDate, ganttProp, false);\n if (splitStartDate.getTime() !== ganttProp.startDate.getTime()) {\n if (ganttProp.isAutoSchedule) {\n if (!isNullOrUndefined(segments) && segments.length > 0) {\n segmentIndex = this.getSegmentIndex(splitStartDate, splitRecord);\n }\n //check atleast one day difference is there to split\n if (this.dropSplit === false && splitDate.getTime() > ganttProp.startDate.getTime() &&\n splitDate.getTime() < ganttProp.endDate.getTime()) {\n segments = segmentIndex !== -1 ? segments : [];\n var startDate = segmentIndex !== -1 ?\n segments[segmentIndex].startDate : new Date(ganttProp.startDate.getTime());\n var endDate = segmentIndex !== -1 ? segments[segmentIndex].endDate : new Date(ganttProp.endDate.getTime());\n var segmentDuration = this.parent.dataOperation.getDuration(startDate, endDate, ganttProp.durationUnit, ganttProp.isAutoSchedule, ganttProp.isMilestone);\n this.parent.setRecordValue('segments', this.splitSegmentedTaskbar(startDate, endDate, splitDate, segmentIndex, segments, splitRecord, segmentDuration), ganttProp, true);\n if (segmentIndex !== -1) {\n this.incrementSegments(segments, segmentIndex + 1, splitRecord);\n }\n this.parent.setRecordValue('endDate', segments[segments.length - 1].endDate, ganttProp, true);\n if (this.parent.taskFields.endDate) {\n this.parent.dataOperation.updateMappingData(splitRecord, 'endDate');\n }\n }\n this.refreshChartAfterSegment(splitRecord, 'splitTaskbar');\n }\n }\n }\n else {\n splitDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n this.parent.setRecordValue('segments', this.constructSegments(splitDates, splitRecord.ganttProperties), splitRecord.ganttProperties, true);\n this.refreshChartAfterSegment(splitRecord, 'splitTask');\n }\n };\n ChartRows.prototype.constructSegments = function (dates, taskData) {\n var segmentsArray = [];\n var segment;\n var startDate = new Date();\n var endDate;\n var duration;\n for (var i = 0; i < dates.length + 1; i++) {\n startDate = i === 0 ? taskData.startDate : startDate;\n startDate = this.parent.dataOperation.checkStartDate(startDate, taskData, false);\n endDate = i !== dates.length ? new Date(dates[i].getTime()) > taskData.endDate ? taskData.endDate\n : new Date(dates[i].getTime()) : taskData.endDate;\n endDate = this.parent.dataOperation.checkEndDate(endDate, taskData, false);\n duration = this.parent.dataOperation.getDuration(startDate, endDate, taskData.durationUnit, taskData.isAutoSchedule, taskData.isMilestone);\n if (endDate.getTime() >= startDate.getTime()) {\n segment = {\n startDate: startDate,\n endDate: endDate,\n duration: duration\n };\n segmentsArray.push(segment);\n }\n if (i === dates.length) {\n break;\n }\n startDate = new Date(dates[i].getTime());\n startDate.setDate(dates[i].getDate() + 1);\n }\n return segmentsArray;\n };\n ChartRows.prototype.splitSegmentedTaskbar = function (startDate, endDate, splitDate, segmentIndex, segments, ganttData, segmentDuration) {\n var ganttProp = ganttData.ganttProperties;\n var checkClickState = this.parent.nonWorkingDayIndex.indexOf(splitDate.getDay());\n var increment = checkClickState === -1 ? 0 : checkClickState === 0 ? 1 : 2;\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n var segmentEndDate = new Date(splitDate.getTime());\n segmentEndDate = this.parent.dataOperation.checkEndDate(segmentEndDate, ganttProp, false);\n for (var i = 0; i < 2; i++) {\n var segment = {\n startDate: startDate,\n endDate: segmentEndDate,\n duration: this.parent.dataOperation.getDuration(startDate, segmentEndDate, ganttProp.durationUnit, ganttProp.isAutoSchedule, ganttProp.isMilestone),\n offsetDuration: 1\n };\n var endDateState = this.parent.nonWorkingDayIndex.indexOf(segmentEndDate.getDay());\n if (segmentIndex !== -1) {\n segments.splice(segmentIndex, 1);\n segmentIndex = -1;\n }\n segments.push(segment);\n var mode = this.parent.timelineModule.customTimelineSettings.bottomTier.unit;\n if (mode === 'Hour' || mode === 'Minutes') {\n startDate = new Date(splitDate.getTime());\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n var count = this.parent.timelineModule.customTimelineSettings.bottomTier.count;\n var mode_1 = this.parent.timelineModule.customTimelineSettings.bottomTier.unit;\n var timeIncrement = this.parent.timelineModule.getIncrement(startDate, count, mode_1);\n var newTime = startDate.getTime() + timeIncrement;\n startDate.setTime(newTime + increment);\n segmentEndDate = new Date(endDate.getTime());\n timeIncrement = this.parent.timelineModule.getIncrement(segmentEndDate, count, mode_1);\n newTime = segmentEndDate.getTime() + timeIncrement;\n segmentEndDate.setTime(newTime + increment);\n }\n else {\n startDate = new Date(splitDate.getTime());\n startDate.setDate(startDate.getDate() + 1 + increment);\n this.setTime(this.parent.defaultStartTime, startDate);\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n segmentEndDate = new Date(endDate.getTime());\n segmentEndDate.setDate(segmentEndDate.getDate() + 1);\n }\n if (endDateState !== -1) {\n var diff = segmentDuration - segment.duration;\n segmentEndDate =\n this.parent.dataOperation.getEndDate(startDate, diff, ganttProp.durationUnit, ganttProp, false);\n }\n else {\n segmentEndDate = this.parent.dataOperation.checkEndDate(segmentEndDate, ganttProp, false);\n }\n }\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n return segments;\n };\n ChartRows.prototype.incrementSegments = function (segments, segmentIndex, ganttData) {\n var ganttProp = ganttData.ganttProperties;\n for (var i = segmentIndex + 1; i < segments.length; i++) {\n var segment = segments[i];\n var startDate = i !== 0 ? new Date(segments[i - 1].endDate.getTime()) : new Date(segment.startDate.getTime());\n startDate = this.parent.dataOperation.getEndDate(startDate, segment.offsetDuration, ganttProp.durationUnit, ganttProp, false);\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n segment.startDate = startDate;\n var endDate = segment.endDate = this.parent.dataOperation.getEndDate(startDate, segment.duration, ganttProp.durationUnit, ganttProp, false);\n segment.endDate = endDate;\n if (i === segments.length - 1) {\n this.parent.setRecordValue('endDate', endDate, ganttProp, true);\n if (this.parent.taskFields.endDate) {\n this.parent.dataOperation.updateMappingData(ganttData, 'endDate');\n }\n }\n }\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n this.parent.setRecordValue('segments', segments, ganttProp, true);\n this.parent.dataOperation.updateMappingData(ganttData, 'segments');\n };\n /**\n * To get milestone node.\n *\n * @param {number} i .\n * @param {NodeList} rootElement .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getMilestoneNode = function (i, rootElement) {\n var milestoneNode = null;\n var data = this.templateData;\n if (this.milestoneTemplateFunction) {\n milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);\n }\n else {\n var template = '
40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;\">
';\n milestoneNode = this.createDivElement(template);\n }\n return milestoneNode;\n };\n /**\n * To get task baseline Node.\n *\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getTaskBaselineNode = function () {\n var data = this.templateData;\n var template = '
';\n return this.createDivElement(template);\n };\n /**\n * To get milestone baseline node.\n *\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getMilestoneBaselineNode = function () {\n var data = this.templateData;\n var baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;\n var template = '
';\n return this.createDivElement(template);\n };\n /**\n * To get left label node.\n *\n * @param {number} i .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getLeftLabelNode = function (i) {\n var leftLabelNode = this.leftLabelContainer();\n if (this.generateTaskLabelAriaLabel('left') !== \"\") {\n leftLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('left'));\n }\n var leftLabelTemplateNode = null;\n if (this.leftTaskLabelTemplateFunction) {\n leftLabelTemplateNode = this.leftTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'LeftLabelTemplate', this.getTemplateID('LeftLabelTemplate'), false, undefined, leftLabelNode[0], this.parent.treeGrid['root']);\n }\n else {\n var field = this.parent.labelSettings.leftLabel;\n var labelString = this.getTaskLabel(field);\n if (labelString) {\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n leftLabelTemplateNode = this.getLableText(labelString, cls.leftLabelInnerDiv);\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n leftLabelTemplateNode = this.getLableText(labelString, cls.leftLabelInnerDiv);\n }\n }\n }\n if (leftLabelTemplateNode && leftLabelTemplateNode.length > 0) {\n if (leftLabelTemplateNode[0]['data'] === 'null') {\n leftLabelTemplateNode[0]['data'] = '';\n }\n append(leftLabelTemplateNode, leftLabelNode[0]);\n }\n if (this.parent.enableRtl) {\n leftLabelNode[0].style.paddingLeft = '25px';\n leftLabelNode[0].style.paddingRight = '0px';\n }\n return leftLabelNode;\n };\n ChartRows.prototype.getLableText = function (labelString, labelDiv) {\n var leftLabelHeight = this.parent.renderBaseline ? ((this.parent.rowHeight - this.taskBarHeight) / 2) : this.taskBarMarginTop;\n var templateString = createElement('div', {\n className: labelDiv, styles: 'height:' + (this.taskBarHeight) + 'px;' +\n 'margin-top:' + leftLabelHeight + 'px;'\n });\n var spanElem = createElement('span', { className: cls.label });\n var property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';\n spanElem[property] = labelString;\n templateString.appendChild(spanElem);\n var div = createElement('div');\n div.appendChild(templateString);\n return div.childNodes;\n };\n /**\n * To get right label node.\n *\n * @param {number} i .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getRightLabelNode = function (i) {\n var rightLabelNode = this.rightLabelContainer();\n if (this.generateTaskLabelAriaLabel('right') !== \"\") {\n rightLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('right'));\n }\n var rightLabelTemplateNode = null;\n if (this.rightTaskLabelTemplateFunction) {\n rightLabelTemplateNode = this.rightTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'RightLabelTemplate', this.getTemplateID('RightLabelTemplate'), false, undefined, rightLabelNode[0], this.parent.treeGrid['root']);\n }\n else {\n var field = this.parent.labelSettings.rightLabel;\n var labelString = this.getTaskLabel(field);\n if (labelString) {\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n rightLabelTemplateNode = this.getLableText(labelString, cls.rightLabelInnerDiv);\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n rightLabelTemplateNode = this.getLableText(labelString, cls.rightLabelInnerDiv);\n }\n }\n }\n if (rightLabelTemplateNode && rightLabelTemplateNode.length > 0) {\n if (rightLabelTemplateNode[0]['data'] === 'null') {\n rightLabelTemplateNode[0]['data'] = '';\n }\n append(rightLabelTemplateNode, rightLabelNode[0]);\n }\n if (this.parent.enableRtl) {\n rightLabelNode[0].style.marginLeft = '0px';\n rightLabelNode[0].style.paddingRight = '25px';\n }\n return rightLabelNode;\n };\n ChartRows.prototype.getManualTaskbar = function () {\n var data = this.templateData;\n var taskbarHeight = (this.taskBarHeight / 2 - 1);\n var innerDiv = (data.ganttProperties.startDate && data.ganttProperties.endDate && data.ganttProperties.duration) ?\n ('
') :\n (!data.ganttProperties.startDate && !data.ganttProperties.endDate && data.ganttProperties.duration) ?\n ('
') : ('
');\n var template = '
' + innerDiv + ((data.ganttProperties.startDate && data.ganttProperties.endDate &&\n data.ganttProperties.duration) || data.ganttProperties.duration ? '
' +\n '
' + '
' : '');\n var milestoneTemplate = '
40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;\">
';\n return this.createDivElement(data.ganttProperties.duration !== 0 ? template : milestoneTemplate);\n };\n /**\n * To get parent taskbar node.\n *\n * @param {number} i .\n * @param {NodeList} rootElement .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getParentTaskbarNode = function (i, rootElement) {\n var parentTaskbarNode = null;\n var data = this.templateData;\n if (this.parentTaskbarTemplateFunction) {\n parentTaskbarNode = this.parentTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'ParentTaskbarTemplate', this.getTemplateID('ParentTaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);\n }\n else {\n var labelString = '';\n var labelDiv = void 0;\n var tHeight = this.taskBarHeight / 5;\n var template = this.createDivElement('
' +\n '
');\n var progressBarInnerDiv = this.createDivElement('
');\n var div = createElement('div');\n if (this.taskLabelTemplateFunction) {\n var parentTaskLabelNode = this.taskLabelTemplateFunction(extend({ index: i }, data), this.parent, 'TaskLabelTemplate', this.getTemplateID('TaskLabelTemplate'), false, undefined, progressBarInnerDiv[0]);\n if (parentTaskLabelNode && parentTaskLabelNode.length > 0) {\n div.appendChild(parentTaskLabelNode[0]);\n labelString = div.innerHTML;\n }\n }\n else {\n labelString = this.getTaskLabel(this.parent.labelSettings.taskLabel);\n labelString = labelString === 'isCustomTemplate' ? this.parent.labelSettings.taskLabel : labelString;\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n }\n }\n if (labelString.indexOf('null') === -1) {\n if (this.getTaskLabel(this.parent.labelSettings.taskLabel) === 'isCustomTemplate' &&\n !this.isTemplate(this.parent.labelSettings.taskLabel)) {\n labelString = '';\n }\n if (isNaN(parseInt(labelString))) {\n labelDiv = '';\n }\n else {\n labelDiv = '';\n }\n var labelElement = this.createDivElement(labelDiv)[0];\n if (this.parent.disableHtmlEncode) {\n labelElement.innerText = labelString;\n }\n else {\n labelElement.innerHTML = labelString;\n }\n var parentLabel = this.parent.labelSettings.taskLabel;\n if (parentLabel && parentLabel['elementRef'])\n labelElement.appendChild(div);\n progressBarInnerDiv[0].appendChild(labelElement);\n if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent !== '' &&\n !this.isTemplate(parentLabel) &&\n progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0])\n progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();\n if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&\n parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')\n progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;\n }\n var milestoneTemplate = '
40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;\">
';\n template[0].appendChild([].slice.call(progressBarInnerDiv)[0]);\n parentTaskbarNode = data.ganttProperties.isMilestone ?\n this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;\n }\n if (this.parent.enableRtl && parentTaskbarNode[0] && parentTaskbarNode[0].querySelector('.e-task-label')) {\n parentTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';\n parentTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';\n if (parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar')) {\n parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar').style.textAlign = 'left';\n }\n }\n return parentTaskbarNode;\n };\n /**\n * To get taskbar row('TR') node\n *\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getTableTrNode = function (i) {\n var table = createElement('table');\n var className = (this.parent.gridLines === 'Horizontal' || this.parent.gridLines === 'Both') ?\n 'e-chart-row-border' : '';\n var rows = this.parent.treeGrid.grid.contentModule.getRows()[i];\n var activecls;\n if (rows && rows.isSelected) {\n activecls = 'e-active';\n }\n else {\n activecls = '';\n }\n table.innerHTML = '' +\n '';\n return table.childNodes;\n };\n /**\n * To initialize chart templates.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.initializeChartTemplate = function () {\n if (!isNullOrUndefined(this.parent.parentTaskbarTemplate)) {\n this.parentTaskbarTemplateFunction = this.templateCompiler(this.parent.parentTaskbarTemplate);\n }\n if (!isNullOrUndefined(this.parent.labelSettings.leftLabel) &&\n this.isTemplate(this.parent.labelSettings.leftLabel)) {\n this.leftTaskLabelTemplateFunction = this.templateCompiler(this.parent.labelSettings.leftLabel);\n }\n if (!isNullOrUndefined(this.parent.labelSettings.rightLabel) &&\n this.isTemplate(this.parent.labelSettings.rightLabel)) {\n this.rightTaskLabelTemplateFunction = this.templateCompiler(this.parent.labelSettings.rightLabel);\n }\n if (!isNullOrUndefined(this.parent.labelSettings.taskLabel) &&\n this.isTemplate(this.parent.labelSettings.taskLabel)) {\n this.taskLabelTemplateFunction = this.templateCompiler(this.parent.labelSettings.taskLabel);\n }\n if (!isNullOrUndefined(this.parent.taskbarTemplate)) {\n this.childTaskbarTemplateFunction = this.templateCompiler(this.parent.taskbarTemplate);\n }\n if (!isNullOrUndefined(this.parent.milestoneTemplate)) {\n this.milestoneTemplateFunction = this.templateCompiler(this.parent.milestoneTemplate);\n }\n };\n ChartRows.prototype.createDivElement = function (template) {\n var div = createElement('div');\n div.innerHTML = template;\n return div.childNodes;\n };\n ChartRows.prototype.isTemplate = function (template) {\n var result = false;\n for (var i = 0; i < this.parent.ganttColumns.length; i++) {\n if (template === this.parent.ganttColumns[i].field) {\n result = true;\n break;\n }\n }\n if (typeof template !== 'string' || template.indexOf('#') === 0 || template.indexOf('<') > -1\n || template.indexOf('$') > -1 || !result) {\n result = true;\n }\n else {\n result = false;\n }\n return result;\n };\n /**\n * @param {string} templateName .\n * @returns {string} .\n * @private\n */\n ChartRows.prototype.getTemplateID = function (templateName) {\n var ganttID = this.parent.element.id;\n return ganttID + templateName;\n };\n ChartRows.prototype.leftLabelContainer = function () {\n var template = '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.taskbarContainer = function () {\n var data = this.templateData;\n var manualParent = this.parent.editModule && this.parent.editSettings.allowTaskbarEditing &&\n this.parent.editModule.taskbarEditModule.taskBarEditAction === 'ParentResizing' ?\n true : false;\n var template = '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.rightLabelContainer = function () {\n var template = '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.childTaskbarLeftResizer = function () {\n var lResizerLeft = -(this.parent.isAdaptive ? 12 : 2);\n var template = '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.childTaskbarRightResizer = function () {\n var rResizerLeft = this.parent.isAdaptive ? -2 : -10;\n var template = '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.childTaskbarProgressResizer = function () {\n var width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);\n var template = '
' +\n '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.getLeftPointNode = function () {\n var data = this.templateData;\n var pointerLeft = -((this.parent.isAdaptive ? 14 : 2) + this.connectorPointWidth);\n var mileStoneLeft = -(this.connectorPointWidth + 2);\n var pointerTop = Math.floor(this.milesStoneRadius - (this.connectorPointWidth / 2));\n var marginTop;\n if ((!this.templateData.ganttProperties.isAutoSchedule && this.templateData.hasChildRecords) && this.parent.allowParentDependency) {\n marginTop = '';\n }\n else {\n marginTop = 'margin-top:' + this.connectorPointMargin + 'px';\n }\n var template = '
' +\n '
' + this.touchLeftConnectorpoint + '
';\n return this.createDivElement(template);\n };\n ChartRows.prototype.getRightPointNode = function () {\n var data = this.templateData;\n var pointerRight = this.parent.isAdaptive ? 10 : -2;\n var pointerTop = Math.floor(this.milesStoneRadius - (this.connectorPointWidth / 2));\n var marginTop;\n if ((!this.templateData.ganttProperties.isAutoSchedule && this.templateData.hasChildRecords) && this.parent.allowParentDependency) {\n marginTop = '';\n }\n else {\n marginTop = 'margin-top:' + this.connectorPointMargin + 'px';\n }\n var template = '
' +\n '
' +\n this.touchRightConnectorpoint + '
';\n return this.createDivElement(template);\n };\n /**\n * To get task label.\n *\n * @param {string} field .\n * @returns {string} .\n * @private\n */\n ChartRows.prototype.getTaskLabel = function (field) {\n var length = this.parent.ganttColumns.length;\n var resultString = null;\n if (!isNullOrUndefined(field) && field !== '') {\n if (field === this.parent.taskFields.resourceInfo) {\n resultString = this.getResourceName(this.templateData);\n }\n else {\n for (var i = 0; i < length; i++) {\n if (field === this.parent.ganttColumns[i].field) {\n resultString = this.getFieldValue(this.templateData[field]).toString();\n break;\n }\n }\n if (isNullOrUndefined(resultString)) {\n return 'isCustomTemplate';\n }\n }\n }\n else {\n resultString = '';\n }\n return resultString;\n };\n ChartRows.prototype.getExpandDisplayProp = function (data) {\n data = this.templateData;\n if (this.parent.getExpandStatus(data)) {\n return 'table-row';\n }\n return 'none';\n };\n ChartRows.prototype.getRowClassName = function (data) {\n data = this.templateData;\n var rowClass = 'gridrowtaskId';\n var parentItem = data.parentItem;\n if (parentItem) {\n rowClass += parentItem.taskId.toString();\n }\n rowClass += 'level';\n rowClass += data.level.toString();\n return rowClass;\n };\n ChartRows.prototype.getBorderRadius = function (data) {\n data = this.templateData;\n var diff = data.ganttProperties.width - data.ganttProperties.progressWidth;\n if (diff <= 4) {\n return 4 - diff;\n }\n else {\n return 0;\n }\n };\n ChartRows.prototype.getSplitTaskBorderRadius = function (data) {\n var diff = data.width - data.progressWidth;\n if (diff <= 4) {\n return 4 - diff;\n }\n else {\n return 0;\n }\n };\n ChartRows.prototype.taskNameWidth = function (ganttData) {\n ganttData = this.templateData;\n var ganttProp = ganttData.ganttProperties;\n var width;\n if (ganttData.ganttProperties.isMilestone) {\n width = (ganttData.ganttProperties.left - (this.parent.getTaskbarHeight() / 2));\n }\n else if (ganttData.hasChildRecords && !ganttProp.isAutoSchedule) {\n if (!this.parent.allowUnscheduledTasks) {\n width = (ganttProp.autoStartDate.getTime() < ganttProp.startDate.getTime()) ?\n ganttProp.autoLeft : ganttProp.left;\n }\n else {\n width = ganttProp.left < ganttProp.autoLeft ? ganttProp.left : ganttProp.autoLeft;\n }\n }\n else {\n width = ganttData.ganttProperties.left;\n }\n if (width < 0) {\n width = 0;\n }\n return width + 'px';\n };\n ChartRows.prototype.getRightLabelLeft = function (ganttData) {\n ganttData = this.templateData;\n var ganttProp = ganttData.ganttProperties;\n var left;\n var endLeft;\n var width;\n if (ganttData.ganttProperties.isMilestone) {\n return ganttData.ganttProperties.left + (this.parent.getTaskbarHeight() / 2);\n }\n else if (ganttData.hasChildRecords && !ganttProp.isAutoSchedule) {\n if (!this.parent.allowUnscheduledTasks) {\n left = ganttProp.autoStartDate.getTime() < ganttProp.startDate.getTime() ? ganttProp.autoLeft : ganttProp.left;\n endLeft = ganttProp.autoEndDate.getTime() < ganttProp.endDate.getTime() ?\n this.parent.dataOperation.getTaskLeft(ganttProp.endDate, ganttProp.isMilestone) :\n this.parent.dataOperation.getTaskLeft(ganttProp.autoEndDate, ganttProp.isMilestone);\n width = endLeft - left;\n }\n else {\n left = ganttProp.left < ganttProp.autoLeft ? ganttProp.left : ganttProp.autoLeft;\n width = ganttProp.autoWidth;\n }\n return left + width;\n }\n else {\n return ganttData.ganttProperties.left + ganttData.ganttProperties.width;\n }\n };\n ChartRows.prototype.getExpandClass = function (data) {\n data = this.templateData;\n if (data.expanded) {\n return cls.rowExpand;\n }\n else if (!data.expanded && data.hasChildRecords) {\n return cls.rowCollapse;\n }\n return '';\n };\n ChartRows.prototype.getFieldValue = function (field) {\n return isNullOrUndefined(field) ? '' : field;\n };\n ChartRows.prototype.getResourceName = function (ganttData) {\n ganttData = this.templateData;\n var resource = null;\n if (!isNullOrUndefined(ganttData.ganttProperties.resourceInfo)) {\n var length_2 = ganttData.ganttProperties.resourceInfo.length;\n if (length_2 > 0) {\n for (var i = 0; i < length_2; i++) {\n var resourceName = ganttData.ganttProperties.resourceInfo[i][this.parent.resourceFields.name];\n var resourceUnit = ganttData.ganttProperties.resourceInfo[i][this.parent.resourceFields.unit];\n if (resourceUnit !== 100) {\n resourceName += '[' + resourceUnit + '%' + ']';\n }\n if (isNullOrUndefined(resource)) {\n resource = resourceName;\n }\n else {\n resource += ' , ' + resourceName;\n }\n }\n return resource;\n }\n else {\n return '';\n }\n }\n return '';\n };\n /**\n * To initialize private variable help to render task bars.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.initChartHelperPrivateVariable = function () {\n var taskbarHeightValue = this.parent.renderBaseline ? 0.45 : 0.62;\n var taskBarMarginTopValue = this.parent.renderBaseline ? 4 : 2;\n var milestoneHeightValue = this.parent.renderBaseline ? 1.13 : 0.82;\n this.baselineColor = !isNullOrUndefined(this.parent.baselineColor) &&\n this.parent.baselineColor !== '' ? this.parent.baselineColor : null;\n this.taskBarHeight = isNullOrUndefined(this.parent.taskbarHeight) || this.parent.taskbarHeight >= this.parent.rowHeight ?\n Math.floor(this.parent.rowHeight * taskbarHeightValue) : this.parent.taskbarHeight; // 0.62 -- Standard Ratio.\n if (this.parent.renderBaseline) {\n var height = void 0;\n if ((this.taskBarHeight + this.baselineHeight) <= this.parent.rowHeight) {\n height = this.taskBarHeight;\n }\n else {\n height = this.taskBarHeight - (this.baselineHeight + 1);\n }\n this.taskBarHeight = height;\n }\n this.milestoneHeight = Math.floor(this.taskBarHeight * milestoneHeightValue); // 0.82 -- Standard Ratio.\n this.taskBarMarginTop = Math.floor((this.parent.rowHeight - this.taskBarHeight) / taskBarMarginTopValue);\n this.milestoneMarginTop = Math.floor((this.parent.rowHeight - this.milestoneHeight) / 2);\n this.milesStoneRadius = Math.floor((this.milestoneHeight) / 2);\n this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 4);\n this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 10;\n this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2)) - 1;\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.refreshGanttRows = function () {\n this.parent.currentViewData = this.parent.treeGrid.getCurrentViewRecords().slice();\n this.createTaskbarTemplate();\n if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n var data = this.parent.currentViewData[i];\n if (data.childRecords.length > 0) {\n this.parent.setRecordValue('workTimelineRanges', this.parent.dataOperation.mergeRangeCollections(data.ganttProperties.workTimelineRanges, true), data.ganttProperties, true);\n this.parent.dataOperation.calculateRangeLeftWidth(data.ganttProperties.workTimelineRanges);\n }\n }\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n this.parent.ganttChartModule.updateLastRowBottomWidth();\n };\n /**\n * To render taskbars.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.createTaskbarTemplate = function () {\n var _a;\n var trs = [].slice.call(this.ganttChartTableBody.querySelectorAll('tr'));\n this.ganttChartTableBody.innerHTML = '';\n var collapsedResourceRecord = [];\n var prevCurrentView = this.parent.treeGridModule.prevCurrentView;\n this.refreshedTr = [];\n this.refreshedData = [];\n if (this.parent.enableImmutableMode && prevCurrentView && prevCurrentView.length > 0 && this.isUpdated) {\n var oldKeys = {};\n var oldRowElements = [];\n var key = this.parent.treeGrid.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < prevCurrentView.length; i++) {\n oldRowElements[i] = trs[i];\n oldKeys[prevCurrentView[i][key]] = i;\n }\n for (var index = 0; index < this.parent.currentViewData.length; index++) {\n var oldIndex = oldKeys[this.parent.currentViewData[index][key]];\n var modifiedRecIndex = this.parent.modifiedRecords.indexOf(this.parent.currentViewData[index]);\n if (isNullOrUndefined(oldIndex) || modifiedRecIndex !== -1 || this.parent.isFromRenderBaseline) {\n var tRow = this.getGanttChartRow(index, this.parent.currentViewData[index]);\n this.ganttChartTableBody.appendChild(tRow);\n this.refreshedTr.push(this.ganttChartTableBody.querySelectorAll('tr')[index]);\n this.refreshedData.push(this.parent.currentViewData[index]);\n }\n else {\n this.ganttChartTableBody.appendChild(oldRowElements[oldIndex]);\n }\n this.ganttChartTableBody.querySelectorAll('tr')[index].setAttribute('aria-rowindex', index.toString());\n }\n }\n else {\n var dupChartBody = void 0;\n dupChartBody = createElement('tbody', {\n id: this.parent.element.id + 'GanttTaskTableBody'\n });\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n var tempTemplateData = this.parent.currentViewData[i];\n if (this.parent.viewType === 'ResourceView') {\n if (this.parent.editModule && this.parent.editModule.isResourceTaskDeleted || this.parent.isFromOnPropertyChange) {\n this.parent.editModule.isResourceTaskDeleted = false;\n }\n if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {\n collapsedResourceRecord.push(tempTemplateData);\n }\n }\n var tRow = this.getGanttChartRow(i, tempTemplateData);\n dupChartBody.appendChild(tRow);\n if (this.parent.enableImmutableMode) {\n this.refreshedTr.push(dupChartBody.querySelectorAll('tr')[i]);\n this.refreshedData.push(this.parent.currentViewData[i]);\n }\n // To maintain selection when virtualization is enabled\n if (this.parent.selectionModule && this.parent.allowSelection) {\n this.parent.selectionModule.maintainSelectedRecords(parseInt(tRow.getAttribute('aria-rowindex'), 10));\n }\n }\n (_a = this.ganttChartTableBody).replaceChildren.apply(_a, dupChartBody.childNodes);\n this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();\n }\n this.parent.renderTemplates();\n this.triggerQueryTaskbarInfo();\n this.parent.modifiedRecords = [];\n if (this.parent.viewType == 'ResourceView' && this.parent.showOverAllocation) {\n this.updateOverlapped();\n }\n if (collapsedResourceRecord.length) {\n for (var j = 0; j < collapsedResourceRecord.length; j++) {\n if (collapsedResourceRecord[j].hasChildRecords) {\n this.parent.isGanttChartRendered = true;\n this.parent.chartRowsModule.refreshRecords([collapsedResourceRecord[j]]);\n }\n }\n }\n this.parent.renderTemplates();\n };\n /**\n * To render taskbars.\n *\n * @param {number} i .\n * @param {IGanttData} tempTemplateData .\n * @returns {Node} .\n * @private\n */\n ChartRows.prototype.getGanttChartRow = function (i, tempTemplateData) {\n this.templateData = tempTemplateData;\n var taskBaselineTemplateNode = null;\n var parentTrNode = this.getTableTrNode(i);\n var leftLabelNode = this.getLeftLabelNode(i);\n var taskbarContainerNode = this.taskbarContainer();\n taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));\n taskbarContainerNode[0].setAttribute('rowUniqueId', this.templateData.ganttProperties.rowUniqueID);\n var connectorLineLeftNode;\n if (!this.templateData.hasChildRecords && !this.parent.allowParentDependency) {\n var connectorLineLeftNode_1 = this.getLeftPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineLeftNode_1)[0]);\n }\n else if (this.parent.allowParentDependency) {\n connectorLineLeftNode = this.getLeftPointNode();\n if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords) {\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineLeftNode)[0]);\n }\n }\n if (this.templateData.hasChildRecords) {\n var parentTaskbarTemplateNode = this.getParentTaskbarNode(i, taskbarContainerNode);\n if (!this.templateData.ganttProperties.isAutoSchedule) {\n var manualTaskbar = this.getManualTaskbar();\n if (!isNullOrUndefined(manualTaskbar[0])) {\n if (this.parent.allowParentDependency) {\n manualTaskbar[0].appendChild([].slice.call(connectorLineLeftNode)[0]);\n var connectorLineRightNode_1 = this.getRightPointNode();\n manualTaskbar[0].appendChild([].slice.call(connectorLineRightNode_1)[0]);\n }\n taskbarContainerNode[0].appendChild([].slice.call(manualTaskbar)[0]);\n }\n }\n if ((this.templateData.ganttProperties.autoDuration !== 0) && !this.templateData.ganttProperties.isMilestone && parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {\n append(parentTaskbarTemplateNode, taskbarContainerNode[0]);\n }\n else if ((this.templateData.ganttProperties.duration === 0 && this.templateData.ganttProperties.isMilestone && this.templateData.ganttProperties.isAutoSchedule)) {\n var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);\n if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {\n append(milestoneTemplateNode, taskbarContainerNode[0]);\n }\n }\n if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&\n this.templateData.ganttProperties.baselineEndDate) {\n taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.toLocaleDateString() === this.templateData.ganttProperties.endDate.toLocaleDateString())) &&\n this.templateData.ganttProperties.isMilestone))\n ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();\n }\n }\n else if (this.templateData.ganttProperties.isMilestone) {\n var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);\n if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {\n append(milestoneTemplateNode, taskbarContainerNode[0]);\n }\n if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&\n this.templateData.ganttProperties.baselineEndDate) {\n taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.toLocaleDateString() === this.templateData.ganttProperties.endDate.toLocaleDateString())) &&\n this.templateData.ganttProperties.isMilestone))\n ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();\n }\n }\n else {\n var scheduledTask = isScheduledTask(this.templateData.ganttProperties); // eslint-disable-line\n var childTaskbarProgressResizeNode = null;\n var childTaskbarRightResizeNode = null;\n var childTaskbarLeftResizeNode = null;\n if (!isNullOrUndefined(scheduledTask)) {\n if (scheduledTask || this.templateData.ganttProperties.duration) {\n if (scheduledTask && (isNullOrUndefined(this.templateData.ganttProperties.segments)\n || this.templateData.ganttProperties.segments.length <= 0)) {\n childTaskbarProgressResizeNode = this.childTaskbarProgressResizer();\n childTaskbarLeftResizeNode = this.childTaskbarLeftResizer();\n childTaskbarRightResizeNode = this.childTaskbarRightResizer();\n }\n }\n var childTaskbarTemplateNode = this.getChildTaskbarNode(i, taskbarContainerNode);\n if (childTaskbarLeftResizeNode) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarLeftResizeNode)[0]);\n }\n if (childTaskbarTemplateNode && childTaskbarTemplateNode.length > 0) {\n if (this.templateData.ganttProperties.segments && this.templateData.ganttProperties.segments.length > 0) {\n var length_3 = this.templateData.ganttProperties.segments.length;\n var connector = ('
');\n var segmentConnector = null;\n segmentConnector = this.createDivElement(connector);\n taskbarContainerNode[0].appendChild([].slice.call(segmentConnector)[0]);\n for (var i_1 = 0; i_1 < length_3; i_1++) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarTemplateNode)[0]);\n }\n }\n else {\n append(childTaskbarTemplateNode, taskbarContainerNode[0]);\n }\n }\n if (childTaskbarProgressResizeNode) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarProgressResizeNode)[0]);\n }\n if (childTaskbarRightResizeNode) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarRightResizeNode)[0]);\n }\n }\n if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&\n this.templateData.ganttProperties.baselineEndDate) {\n taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.toLocaleDateString() === this.templateData.ganttProperties.endDate.toLocaleDateString())) &&\n this.templateData.ganttProperties.isMilestone))\n ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();\n }\n }\n var connectorLineRightNode;\n if (this.parent.allowParentDependency && ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords)) {\n connectorLineRightNode = this.getRightPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);\n }\n else if (!this.parent.allowParentDependency) {\n connectorLineRightNode = this.getRightPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);\n }\n var rightLabelNode = this.getRightLabelNode(i);\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(taskbarContainerNode)[0]);\n if (this.templateData.ganttProperties.indicators && this.templateData.ganttProperties.indicators.length > 0) {\n var taskIndicatorNode = void 0;\n var taskIndicatorTextFunction = void 0;\n var taskIndicatorTextNode = void 0;\n var indicators = this.templateData.ganttProperties.indicators;\n for (var indicatorIndex = 0; indicatorIndex < indicators.length; indicatorIndex++) {\n taskIndicatorNode = this.getIndicatorNode(indicators[indicatorIndex]);\n taskIndicatorNode[0].setAttribute('aria-label', indicators[indicatorIndex].name);\n if (indicators[indicatorIndex].name.indexOf('$') > -1 || indicators[indicatorIndex].name.indexOf('#') > -1) {\n taskIndicatorTextFunction = this.templateCompiler(indicators[indicatorIndex].name);\n taskIndicatorTextNode = taskIndicatorTextFunction(extend({ index: i }, this.templateData), this.parent, 'indicatorLabelText');\n }\n else {\n var text = createElement('Text');\n text.innerHTML = indicators[indicatorIndex].name;\n if (this.parent.enableHtmlSanitizer && typeof (indicators[indicatorIndex].name) === 'string') {\n indicators[indicatorIndex].name = SanitizeHtmlHelper.sanitize(indicators[indicatorIndex].name);\n text.innerText = indicators[indicatorIndex].name;\n }\n taskIndicatorTextNode = text.childNodes;\n }\n taskIndicatorNode[0].appendChild([].slice.call(taskIndicatorTextNode)[0]);\n taskIndicatorNode[0].title =\n !isNullOrUndefined(indicators[indicatorIndex].tooltip) ? indicators[indicatorIndex].tooltip : '';\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(taskIndicatorNode)[0]);\n }\n }\n if (rightLabelNode && rightLabelNode.length > 0) {\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(rightLabelNode)[0]);\n }\n if (!isNullOrUndefined(taskBaselineTemplateNode)) {\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(taskBaselineTemplateNode)[0]);\n }\n var tRow = parentTrNode[0].childNodes[0];\n this.setAriaRowIndex(tempTemplateData, tRow);\n return tRow;\n };\n /**\n * To set aria-rowindex for chart rows\n *\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.setAriaRowIndex = function (tempTemplateData, tRow) {\n var dataSource = this.parent.treeGrid.getCurrentViewRecords();\n var visualData = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n getValue('virtualScrollModule.visualData', this.parent.treeGrid) : dataSource;\n var index = visualData.indexOf(tempTemplateData);\n tRow.setAttribute('aria-rowindex', index.toString());\n };\n /**\n * To trigger query taskbar info event.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.triggerQueryTaskbarInfo = function () {\n if (!this.parent.queryTaskbarInfo) {\n return;\n }\n var length = this.parent.enableImmutableMode ?\n this.refreshedTr.length : this.ganttChartTableBody.querySelectorAll('tr').length;\n var trElement;\n var data;\n for (var index = 0; index < length; index++) {\n trElement = this.parent.enableImmutableMode ? this.refreshedTr[index] : this.ganttChartTableBody.querySelectorAll('tr')[index];\n data = this.refreshedData.length > 0 ? this.refreshedData[index] : this.parent.currentViewData[index];\n var segmentLength = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length;\n if (segmentLength > 0) {\n for (var i = 0; i < segmentLength; i++) {\n var segmentedTasks = trElement.getElementsByClassName('e-segmented-taskbar');\n var segmentElement = segmentedTasks[i];\n this.triggerQueryTaskbarInfoByIndex(segmentElement, data);\n }\n }\n else if (trElement) {\n this.triggerQueryTaskbarInfoByIndex(trElement, data);\n }\n }\n };\n /**\n *\n * @param {Element} trElement .\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.triggerQueryTaskbarInfoByIndex = function (trElement, data) {\n var _this = this;\n // eslint-disable-next-line\n var taskbarElement = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length > 0 ? trElement :\n trElement.querySelector('.' + cls.taskBarMainContainer);\n var rowElement;\n var segmentRowElement;\n if (data.ganttProperties.segments && data.ganttProperties.segments.length > 0) {\n segmentRowElement = trElement.parentElement.parentElement.parentElement;\n }\n var triggerTaskbarElement;\n var args = {\n data: data,\n rowElement: trElement,\n taskbarElement: taskbarElement,\n taskbarType: data.hasChildRecords ? 'ParentTask' : data.ganttProperties.isMilestone ? 'Milestone' : 'ChildTask'\n };\n var classCollections = this.getClassName(args);\n if (args.taskbarType === 'Milestone') {\n args.milestoneColor = taskbarElement.querySelector(classCollections[0]) ?\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor : null;\n args.baselineColor = trElement.querySelector(classCollections[1]) ?\n getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor :\n (trElement.querySelector('.' + cls.baselineBar) ? getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).backgroundColor : null);\n }\n else if (taskbarElement) {\n var childTask = taskbarElement.querySelector(classCollections[0]);\n var progressTask = taskbarElement.querySelector(classCollections[1]);\n args.taskbarBgColor = isNullOrUndefined(childTask) ? null : taskbarElement.classList.contains(cls.traceChildTaskBar) ?\n getComputedStyle(taskbarElement).backgroundColor :\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor;\n args.taskbarBorderColor = isNullOrUndefined(childTask) ? null : taskbarElement.classList.contains(cls.traceChildTaskBar) ?\n getComputedStyle(taskbarElement).backgroundColor :\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderColor;\n args.progressBarBgColor = isNullOrUndefined(progressTask) ? null :\n taskbarElement.classList.contains(cls.traceChildProgressBar) ?\n getComputedStyle(taskbarElement).backgroundColor :\n getComputedStyle(taskbarElement.querySelector(classCollections[1])).backgroundColor;\n // args.progressBarBorderColor = taskbarElement.querySelector(progressBarClass) ?\n // getComputedStyle(taskbarElement.querySelector(progressBarClass)).borderColor : null;\n if (segmentRowElement) {\n args.baselineColor = segmentRowElement.querySelector('.' + cls.baselineBar) ?\n getComputedStyle(segmentRowElement.querySelector('.' + cls.baselineBar)).backgroundColor : null;\n }\n else {\n args.baselineColor = trElement.querySelector('.' + cls.baselineBar) ?\n getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).backgroundColor : null;\n }\n args.taskLabelColor = taskbarElement.querySelector('.' + cls.taskLabel) ?\n getComputedStyle(taskbarElement.querySelector('.' + cls.taskLabel)).color : null;\n }\n if (segmentRowElement) {\n args.rightLabelColor = segmentRowElement.querySelector('.' + cls.rightLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color : null;\n args.leftLabelColor = segmentRowElement.querySelector('.' + cls.leftLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color : null;\n }\n else {\n args.rightLabelColor = trElement.querySelector('.' + cls.rightLabelContainer) &&\n (trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color : null;\n args.leftLabelColor = trElement.querySelector('.' + cls.leftLabelContainer) &&\n (trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color : null;\n }\n this.parent.trigger('queryTaskbarInfo', args, function (taskbarArgs) {\n _this.updateQueryTaskbarInfoArgs(taskbarArgs, rowElement, triggerTaskbarElement);\n });\n };\n /**\n * To update query taskbar info args.\n *\n * @param {IQueryTaskbarInfoEventArgs} args .\n * @param {Element} rowElement .\n * @param {Element} taskBarElement .\n * @returns {void}\n * @private\n */\n ChartRows.prototype.updateQueryTaskbarInfoArgs = function (args, rowElement, taskBarElement) {\n var trElement = args.rowElement;\n var taskbarElement = args.taskbarElement;\n var classCollections = this.getClassName(args);\n var segmentRowElement;\n if (args.data.ganttProperties.segments && args.data.ganttProperties.segments.length > 0) {\n segmentRowElement = trElement.parentElement.parentElement.parentElement;\n }\n if (args.taskbarType === 'Milestone') {\n if (taskbarElement.querySelector(classCollections[0]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.milestoneColor) {\n taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.milestoneColor;\n }\n if (trElement.querySelector(classCollections[1]) &&\n getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor !== args.baselineColor) {\n trElement.querySelector(classCollections[1]).style.backgroundColor = args.baselineColor;\n }\n if (trElement.querySelector('.' + cls.baselineBar) &&\n getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).borderTopColor !== args.baselineColor) {\n trElement.querySelector('.' + cls.baselineBar).style.backgroundColor = args.baselineColor;\n }\n }\n else if (taskbarElement) {\n if (taskbarElement.querySelector(classCollections[0]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.taskbarBgColor) {\n taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.taskbarBgColor;\n }\n if (taskbarElement.querySelector(classCollections[0]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).borderColor !== args.taskbarBorderColor) {\n taskbarElement.querySelector(classCollections[0]).style.borderColor = args.taskbarBorderColor;\n }\n if (taskbarElement.querySelector(classCollections[1]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[1])).backgroundColor !== args.progressBarBgColor) {\n taskbarElement.querySelector(classCollections[1]).style.backgroundColor = args.progressBarBgColor;\n }\n if (taskbarElement.classList.contains(cls.traceChildTaskBar) &&\n getComputedStyle(taskbarElement).backgroundColor !== args.taskbarBgColor) {\n taskbarElement.style.backgroundColor = args.taskbarBgColor;\n }\n if (taskbarElement.classList.contains(cls.traceChildTaskBar) &&\n getComputedStyle(taskbarElement).borderColor !== args.taskbarBorderColor) {\n taskbarElement.style.borderColor = args.taskbarBorderColor;\n }\n if (taskbarElement.classList.contains(cls.traceChildProgressBar) &&\n getComputedStyle(taskbarElement).backgroundColor !== args.progressBarBgColor) {\n taskbarElement.style.backgroundColor = args.progressBarBgColor;\n }\n // if (taskbarElement.querySelector(progressBarClass) &&\n // getComputedStyle(taskbarElement.querySelector(progressBarClass)).borderColor !== args.progressBarBorderColor) {\n // (taskbarElement.querySelector(progressBarClass) as HTMLElement).style.borderColor = args.progressBarBorderColor;\n // }\n if (taskbarElement.querySelector('.' + cls.taskLabel) &&\n getComputedStyle(taskbarElement.querySelector('.' + cls.taskLabel)).color !== args.taskLabelColor) {\n taskbarElement.querySelector('.' + cls.taskLabel).style.color = args.taskLabelColor;\n }\n if (segmentRowElement) {\n if (segmentRowElement.querySelector('.' + cls.baselineBar) &&\n getComputedStyle(segmentRowElement.querySelector('.' + cls.baselineBar)).backgroundColor !== args.baselineColor) {\n segmentRowElement.querySelector('.' + cls.baselineBar).style.backgroundColor = args.baselineColor;\n }\n }\n else {\n if (trElement.querySelector('.' + cls.baselineBar) &&\n getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).backgroundColor !== args.baselineColor) {\n trElement.querySelector('.' + cls.baselineBar).style.backgroundColor = args.baselineColor;\n }\n }\n }\n if (segmentRowElement) {\n if (segmentRowElement.querySelector('.' + cls.leftLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color !== args.leftLabelColor) {\n (segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label).style.color = args.leftLabelColor;\n }\n if (segmentRowElement.querySelector('.' + cls.rightLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color !== args.rightLabelColor) {\n (segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label).style.color = args.rightLabelColor;\n }\n }\n else {\n if (trElement.querySelector('.' + cls.leftLabelContainer) &&\n (trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color !== args.leftLabelColor) {\n (trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label).style.color = args.leftLabelColor;\n }\n if (trElement.querySelector('.' + cls.rightLabelContainer) &&\n (trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color !== args.rightLabelColor) {\n (trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label).style.color = args.rightLabelColor;\n }\n }\n };\n ChartRows.prototype.getClassName = function (args) {\n var classCollection = [];\n classCollection.push('.' + (args.taskbarType === 'ParentTask' ?\n cls.traceParentTaskBar : args.taskbarType === 'ChildTask' ? cls.traceChildTaskBar : cls.traceMilestone));\n classCollection.push('.' + (args.taskbarType === 'ParentTask' ?\n cls.traceParentProgressBar : args.taskbarType === 'ChildTask' ? cls.traceChildProgressBar : cls.baselineMilestoneContainer));\n return classCollection;\n };\n /**\n * To compile template string.\n *\n * @param {string} template .\n * @returns {Function} .\n * @private\n */\n ChartRows.prototype.templateCompiler = function (template) {\n if (!isNullOrUndefined(template) && template !== '') {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim(), this.parent);\n }\n else {\n return compile(template, this.parent);\n }\n }\n catch (e) {\n return compile(template, this.parent);\n }\n }\n return null;\n };\n // to update the eOverlapped property\n ChartRows.prototype.updateOverlapped = function () {\n for (var k = 0; k < this.parent.treeGrid.parentData.length; k++) {\n var childRecords = this.parent.treeGrid.parentData[k].childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n if (childRecords[i + 1]) {\n childRecords[i].ganttProperties.eOverlapped = undefined;\n }\n for (var j = i + 1; j < childRecords.length; j++) {\n childRecords[j].ganttProperties.eOverlapped = undefined;\n if (childRecords[i].ganttProperties.startDate.getTime() < childRecords[j].ganttProperties.endDate.getTime() &&\n childRecords[i].ganttProperties.endDate.getTime() > childRecords[j].ganttProperties.startDate.getTime()) {\n childRecords[j].ganttProperties.eOverlapped = true;\n childRecords[i].ganttProperties.eOverlapped = true;\n }\n else {\n if (isNullOrUndefined(childRecords[j].ganttProperties.eOverlapped)) {\n childRecords[j].ganttProperties.eOverlapped = false;\n }\n if (isNullOrUndefined(childRecords[i].ganttProperties.eOverlapped)) {\n childRecords[i].ganttProperties.eOverlapped = false;\n }\n }\n }\n }\n }\n };\n // To update the row height when allow overallocation set to false\n ChartRows.prototype.updateDragDropRecords = function (data, tr) {\n var childRecords = data.childRecords;\n var rowIndex = this.parent.currentViewData.indexOf(data);\n var treeGridContentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n if (!tr) {\n tr = this.ganttChartTableBody.childNodes[rowIndex];\n }\n tr['style'].height = this.parent.treeGrid.getRowByIndex(rowIndex)['style'].height = this.parent.rowHeight + 'px';\n this.parent.contentHeight = treeGridContentHeight;\n var rowIDs = [];\n var rowCounts = 0;\n if (data) {\n for (var i = 0; i < childRecords.length; i++) {\n for (var j = i + 1; j < childRecords.length; j++) {\n var taskbarContainer = tr.getElementsByClassName('e-taskbar-main-container');\n for (var k = 0; k < taskbarContainer.length; k++) {\n if (childRecords[i].ganttProperties.startDate.getTime() < childRecords[j].ganttProperties.endDate.getTime() &&\n childRecords[i].ganttProperties.endDate.getTime() > childRecords[j].ganttProperties.startDate.getTime()) {\n if (taskbarContainer[k].getAttribute('rowuniqueid') === childRecords[j]['rowUniqueID'] &&\n rowIDs.indexOf(childRecords[j]['rowUniqueID']) == -1) {\n rowIDs.push(childRecords[j]['rowUniqueID']);\n rowCounts++;\n tr.children[0]['style'].verticalAlign = 'baseline';\n tr.getElementsByClassName('e-taskbar-main-container')[k]['style'].marginTop = (rowCounts * this.parent.rowHeight) + this.taskBarMarginTop + 'px';\n tr['style'].height = this.parent.treeGrid.getRowByIndex(rowIndex)['style'].height = parseInt(tr['style'].height) + this.parent.rowHeight + 'px';\n }\n }\n else {\n if (taskbarContainer[k].getAttribute('rowuniqueid') === childRecords[j]['rowUniqueID'] &&\n rowIDs.indexOf(childRecords[j]['rowUniqueID']) == -1 && this.parent.rowDragAndDropModule &&\n this.parent.rowDragAndDropModule['draggedRecord'] && taskbarContainer[k].getAttribute('rowuniqueid') ===\n this.parent.rowDragAndDropModule['draggedRecord']['rowUniqueID'] && this.parent.rowDragAndDropModule['draggedRecord']['rowUniqueID'] === childRecords[j]['rowUniqueID']) {\n tr.getElementsByClassName('e-taskbar-main-container')[k]['style'].marginTop =\n this.parent.editModule.taskbarEditModule.draggedRecordMarginTop;\n }\n }\n }\n }\n }\n this.parent.contentHeight = treeGridContentHeight;\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n };\n /**\n * To refresh edited TR\n *\n * @param {number} index .\n * @param {boolean} isValidateRange .\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.refreshRow = function (index, isValidateRange) {\n var tr = this.ganttChartTableBody.childNodes[index];\n var selectedItem = this.parent.currentViewData[index];\n if (index !== -1 && selectedItem) {\n var data = selectedItem;\n if (!this.parent.allowTaskbarOverlap && this.parent.viewType === 'ResourceView' && data.expanded) {\n tr['style'].height = this.parent.treeGrid.getRowByIndex(index)['style'].height = this.parent.rowHeight + 'px';\n }\n if (this.parent.viewType === 'ResourceView' && data.hasChildRecords && !data.expanded && this.parent.enableMultiTaskbar) {\n tr.replaceChild(this.getResourceParent(data).childNodes[0], tr.childNodes[0]);\n }\n else {\n if (this.parent.viewType === 'ResourceView' && this.parent.allowTaskbarDragAndDrop && !data.expanded) {\n tr.replaceWith(this.getGanttChartRow(index, data));\n }\n else {\n tr.replaceChild(this.getGanttChartRow(index, data).childNodes[0], tr.childNodes[0]);\n }\n }\n this.parent.renderTemplates();\n if (this.parent.viewType === 'ResourceView' && data.hasChildRecords && this.parent.showOverAllocation && this.parent.allowTaskbarOverlap) {\n if (isValidateRange) {\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n else {\n this.parent.dataOperation.updateOverlappingValues(data);\n this.parent.ganttChartModule.renderRangeContainer([data]);\n }\n }\n var segmentLength = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length;\n if (segmentLength > 0) {\n for (var i = 0; i < segmentLength; i++) {\n var segmentedTasks = tr.getElementsByClassName('e-segmented-taskbar');\n var segmentElement = segmentedTasks[i];\n this.triggerQueryTaskbarInfoByIndex(segmentElement, data);\n }\n }\n else {\n this.triggerQueryTaskbarInfoByIndex(tr, data);\n }\n var dataId = this.parent.viewType === 'ProjectView' ? data.ganttProperties.taskId : data.ganttProperties.rowUniqueID;\n this.parent.treeGrid.grid.setRowData(dataId, data);\n if (this.parent.viewType === 'ResourceView' && data.hasChildRecords && !data.expanded && this.parent.enableMultiTaskbar && !this.parent.allowTaskbarOverlap) {\n this.updateDragDropRecords(selectedItem, tr);\n }\n if (this.parent.viewType === 'ResourceView' && data.hasChildRecords && this.parent.showOverAllocation && !this.parent.allowTaskbarOverlap) {\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n var nextEditableElement = this.parent.ganttChartModule.tempNextElement;\n if (this.parent.ganttChartModule.isEditableElement && nextEditableElement) {\n this.parent.treeGrid.grid.focusModule.focus();\n addClass([this.parent.treeGrid.getRows()[tr['ariaRowIndex']].children[this.parent.ganttChartModule.childrenIndex]], 'e-focused');\n this.parent.ganttChartModule.tempNextElement = null;\n }\n var row = this.parent.treeGrid.grid.getRowObjectFromUID(this.parent.treeGrid.grid.getDataRows()[index].getAttribute('data-uid'));\n if (!isNullOrUndefined(row)) {\n row.data = data;\n }\n }\n };\n ChartRows.prototype.updateResourceTaskbarElement = function (tRow, parentTr) {\n var cloneElement = tRow.querySelector('.e-taskbar-main-container');\n addClass([cloneElement], 'collpse-parent-border');\n var id = tRow.querySelector('.' + cls.taskBarMainContainer).getAttribute('rowUniqueId');\n var ganttData = this.parent.getRecordByID(id);\n var zIndex = \"\";\n if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {\n zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();\n }\n var cloneChildElement = cloneElement.cloneNode(true);\n cloneChildElement.style.zIndex = zIndex;\n parentTr[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);\n };\n ChartRows.prototype.getResourceParent = function (record) {\n var chartRows = this.parent.ganttChartModule.getChartRows();\n //Below code is for rendering taskbartemplate in resource view with multi taskbar\n if (this.parent.initialChartRowElements && (!this.parent.allowTaskbarDragAndDrop && this.parent.allowTaskbarOverlap)) {\n for (var j = 0; j < this.parent.initialChartRowElements.length; j++) {\n if (!isNullOrUndefined(chartRows[j])) {\n if (!isNullOrUndefined(chartRows[j].childNodes[0].childNodes[1].childNodes[2]) &&\n !isNullOrUndefined(this.parent.initialChartRowElements[j].childNodes[0].childNodes[1].childNodes[2])) {\n // eslint-disable-next-line\n chartRows[j].childNodes[0].childNodes[1].childNodes[2]['innerHTML'] = this.parent.initialChartRowElements[j].childNodes[0].childNodes[1].childNodes[2]['innerHTML'];\n }\n }\n }\n }\n this.templateData = record;\n var parentTrNode = this.getTableTrNode();\n var leftLabelNode = this.leftLabelContainer();\n var collapseParent = createElement('div', {\n className: 'e-collapse-parent'\n });\n parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);\n var tasks = this.parent.dataOperation.setSortedChildTasks(record);\n this.parent.dataOperation.updateOverlappingIndex(tasks);\n var tRow;\n if (this.parent.enableVirtualization) {\n for (var i = 0; i < record.childRecords.length; i++) {\n tRow = this.getGanttChartRow(record.childRecords[i].index, this.parent.flatData[record.childRecords[i].index]);\n this.updateResourceTaskbarElement(tRow, parentTrNode);\n }\n }\n else {\n for (var i = 0; i < chartRows.length; i++) {\n if (chartRows[i].classList.contains('gridrowtaskId'\n + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {\n this.updateResourceTaskbarElement(chartRows[i], parentTrNode);\n }\n }\n }\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);\n return parentTrNode[0].childNodes[0];\n };\n /**\n * To refresh all edited records\n *\n * @param {IGanttData} items .\n * @param {boolean} isValidateRange .\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.refreshRecords = function (items, isValidateRange) {\n if (this.parent.isGanttChartRendered) {\n this.parent.renderTemplates();\n if (this.parent.viewType === 'ResourceView' && this.parent.enableMultiTaskbar) {\n var sortedRecords = [];\n sortedRecords = new DataManager(items).executeLocal(new Query()\n .sortBy('expanded', 'Descending'));\n items = sortedRecords;\n }\n for (var i = 0; i < items.length; i++) {\n var index = this.parent.currentViewData.indexOf(items[i]);\n this.refreshRow(index, isValidateRange);\n }\n this.parent.ganttChartModule.updateLastRowBottomWidth();\n }\n };\n ChartRows.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('renderPanels', this.createChartTable);\n this.parent.off('dataReady', this.initiateTemplates);\n this.parent.off('destroy', this.destroy);\n };\n ChartRows.prototype.destroy = function () {\n this.removeEventListener();\n };\n ChartRows.prototype.generateAriaLabel = function (data) {\n data = this.templateData;\n var defaultValue = '';\n var nameConstant = this.parent.localeObj.getConstant('name');\n var startDateConstant = this.parent.localeObj.getConstant('startDate');\n var endDateConstant = this.parent.localeObj.getConstant('endDate');\n var durationConstant = this.parent.localeObj.getConstant('duration');\n var taskNameVal = data.ganttProperties.taskName;\n var startDateVal = data.ganttProperties.startDate;\n var endDateVal = data.ganttProperties.endDate;\n var durationVal = data.ganttProperties.duration;\n if (data.ganttProperties.isMilestone) {\n defaultValue = nameConstant + ' ' + taskNameVal + ' ' + startDateConstant + ' '\n + this.parent.getFormatedDate(startDateVal);\n }\n else {\n if (taskNameVal) {\n defaultValue += nameConstant + ' ' + taskNameVal + ' ';\n }\n if (startDateVal) {\n defaultValue += startDateConstant + ' ' + this.parent.getFormatedDate(startDateVal) + ' ';\n }\n if (endDateVal) {\n defaultValue += endDateConstant + ' ' + this.parent.getFormatedDate(endDateVal) + ' ';\n }\n if (durationVal) {\n defaultValue += durationConstant + ' '\n + this.parent.getDurationString(durationVal, data.ganttProperties.durationUnit);\n }\n }\n return defaultValue;\n };\n ChartRows.prototype.generateBaselineAriaLabel = function (data) {\n data = this.templateData;\n var defaultValue = '';\n var nameConstant = this.parent.localeObj.getConstant('name');\n var startDateConstant = this.parent.localeObj.getConstant('startDate');\n var endDateConstant = this.parent.localeObj.getConstant('endDate');\n var taskNameVal = data.ganttProperties.taskName;\n var startDateVal = data.ganttProperties.baselineStartDate;\n var endDateVal = data.ganttProperties.baselineEndDate;\n defaultValue += 'Baseline' + ' ';\n defaultValue += nameConstant + ' ' + taskNameVal + ' ';\n defaultValue += startDateConstant + ' ' + this.parent.getFormatedDate(startDateVal) + ' ';\n defaultValue += endDateConstant + ' ' + this.parent.getFormatedDate(endDateVal) + ' ';\n return defaultValue;\n };\n ChartRows.prototype.generateSpiltTaskAriaLabel = function (data, ganttProp) {\n var defaultValue = '';\n var startDateConstant = this.parent.localeObj.getConstant('startDate');\n var endDateConstant = this.parent.localeObj.getConstant('endDate');\n var durationConstant = this.parent.localeObj.getConstant('duration');\n var startDateVal = data.startDate;\n var endDateVal = data.endDate;\n var durationVal = data.duration;\n if (startDateVal) {\n defaultValue += startDateConstant + ' ' + this.parent.getFormatedDate(startDateVal) + ' ';\n }\n if (endDateVal) {\n defaultValue += endDateConstant + ' ' + this.parent.getFormatedDate(endDateVal) + ' ';\n }\n if (durationVal) {\n defaultValue += durationConstant + ' '\n + this.parent.getDurationString(durationVal, ganttProp.durationUnit);\n }\n return defaultValue;\n };\n ChartRows.prototype.generateTaskLabelAriaLabel = function (type) {\n var label = '';\n if (type === 'left' && this.parent.labelSettings.leftLabel && !this.leftTaskLabelTemplateFunction) {\n label += this.parent.localeObj.getConstant('leftTaskLabel') +\n ' ' + this.getTaskLabel(this.parent.labelSettings.leftLabel);\n }\n else if (type === 'right' && this.parent.labelSettings.rightLabel && !this.rightTaskLabelTemplateFunction) {\n label += this.parent.localeObj.getConstant('rightTaskLabel') +\n ' ' + this.getTaskLabel(this.parent.labelSettings.rightLabel);\n }\n return label;\n };\n return ChartRows;\n}(DateProcessor));\nexport { ChartRows };\n","import { isScheduledTask } from '../base/utils';\nimport { getValue, isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nvar Dependency = /** @class */ (function () {\n function Dependency(gantt) {\n this.parentRecord = [];\n this.parentIds = [];\n this.parentPredecessors = [];\n this.parent = gantt;\n this.dateValidateModule = this.parent.dateValidationModule;\n }\n /**\n * Method to populate predecessor collections in records\n *\n * @returns {void} .\n * @private\n */\n Dependency.prototype.ensurePredecessorCollection = function () {\n var predecessorTasks = this.parent.predecessorsCollection;\n var length = predecessorTasks.length - 1;\n for (var count = length; count >= 0; count--) {\n var ganttData = predecessorTasks[count];\n var ganttProp = ganttData.ganttProperties;\n if ((!ganttData.hasChildRecords && !this.parent.allowParentDependency) || this.parent.allowParentDependency) {\n this.ensurePredecessorCollectionHelper(ganttData, ganttProp);\n }\n }\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {ITaskData} ganttProp .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.ensurePredecessorCollectionHelper = function (ganttData, ganttProp) {\n var predecessorVal = ganttProp.predecessorsName;\n if (predecessorVal && (typeof predecessorVal === 'string' || typeof predecessorVal === 'number')) {\n this.parent.setRecordValue('predecessor', this.calculatePredecessor(predecessorVal, ganttData), ganttProp, true);\n }\n else if (predecessorVal && typeof predecessorVal === 'object' && predecessorVal.length) {\n var preValues = [];\n for (var c = 0; c < predecessorVal.length; c++) {\n var predecessorItem = predecessorVal[c];\n var preValue = {};\n preValue.from = getValue('from', predecessorItem);\n preValue.to = getValue('to', predecessorItem) ? getValue('to', predecessorItem) : ganttProp.rowUniqueID;\n preValue.type = getValue('type', predecessorItem) ? getValue('type', predecessorItem) : 'FS';\n var offsetUnits = getValue('offset', predecessorItem);\n if (isNullOrUndefined(offsetUnits)) {\n preValue.offset = 0;\n preValue.offsetUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n else if (typeof offsetUnits === 'string') {\n var tempOffsetUnits = this.getOffsetDurationUnit(getValue('offset', predecessorItem));\n preValue.offset = tempOffsetUnits.duration;\n preValue.offsetUnit = tempOffsetUnits.durationUnit;\n }\n else {\n preValue.offset = parseFloat(offsetUnits.toString());\n preValue.offsetUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n var isOwnParent = this.checkIsParent(preValue.from.toString());\n if (!isOwnParent) {\n preValues.push(preValue);\n }\n }\n this.parent.setRecordValue('predecessor', preValues, ganttProp, true);\n }\n this.parent.setRecordValue('predecessorsName', this.getPredecessorStringValue(ganttData), ganttProp, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, ganttProp.predecessorsName, ganttData);\n this.parent.setRecordValue(this.parent.taskFields.dependency, ganttProp.predecessorsName, ganttData);\n };\n /**\n * To render unscheduled empty task with 1 day duration during predecessor map\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updateUnscheduledDependency = function (data) {\n var task = this.parent.taskFields;\n var prdList = !isNullOrUndefined(data[task.dependency]) ?\n data[task.dependency].toString().split(',') : [];\n for (var i = 0; i < prdList.length; i++) {\n var predId = parseInt(prdList[i], 10);\n if (!isNaN(predId)) {\n var predData = this.parent.getRecordByID(predId.toString());\n var record = !isNullOrUndefined(predData) ?\n extend({}, {}, predData.taskData, true) : null;\n if (!isNullOrUndefined(record) && isNullOrUndefined(record[task.startDate])\n && isNullOrUndefined(record[task.duration]) && isNullOrUndefined(record[task.endDate])) {\n record[task.duration] = 1;\n record[task.startDate] = this.parent.projectStartDate;\n this.parent.updateRecordByID(record);\n }\n }\n }\n };\n /**\n *\n * @param {string} fromId .\n * @returns {boolean} .\n */\n Dependency.prototype.checkIsParent = function (fromId) {\n var boolValue = false;\n var task = this.parent.connectorLineModule.getRecordByID(fromId);\n if (task.hasChildRecords) {\n boolValue = true;\n }\n return boolValue;\n };\n /**\n * Get predecessor collection object from predecessor string value\n *\n * @param {string | number} predecessorValue .\n * @param {IGanttData} ganttRecord .\n * @returns {IPredecessor[]} .\n * @private\n */\n Dependency.prototype.calculatePredecessor = function (predecessorValue, ganttRecord) {\n var _this = this;\n var predecessor = predecessorValue.toString();\n var collection = [];\n var match;\n var isrelationship;\n var values;\n var offsetValue;\n var predecessorText;\n predecessor.split(',').forEach(function (el) {\n values = el.split('+');\n offsetValue = '+';\n if (el.indexOf('-') >= 0) {\n values = el.split('-');\n offsetValue = '-';\n }\n match = [];\n var ids = _this.parent.viewType === 'ResourceView' ? _this.parent.getTaskIds() : _this.parent.ids;\n var isExist1 = _this.parent.viewType === 'ResourceView' ? ids.indexOf('T' + values[0]) : ids.indexOf(values[0]);\n if (isExist1 !== -1) {\n match[0] = values[0];\n }\n else {\n if (ids.indexOf(values[0]) === -1) {\n match = values[0].split(\" \");\n if (match.length === 1) {\n if (match[0].indexOf(\" \") != -1) {\n match = values[0].match(/(\\d+|[A-z]+)/g);\n }\n else {\n match[0] = values[0].slice(0, -2);\n match[1] = values[0].slice(-2);\n }\n }\n }\n else {\n match[0] = values[0];\n }\n }\n var isExist = _this.parent.viewType === 'ResourceView' ? ids.indexOf('T' + match[0]) : ids.indexOf(match[0]);\n /*Validate for appropriate predecessor*/\n if (match[0] && isExist !== -1) {\n if (match.length > 1) {\n var type = match[1].toUpperCase();\n if (type === 'FS' || type === 'FF' || type === 'SF' || type === 'SS') {\n predecessorText = type;\n }\n else {\n predecessorText = 'FS';\n }\n }\n else {\n predecessorText = 'FS';\n }\n }\n else {\n return; // exit current loop for invalid id (match[0])\n }\n var tempOffset = values.length > 1 ? offsetValue + '' + values[1] : '0';\n var offsetUnits = _this.getOffsetDurationUnit(tempOffset);\n var obj = {\n from: match[0],\n type: predecessorText,\n isDrawn: false,\n to: _this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId.toString()\n : ganttRecord.ganttProperties.rowUniqueID.toString(),\n offsetUnit: offsetUnits.durationUnit,\n offset: offsetUnits.duration\n };\n var isOwnParent = _this.checkIsParent(match[0]);\n if (!_this.parent.allowParentDependency) {\n if (!isOwnParent) {\n collection.push(obj);\n }\n }\n else {\n var fromData = _this.parent.connectorLineModule.getRecordByID(obj.to);\n var toData = _this.parent.connectorLineModule.getRecordByID(obj.from);\n var isValid = void 0;\n if (_this.parent.connectorLineEditModule && toData && fromData) {\n isValid = _this.parent.connectorLineEditModule.validateParentPredecessor(toData, fromData);\n if (isValid)\n collection.push(obj);\n }\n else {\n collection.push(obj);\n }\n match.splice(0);\n }\n });\n return collection;\n };\n /**\n * Get predecessor value as string with offset values\n *\n * @param {IGanttData} data .\n * @returns {string} .\n * @private\n */\n Dependency.prototype.getPredecessorStringValue = function (data) {\n var predecessors = data.ganttProperties.predecessor;\n var durationUnitTexts = this.parent.durationUnitTexts;\n var resultString = '';\n var temp1;\n var match;\n match = [];\n if (predecessors) {\n var length_1 = predecessors.length;\n for (var i = 0; i < length_1; i++) {\n var currentValue = predecessors[i];\n var temp = '';\n var id = this.parent.viewType === 'ResourceView' ? data.ganttProperties.taskId\n : data.ganttProperties.rowUniqueID;\n if (currentValue.from !== id.toString()) {\n temp = currentValue.from + currentValue.type;\n if (typeof (data.ganttProperties.taskId) === \"string\") {\n match[0] = temp.slice(0, -2);\n match[1] = temp.slice(-2);\n temp1 = match[0] + \" \" + match[1];\n }\n else {\n temp1 = temp;\n }\n temp = temp1;\n if (currentValue.offset !== 0) {\n temp += currentValue.offset > 0 ? ('+' + currentValue.offset + ' ') : (currentValue.offset + ' ');\n var multiple = currentValue.offset !== 1;\n if (currentValue.offsetUnit === 'day') {\n temp += multiple ? getValue('days', durationUnitTexts) : getValue('day', durationUnitTexts);\n }\n else if (currentValue.offsetUnit === 'hour') {\n temp += multiple ? getValue('hours', durationUnitTexts) : getValue('hour', durationUnitTexts);\n }\n else {\n temp += multiple ? getValue('minutes', durationUnitTexts) : getValue('minute', durationUnitTexts);\n }\n }\n if (resultString.length > 0) {\n resultString = resultString + ',' + temp;\n }\n else {\n resultString = temp;\n }\n }\n }\n }\n return resultString;\n };\n /*Get duration and duration unit value from tasks*/\n Dependency.prototype.getOffsetDurationUnit = function (val) {\n var duration = 0;\n var durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n var durationUnitLabels = this.parent.durationUnitEditText;\n if (typeof val === 'string') {\n var values = val.match(/[^0-9]+|[0-9]+/g);\n for (var x = 0; x < values.length; x++) {\n values[x] = (values[x]).trim();\n }\n if (values[0] === '-' && values[1]) {\n values[1] = values[0] + values[1];\n values.shift();\n }\n else if (values[0] === '+') {\n values.shift();\n }\n if (values[1] === '.' && !isNaN(parseInt(values[2], 10))) {\n values[0] += values[1] + values[2];\n values.splice(1, 2);\n }\n if (values && values.length <= 2) {\n duration = parseFloat(values[0]);\n durationUnit = values[1] ? (values[1].toLowerCase()).trim() : '';\n if (getValue('minute', durationUnitLabels).indexOf(durationUnit) !== -1) {\n durationUnit = 'minute';\n }\n else if (getValue('hour', durationUnitLabels).indexOf(durationUnit) !== -1) {\n durationUnit = 'hour';\n }\n else if (getValue('day', durationUnitLabels).indexOf(durationUnit) !== -1) {\n durationUnit = 'day';\n }\n else {\n durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n }\n }\n else {\n duration = val;\n durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n if (isNaN(duration)) {\n duration = 0;\n durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n return {\n duration: duration,\n durationUnit: durationUnit\n };\n };\n /**\n * Update predecessor object in both from and to tasks collection\n *\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updatePredecessors = function () {\n var predecessorsCollection = this.parent.predecessorsCollection;\n var ganttRecord;\n var length = predecessorsCollection.length;\n for (var count = 0; count < length; count++) {\n ganttRecord = predecessorsCollection[count];\n if ((!ganttRecord.hasChildRecords && !this.parent.allowParentDependency) || this.parent.allowParentDependency) {\n this.updatePredecessorHelper(ganttRecord, predecessorsCollection);\n }\n }\n };\n /**\n * To update predecessor collection to successor tasks\n *\n * @param {IGanttData} ganttRecord .\n * @param {IGanttData[]} predecessorsCollection .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updatePredecessorHelper = function (ganttRecord, predecessorsCollection) {\n var connectorsCollection = ganttRecord.ganttProperties.predecessor;\n var successorGanttRecord;\n var connectorCount = connectorsCollection.length;\n predecessorsCollection = isNullOrUndefined(predecessorsCollection) ? [] : predecessorsCollection;\n for (var i = 0; i < connectorCount; i++) {\n var connector = connectorsCollection[i];\n successorGanttRecord = this.parent.connectorLineModule.getRecordByID(connector.from);\n var id = this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId\n : ganttRecord.ganttProperties.rowUniqueID;\n if (connector.from !== id.toString()) {\n if (successorGanttRecord) {\n var predecessorCollection = void 0;\n if (successorGanttRecord.ganttProperties.predecessor) {\n predecessorCollection = (extend([], successorGanttRecord.ganttProperties.predecessor, [], true));\n predecessorCollection.push(connector);\n this.parent.setRecordValue('predecessor', predecessorCollection, successorGanttRecord.ganttProperties, true);\n // successorGanttRecord.ganttProperties.predecessor.push(connector);\n }\n else {\n predecessorCollection = [];\n predecessorCollection.push(connector);\n this.parent.setRecordValue('predecessor', predecessorCollection, successorGanttRecord.ganttProperties, true);\n // this.parent.setRecordValue('predecessor', [], successorGanttRecord.ganttProperties, true);\n // successorGanttRecord.ganttProperties.predecessor.push(connector);\n predecessorsCollection.push(successorGanttRecord);\n }\n }\n }\n }\n };\n /**\n * Method to validate date of tasks with predecessor values for all records\n *\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updatedRecordsDateByPredecessor = function () {\n if (!this.parent.autoCalculateDateScheduling) {\n return;\n }\n var flatData = this.parent.flatData;\n var totLength = this.parent.flatData.length;\n for (var count = 0; count < totLength; count++) {\n if (flatData[count].ganttProperties.predecessorsName) {\n this.validatePredecessorDates(flatData[count]);\n var predecessorCollection = flatData[count].ganttProperties.predecessor;\n if (predecessorCollection && predecessorCollection.length > 1) {\n for (var i = 0; i < predecessorCollection.length; i++) {\n var validateRecord = this.parent.getRecordByID(predecessorCollection[i].to);\n if (validateRecord) {\n this.validatePredecessorDates(validateRecord);\n }\n }\n }\n if (flatData[count].hasChildRecords && this.parent.editModule && !this.parent.allowUnscheduledTasks\n && this.parent.allowParentDependency) {\n this.parent.editModule['updateChildItems'](flatData[count]);\n }\n }\n }\n };\n Dependency.prototype.updateParentPredecessor = function () {\n if (this.parent.enablePredecessorValidation) {\n var parentPredecessorLength = this.parentPredecessors.length;\n for (var i = parentPredecessorLength - 1; i >= 0; i--) {\n var item = this.parentPredecessors[i];\n this.validatePredecessorDates(item);\n if (item.ganttProperties.startDate) {\n this.parent.editModule['updateChildItems'](item);\n }\n }\n }\n };\n /**\n * To validate task date values with dependency\n *\n * @param {IGanttData} ganttRecord .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.validatePredecessorDates = function (ganttRecord) {\n if (ganttRecord.ganttProperties.predecessor) {\n var predecessorsCollection = ganttRecord.ganttProperties.predecessor;\n var count = void 0;\n var parentGanttRecord = void 0;\n var record = null;\n var currentTaskId_1 = this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId.toString()\n : ganttRecord.ganttProperties.rowUniqueID.toString();\n var predecessors = predecessorsCollection.filter(function (data) {\n if (data.to === currentTaskId_1) {\n return data;\n }\n else {\n return null;\n }\n });\n for (count = 0; count < predecessors.length; count++) {\n var predecessor = predecessors[count];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from);\n record = this.parent.connectorLineModule.getRecordByID(predecessor.to);\n if (this.parent.allowParentDependency && this.parent.isLoad && this.parentPredecessors.indexOf(ganttRecord) == -1\n && (ganttRecord.hasChildRecords || record.hasChildRecords)) {\n this.parentPredecessors.push(ganttRecord);\n }\n if (record.ganttProperties.isAutoSchedule || this.parent.validateManualTasksOnLinking) {\n this.validateChildGanttRecord(parentGanttRecord, record);\n }\n }\n }\n };\n /**\n * Method to validate task with predecessor\n *\n * @param {IGanttData} parentGanttRecord .\n * @param {IGanttData} childGanttRecord .\n * @returns {void} .\n */\n Dependency.prototype.validateChildGanttRecord = function (parentGanttRecord, childGanttRecord) {\n if (this.parent.editedTaskBarItem === childGanttRecord || isNullOrUndefined(isScheduledTask(parentGanttRecord.ganttProperties))\n || isNullOrUndefined(isScheduledTask(childGanttRecord.ganttProperties))) {\n return;\n }\n if (this.parent.isInPredecessorValidation && (childGanttRecord.ganttProperties.isAutoSchedule ||\n this.parent.validateManualTasksOnLinking)) {\n var childRecordProperty = childGanttRecord.ganttProperties;\n var currentTaskId_2 = this.parent.viewType === 'ResourceView' ? childRecordProperty.taskId.toString()\n : childRecordProperty.rowUniqueID.toString();\n var predecessorsCollection = childRecordProperty.predecessor;\n var childPredecessor = predecessorsCollection.filter(function (data) {\n if (data.to === currentTaskId_2) {\n return data;\n }\n else {\n return null;\n }\n });\n var startDate = this.getPredecessorDate(childGanttRecord, childPredecessor);\n this.parent.setRecordValue('startDate', startDate, childRecordProperty, true);\n this.parent.dataOperation.updateMappingData(childGanttRecord, 'startDate');\n var segments = childGanttRecord.ganttProperties.segments;\n if (isNullOrUndefined(segments)) {\n this.dateValidateModule.calculateEndDate(childGanttRecord);\n }\n this.parent.dataOperation.updateWidthLeft(childGanttRecord);\n if (!this.parent.isLoad && !this.parent.isFromOnPropertyChange && childGanttRecord.parentItem && this.parent.isInPredecessorValidation &&\n this.parent.getParentTask(childGanttRecord.parentItem).ganttProperties.isAutoSchedule) {\n if (this.parentIds.indexOf(childGanttRecord.parentItem.uniqueID) === -1) {\n this.parentIds.push(childGanttRecord.parentItem.uniqueID);\n this.parentRecord.push(childGanttRecord.parentItem);\n }\n }\n }\n };\n /**\n *\n * @param {IGanttData} ganttRecord .\n * @param {IPredecessor[]} predecessorsCollection .\n * @returns {Date} .\n * @private\n */\n Dependency.prototype.getPredecessorDate = function (ganttRecord, predecessorsCollection) {\n var _this = this;\n var maxStartDate;\n var tempStartDate;\n var parentGanttRecord;\n var childGanttRecord;\n var validatedPredecessor = predecessorsCollection.filter(function (data) {\n var id = _this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId\n : ganttRecord.ganttProperties.rowUniqueID;\n if (data.to === id.toString()) {\n return data;\n }\n else {\n return null;\n }\n });\n if (validatedPredecessor) {\n var length_2 = validatedPredecessor.length;\n for (var i = 0; i < length_2; i++) {\n var predecessor = validatedPredecessor[i];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from);\n childGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.to);\n tempStartDate =\n this.getValidatedStartDate(childGanttRecord.ganttProperties, parentGanttRecord.ganttProperties, predecessor);\n if (maxStartDate == null || this.dateValidateModule.compareDates(tempStartDate, maxStartDate) === 1) {\n maxStartDate = tempStartDate;\n }\n }\n }\n return maxStartDate;\n };\n /**\n * Get validated start date as per predecessor type\n *\n * @param {ITaskData} ganttProperty .\n * @param {ITaskData} parentRecordProperty .\n * @param {IPredecessor} predecessor .\n * @returns {Date} .\n */\n Dependency.prototype.getValidatedStartDate = function (ganttProperty, parentRecordProperty, predecessor) {\n var type = predecessor.type;\n var offset = predecessor.offset;\n var tempDate;\n var returnStartDate;\n switch (type) {\n case 'FS':\n tempDate = this.dateValidateModule.getValidEndDate(parentRecordProperty);\n if (!ganttProperty.isMilestone || offset !== 0) {\n tempDate = this.dateValidateModule.checkStartDate(tempDate, ganttProperty);\n }\n if (offset !== 0) {\n tempDate = this.updateDateByOffset(tempDate, predecessor, ganttProperty);\n }\n if (!ganttProperty.isMilestone) {\n returnStartDate = this.dateValidateModule.checkStartDate(tempDate, ganttProperty);\n }\n else {\n returnStartDate = tempDate;\n }\n break;\n case 'FF':\n case 'SF':\n tempDate = type === 'FF' ? this.dateValidateModule.getValidEndDate(parentRecordProperty) :\n this.dateValidateModule.getValidStartDate(parentRecordProperty);\n if (offset !== 0) {\n tempDate = this.updateDateByOffset(tempDate, predecessor, ganttProperty);\n }\n if (!ganttProperty.isMilestone) {\n tempDate = this.dateValidateModule.checkEndDate(tempDate, ganttProperty);\n }\n returnStartDate = this.dateValidateModule.getStartDate(tempDate, ganttProperty.duration, ganttProperty.durationUnit, ganttProperty);\n break;\n case 'SS':\n tempDate = this.dateValidateModule.getValidStartDate(parentRecordProperty);\n if (offset !== 0) {\n tempDate = this.updateDateByOffset(tempDate, predecessor, ganttProperty);\n }\n if (!ganttProperty.isMilestone) {\n returnStartDate = this.dateValidateModule.checkStartDate(tempDate, ganttProperty);\n }\n else {\n returnStartDate = tempDate;\n }\n break;\n }\n return returnStartDate;\n };\n /**\n *\n * @param {Date} date .\n * @param {IPredecessor} predecessor .\n * @param {ITaskData} record .\n * @returns {void} .\n */\n Dependency.prototype.updateDateByOffset = function (date, predecessor, record) {\n var resultDate;\n var offsetValue = predecessor.offset;\n var durationUnit = predecessor.offsetUnit;\n if (offsetValue < 0) {\n resultDate = this.dateValidateModule.getStartDate(this.dateValidateModule.checkEndDate(date, record), (offsetValue * -1), durationUnit, record, true);\n }\n else {\n resultDate = this.dateValidateModule.getEndDate(date, offsetValue, durationUnit, record, false);\n if (!record.isMilestone) {\n resultDate = this.dateValidateModule.checkStartDate(resultDate, record);\n }\n }\n return resultDate;\n };\n /**\n *\n * @param {IGanttData} records .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.createConnectorLinesCollection = function (records) {\n var ganttRecords = records ? records : this.parent.currentViewData;\n var recordLength = ganttRecords.length;\n var count;\n var ganttRecord;\n var predecessorsCollection;\n this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.updatedRecords : this.parent.getExpandedRecords(this.parent.updatedRecords);\n for (count = 0; count < recordLength; count++) {\n ganttRecord = ganttRecords[count];\n predecessorsCollection = ganttRecord.ganttProperties.predecessor;\n if (predecessorsCollection) {\n this.addPredecessorsCollection(predecessorsCollection);\n }\n }\n };\n /**\n *\n * @param {object[]} predecessorsCollection .\n * @returns {void} .\n */\n Dependency.prototype.addPredecessorsCollection = function (predecessorsCollection) {\n var predecessorsLength;\n var predecessorCount;\n var predecessor;\n var parentGanttRecord;\n var childGanttRecord;\n if (predecessorsCollection) {\n predecessorsLength = predecessorsCollection.length;\n for (predecessorCount = 0; predecessorCount < predecessorsLength; predecessorCount++) {\n predecessor = predecessorsCollection[predecessorCount];\n var from = 'from';\n var to = 'to';\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[from]);\n childGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[to]);\n if (this.parent.connectorLineModule.expandedRecords &&\n this.parent.connectorLineModule.expandedRecords.indexOf(parentGanttRecord) !== -1 &&\n this.parent.connectorLineModule.expandedRecords.indexOf(childGanttRecord) !== -1) {\n this.updateConnectorLineObject(parentGanttRecord, childGanttRecord, predecessor);\n }\n }\n }\n };\n /**\n * To refresh connector line object collections\n *\n * @param {IGanttData} parentGanttRecord .\n * @param {IGanttData} childGanttRecord .\n * @param {IPredecessor} predecessor .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updateConnectorLineObject = function (parentGanttRecord, childGanttRecord, predecessor) {\n var connectorObj = this.parent.connectorLineModule.createConnectorLineObject(parentGanttRecord, childGanttRecord, predecessor);\n if (connectorObj) {\n if (childGanttRecord.isCritical && parentGanttRecord.isCritical) {\n connectorObj.isCritical = true;\n }\n if ((this.parent.connectorLineIds.length > 0 && this.parent.connectorLineIds.indexOf(connectorObj.connectorLineId) === -1) ||\n this.parent.connectorLineIds.length === 0) {\n this.parent.updatedConnectorLineCollection.push(connectorObj);\n this.parent.connectorLineIds.push(connectorObj.connectorLineId);\n }\n else if (this.parent.connectorLineIds.indexOf(connectorObj.connectorLineId) !== -1) {\n var index = this.parent.connectorLineIds.indexOf(connectorObj.connectorLineId);\n this.parent.updatedConnectorLineCollection[index] = connectorObj;\n }\n predecessor.isDrawn = true;\n }\n return connectorObj;\n };\n /**\n *\n * @param {IGanttData} childGanttRecord .\n * @param {IPredecessor[]} previousValue .\n * @param {string} validationOn .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.validatePredecessor = function (childGanttRecord, previousValue, validationOn) {\n if (!this.parent.isInPredecessorValidation) {\n return;\n }\n if (childGanttRecord.ganttProperties.predecessor) {\n var taskBarModule = this.parent.editModule.taskbarEditModule;\n var ganttProp = void 0;\n if (taskBarModule) {\n ganttProp = taskBarModule.taskBarEditRecord;\n }\n var predecessorsCollection = childGanttRecord.ganttProperties.predecessor;\n var parentGanttRecord = void 0;\n var record = null;\n var predecessor = void 0;\n var successor = void 0;\n var currentTaskId_3 = this.parent.viewType === 'ResourceView' ? childGanttRecord.ganttProperties.taskId.toString()\n : childGanttRecord.ganttProperties.rowUniqueID.toString();\n var predecessors = predecessorsCollection.filter(function (data) {\n if (data.to === currentTaskId_3) {\n return data;\n }\n else {\n return null;\n }\n });\n var successors = predecessorsCollection.filter(function (data) {\n if (data.from === currentTaskId_3) {\n return data;\n }\n else {\n return null;\n }\n });\n for (var count = 0; count < predecessors.length; count++) {\n predecessor = predecessors[count];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from);\n record = this.parent.connectorLineModule.getRecordByID(predecessor.to);\n if (this.parent.isInPredecessorValidation && record.ganttProperties.isAutoSchedule) {\n this.parent.isValidationEnabled = true;\n }\n else {\n this.parent.isValidationEnabled = false;\n }\n var id = this.parent.viewType === 'ResourceView' ? childGanttRecord.ganttProperties.taskId\n : childGanttRecord.ganttProperties.rowUniqueID;\n if ((id.toString() === predecessor.to\n || id.toString() === predecessor.from)\n && (!validationOn || validationOn === 'predecessor')) {\n this.validateChildGanttRecord(parentGanttRecord, record);\n }\n }\n for (var count = 0; count < successors.length; count++) {\n successor = successors[count];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(successor.from);\n record = this.parent.connectorLineModule.getRecordByID(successor.to);\n if (this.parent.isInPredecessorValidation && record.ganttProperties.isAutoSchedule) {\n this.parent.isValidationEnabled = true;\n }\n else {\n this.parent.isValidationEnabled = false;\n }\n if (validationOn !== 'predecessor' && this.parent.isValidationEnabled) {\n this.validateChildGanttRecord(parentGanttRecord, record);\n }\n if (parentGanttRecord.expanded === false || record.expanded === false) {\n if (record) {\n this.validatePredecessor(record, undefined, 'successor');\n }\n continue;\n }\n if (record) {\n this.validatePredecessor(record, undefined, 'successor');\n }\n }\n if (record && record.ganttProperties.taskId !== this.isValidatedParentTaskID && ganttProp) {\n var validUpdate = false;\n var predecessorNames = ganttProp.ganttProperties.predecessorsName ?\n ganttProp.ganttProperties.predecessorsName.split(',').length : ganttProp.ganttProperties.predecessorsName;\n var predecessorLength = ganttProp.ganttProperties.predecessor ?\n ganttProp.ganttProperties.predecessor.length : ganttProp.ganttProperties.predecessor;\n if ((predecessorLength && predecessorNames !== predecessorLength)) {\n validUpdate = true;\n }\n else if (record.hasChildRecords && record.ganttProperties.predecessor.length > 0 && ganttProp.hasChildRecords && !ganttProp.ganttProperties.predecessor) {\n validUpdate = true;\n }\n if ((taskBarModule.taskBarEditAction !== 'ParentDrag' && taskBarModule.taskBarEditAction !== 'ChildDrag')) {\n if (!ganttProp.hasChildRecords && record.hasChildRecords) {\n this.parent.editModule['updateChildItems'](record);\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n }\n else if ((record.hasChildRecords && taskBarModule.taskBarEditAction == 'ChildDrag') ||\n (validUpdate && taskBarModule.taskBarEditAction == 'ParentDrag')) {\n this.parent.editModule['updateChildItems'](record);\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n if (!ganttProp.hasChildRecords) {\n this.parent.dataOperation.updateParentItems(record, true);\n }\n }\n else if (record && record.hasChildRecords && !ganttProp) {\n this.parent.editModule['updateChildItems'](record);\n }\n }\n };\n /**\n * Method to get validate able predecessor alone from record\n *\n * @param {IGanttData} record .\n * @returns {IPredecessor[]} .\n * @private\n */\n Dependency.prototype.getValidPredecessor = function (record) {\n var _this = this;\n var validPredecessor = [];\n if (!isNullOrUndefined(record)) {\n var recPredecessor = record.ganttProperties.predecessor;\n if (recPredecessor && recPredecessor.length > 0) {\n validPredecessor = recPredecessor.filter(function (value) {\n var id = _this.parent.viewType === 'ResourceView' ? record.ganttProperties.taskId\n : record.ganttProperties.rowUniqueID;\n return value.from !== id.toString();\n });\n }\n }\n return validPredecessor;\n };\n return Dependency;\n}());\nexport { Dependency };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.style.cssText = colors[i].style;\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'style') {\n element.style.cssText = options[keys[i]];\n }\n else {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * To render a Circular clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawCircularClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n textStyle: { fontFamily: 'Segoe UI', color: '#000000' }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n tooltipBoldLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipLightLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipHeaderLine: '#9A9A9A',\n textStyle: theme === 'MaterialDark' ? { fontFamily: 'Roboto', color: 'rgba(18, 18, 18, 1)' } : theme === 'FabricDark' ? { fontFamily: 'Segoe UI', color: '#DADADA' } : { fontFamily: 'Helvetica', color: '#1A1A1A' }\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n textStyle: { fontFamily: 'Inter', color: '#F9FAFB' }\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#1F2937',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Inter', color: '#1F2937' }\n };\n break;\n case 'Bootstrap5':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n textStyle: { fontFamily: 'Helvetica', color: '#212529' }\n };\n break;\n case 'Fluent':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#323130' }\n };\n break;\n case 'FluentDark':\n style = {\n tooltipFill: '#323130',\n tooltipBoldLabel: '#F3F2F2',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#F3F2F1' }\n };\n break;\n case 'Material3':\n style = {\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n textStyle: { fontFamily: 'Roboto', color: '#F4EFF4' }\n };\n break;\n case 'Material3Dark':\n style = {\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n textStyle: { fontFamily: 'Roboto', color: '#313033' }\n };\n break;\n default:\n style = {\n tooltipFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n tooltipBoldLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipLightLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipHeaderLine: theme === 'Fabric' ? '#D2D0CE' : '#ffffff',\n textStyle: theme === 'Material' ? { fontFamily: 'Roboto', color: 'rgba(249, 250, 251, 1)' } : theme === 'Fabric' ? { fontFamily: 'Segoe UI', color: '#333333' } : { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n }\n return style;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font, themeFontStyle) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily || themeFontStyle.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function withInAreaBounds(x, y, areaBounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= areaBounds.x - width && x <= areaBounds.x + areaBounds.width + width && y >= areaBounds.y - height\n && y <= areaBounds.y + areaBounds.height + height);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, controlName) {\n if (controlName === void 0) { controlName = ''; }\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n if (controlName === 'RangeNavigator') {\n if ((arrowLocation.x - arrowPadding) > width / 2) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x) + ' ' + height);\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX - arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n if ((arrowLocation.x - arrowPadding) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (width) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (startX) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Plus':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent, themeStyle) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n parent.appendChild(htmlObject);\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable security/detect-object-injection */\n/* eslint-disable no-useless-escape */\n/* eslint-disable security/detect-non-literal-regexp */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption, withInAreaBounds } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"dashArray\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.highlightPadding = 3;\n this.areaMargin = 10;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n if (this.enableRTL) {\n this.element.setAttribute('dir', 'ltr');\n }\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.width) ? 1 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind' || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color || (this.theme === 'Fabric' || this.theme === 'Fluent' ? '#D2D0CE' : this.border.color)\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n var x = ((this.enableRTL) ? this.elementSize.width - (size / 2) :\n (this.marginX * 2) + (size / 2)) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n var padding = 0;\n if (this.header.indexOf(' -1) {\n padding = this.header.split(//g).length + count;\n }\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : padding)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n if (this.allowHighlight) {\n rect.x += isLeft ? this.highlightPadding : -(2 * this.highlightPadding);\n }\n }\n }\n if (this.header !== '') {\n var wrapPadding = 2;\n var padding = 0;\n var wrapHeader = this.isWrap ? this.wrappedText : this.header;\n if (this.isWrap && typeof (wrapHeader) === 'string' && (wrapHeader.indexOf('<') > -1 || wrapHeader.indexOf('>') > -1)) {\n var textArray = wrapHeader.split('
');\n wrapPadding = textArray.length;\n }\n if (this.header.indexOf(' -1) {\n padding = 5 * (this.header.split(//g).length - 1);\n }\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n font.fontWeight = '600';\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, font, this.themeStyle.textStyle).height +\n (this.marginY * wrapPadding) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : padding); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': this.theme === ('Material3' || 'Material3Dark') ? 0.2 : 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.controlName));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark'\n || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n var borderColor = ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.color) ? '#D2D0CE' : this.border.color;\n pathElement.setAttribute('stroke', borderColor);\n if (!isNullOrUndefined(this.border.dashArray)) {\n pathElement.setAttribute('stroke-dasharray', this.border.dashArray);\n }\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n if (this.revert) {\n this.inverted = !this.inverted;\n this.revert = false;\n }\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n this.isWrap = false;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled && !this.enableRTL ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n font.fontWeight = '600';\n var headerWidth = measureText(this.formattedText[0], font, this.themeStyle.textStyle).width\n + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '12px';\n var fontWeight = '400';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n var contentWidth = [];\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? this.controlName === 'RangeNavigator' ? 5 : 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, font.color || this.themeStyle.tooltipBoldLabel, groupElement, this.themeStyle.textStyle);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (this.isTextWrap && this.header !== this.formattedText[k] && this.formattedText[k].indexOf(' this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n textCollection = this.formattedText[k].match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n }\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height);\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, (this.enableRTL) ? '
\\u200E:
' : '
\\u200E:
')\n .split('
');\n if (this.enableRTL && lines.length > 0 && textCollection[i].match(/:/g)) {\n lines[0] = lines[0].trim();\n lines.reverse();\n }\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (this.enableRTL && line !== '' && this.isRTLText(line)) {\n line = line.concat('\\u200E');\n }\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n if (this.header.indexOf(' -1 && k !== 0) {\n headerSpace += this.header.split(//g).length;\n }\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = '600';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === '600' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = (this.header === this.formattedText[k]) ? font.size : this.textStyle.size;\n tspanElement.style.fontWeight = (this.header === this.formattedText[k] && (this.header.indexOf('') || this.header.indexOf('')) === -1) ? '600' : line.indexOf('') > -1 || line.indexOf('') > -1 ? 'bold' : this.textStyle.fontWeight;\n var textFont = extend({}, this.textStyle, null, true)[key];\n textFont.fontWeight = tspanElement.style.fontWeight;\n isRow = false;\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, textFont, this.themeStyle.textStyle).width;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n contentWidth.push(subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = '600';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font, this.themeStyle.textStyle).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n this.renderContentRTL(parentElement, isHeader, markerSize + markerPadding, contentWidth);\n };\n Tooltip.prototype.renderContentRTL = function (textElement, isHeader, markerSize, contentWidth) {\n if (this.enableRTL) {\n var tspanElement = void 0;\n var contentWidthIndex = isHeader ? 1 : 0;\n for (var i = 0; i < textElement.childNodes.length; i++) {\n tspanElement = (textElement.childNodes[i]);\n if ((!isHeader || i > 0) && !isNullOrUndefined(tspanElement.getAttribute('x'))) {\n tspanElement.setAttribute('x', (this.elementSize.width - (markerSize + contentWidth[contentWidthIndex])).toString());\n contentWidthIndex++;\n }\n }\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = this.isRTLText(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() !== '[object HTMLUnknownElement]';\n };\n Tooltip.prototype.isRTLText = function (tooltipContent) {\n return /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipContent);\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = void 0;\n if (this.controlName === 'Chart' && this.shared) {\n for (var i = 0; i < this.data.length; i++) {\n var sharedTemplateElement = this.templateFn(this.data[i], this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n if (i === 0) {\n templateElement = sharedTemplateElement;\n }\n else {\n templateElement[0].outerHTML += '
' + sharedTemplateElement[0].outerHTML;\n }\n }\n }\n else {\n templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n }\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x = (bounds.x + bounds.width) - (tooltipRect.width + 4 * this.padding);\n }\n if (tooltipRect.x < bounds.x) {\n tooltipRect.x = bounds.x;\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n this.outOfBounds = false;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * (this.allowHighlight ? this.highlightPadding : this.padding)) -\n this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if ((location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n if (((location.x + width > boundsX + bounds.width) && location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width && !(this.controlName === 'Progressbar')) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (arrowLocation.x + this.arrowPadding > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding;\n tipLocation.x = width - this.rx - this.arrowPadding;\n }\n if (arrowLocation.x - this.arrowPadding < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if (((bounds.x + bounds.width) - (location.x + arrowLocation.x)) < this.areaMargin + this.arrowPadding ||\n (location.x + arrowLocation.x) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n this.revert = true;\n location = new TooltipLocation(symbolLocation.x + markerHeight + clipX, symbolLocation.y + clipY - this.elementSize.height / 2 - (this.padding));\n tipLocation.x = arrowLocation.x = 0;\n tipLocation.y = arrowLocation.y = height / 2;\n if ((location.x + this.arrowPadding + width > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (this.arrowPadding + width);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + markerHeight + clipX;\n }\n if (location.y <= boundsY) {\n tipLocation.y -= (boundsY - location.y);\n arrowLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= bounds.height + boundsY) {\n arrowLocation.y += ((location.y + height) - (bounds.height + boundsY));\n tipLocation.y += ((location.y + height) - (bounds.height + boundsY));\n location.y -= ((location.y + height) - (bounds.height + boundsY));\n }\n if ((this.arrowPadding) + arrowLocation.y > height - this.ry) {\n arrowLocation.y = height - this.arrowPadding - this.ry;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = (this.arrowPadding) + this.ry;\n tipLocation.y = 0;\n }\n }\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = tipLocation.y = this.ry + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if ((location.y + arrowLocation.y) < this.areaMargin + this.arrowPadding ||\n ((bounds.y + bounds.height) - (location.y + arrowLocation.y)) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n location = new TooltipLocation(symbolLocation.x + clipX - this.padding - this.elementSize.width / 2, symbolLocation.y + clipY - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding);\n this.revert = true;\n tipLocation.x = arrowLocation.x = width / 2;\n tipLocation.y = arrowLocation.y = 0;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + markerHeight + clipY;\n }\n if (location.y + this.arrowPadding + height > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n tipLocation.x -= (boundsX - location.x);\n arrowLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > bounds.width + boundsX) {\n arrowLocation.x += ((location.x + width) - (bounds.width + boundsX));\n tipLocation.x += ((location.x + width) - (bounds.width + boundsX));\n location.x -= ((location.x + width) - (bounds.width + boundsX));\n }\n if ((this.arrowPadding) + arrowLocation.x > width - this.rx) {\n tipLocation.x = width - this.rx - (this.arrowPadding);\n arrowLocation.x = width - this.rx - (this.arrowPadding);\n }\n if (arrowLocation.x - (this.arrowPadding) < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + (this.arrowPadding);\n }\n }\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n if ((_this.controlName === 'Chart' && _this.shared) && !_this.enableRTL) {\n tooltipDiv.style.transition = isBlazor() ? 'transform 0.3s' : 'transform 0.1s';\n tooltipDiv.style.transform = 'translate(' + (x + currenDiff * (rect.x - x)) + 'px,' + (y + currenDiff * (rect.y - y)) + 'px)';\n }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n }\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n if ((this.controlName === 'Chart' && this.shared && !this.crosshair) && !this.enableRTL) {\n tooltipDiv.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n }\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n else {\n this.templateFn = templateComplier(this.template);\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n var tooltipDiv = getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (tooltipGroup_1.nodeType !== Node.ELEMENT_NODE) {\n tooltipGroup_1 = tooltipElement.firstElementChild;\n }\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity'));\n opacity_1 = !isNullOrUndefined(opacity_1) ? opacity_1 : 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n tooltipDiv.style.transition = '';\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"crosshair\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '12px', fontWeight: '400', color: null, fontStyle: 'Normal', fontFamily: null }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: null, width: null }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(7)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"controlName\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableRTL\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"allowHighlight\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","import { createElement, isNullOrUndefined, isObject, remove } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { isScheduledTask } from '../base/utils';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * To render the connector line in Gantt\n */\nvar ConnectorLine = /** @class */ (function () {\n function ConnectorLine(ganttObj) {\n this.transform = '';\n this.connectorLinePath = '';\n this.arrowPath = '';\n this.expandedRecords = [];\n this.parent = ganttObj;\n this.dependencyViewContainer =\n createElement('div', { className: cls.dependencyViewContainer,\n });\n Object.assign(this.dependencyViewContainer.style, {\n width: \"100%\",\n height: \"100%\",\n zIndex: 2,\n position: \"absolute\",\n pointerEvents: \"none\"\n });\n this.renderer = new SvgRenderer(this.parent.element.id);\n this.initPublicProp();\n this.svgObject = this.renderer.createSvg({\n id: this.parent.element.id + '_svg'\n });\n this.svgObject.setAttribute('height', '100%');\n this.svgObject.setAttribute('width', '100%');\n }\n /**\n * To get connector line gap.\n *\n * @param {IConnectorLineObject} data .\n * @returns {number} .\n * @private\n */\n ConnectorLine.prototype.getconnectorLineGap = function (data) {\n var width = 0;\n width = (data.milestoneChild ?\n ((this.parent.chartRowsModule.milestoneMarginTop / 2) + (this.parent.chartRowsModule.milestoneHeight / 2)) :\n ((this.parent.chartRowsModule.taskBarMarginTop / 2) + (this.parent.chartRowsModule.taskBarHeight / 2)));\n return width;\n };\n /**\n * To initialize the public property.\n *\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.initPublicProp = function () {\n this.lineColor = this.parent.connectorLineBackground;\n this.lineStroke = (this.parent.connectorLineWidth) > 4 ? 4 : this.parent.connectorLineWidth;\n this.createConnectorLineTooltipTable();\n };\n ConnectorLine.prototype.getTaskbarMidpoint = function (isMilestone) {\n return Math.floor(isMilestone ?\n (this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) + 1 :\n (this.parent.chartRowsModule.taskBarMarginTop + (this.parent.chartRowsModule.taskBarHeight / 2))) + 1;\n };\n /**\n * To connector line object collection.\n *\n * @param {IGanttData} parentGanttData .\n * @param {IGanttData} childGanttData .\n * @param {IPredecessor} predecessor .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.createConnectorLineObject = function (parentGanttData, childGanttData, predecessor) {\n var connectorObj = {};\n var updatedRecords = this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport ?\n this.parent.flatData : this.expandedRecords;\n var parentIndex = updatedRecords.indexOf(parentGanttData);\n var childIndex = updatedRecords.indexOf(childGanttData);\n var parentGanttRecord = parentGanttData.ganttProperties;\n var childGanttRecord = childGanttData.ganttProperties;\n var currentData = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.currentViewData : this.parent.getExpandedRecords(this.parent.currentViewData);\n connectorObj.parentIndexInCurrentView = currentData.indexOf(parentGanttData);\n connectorObj.childIndexInCurrentView = currentData.indexOf(childGanttData);\n var isVirtualScroll = this.parent.virtualScrollModule && this.parent.enableVirtualization;\n if ((!isVirtualScroll && (connectorObj.parentIndexInCurrentView === -1 || connectorObj.childIndexInCurrentView === -1)) ||\n connectorObj.parentIndexInCurrentView === -1 && connectorObj.childIndexInCurrentView === -1) {\n return null;\n }\n else {\n connectorObj.parentLeft = parentGanttRecord.isMilestone ?\n parentGanttRecord.left - (this.parent.chartRowsModule.milestoneHeight / 2) : parentGanttRecord.left;\n connectorObj.childLeft = childGanttRecord.isMilestone ?\n childGanttRecord.left - (this.parent.chartRowsModule.milestoneHeight / 2) : childGanttRecord.left;\n connectorObj.parentWidth = parentGanttRecord.width === 0 || parentGanttRecord.isMilestone ?\n (Math.floor(this.parent.chartRowsModule.milestoneHeight)) : parentGanttRecord.width;\n connectorObj.childWidth = childGanttRecord.width === 0 || childGanttRecord.isMilestone ?\n (Math.floor(this.parent.chartRowsModule.milestoneHeight)) : childGanttRecord.width;\n connectorObj.parentIndex = parentIndex;\n connectorObj.childIndex = childIndex;\n var rowHeight = !isNullOrUndefined(this.parent.ganttChartModule.getChartRows()) && this.parent.ganttChartModule.getChartRows()[0] &&\n this.parent.ganttChartModule.getChartRows()[0].getBoundingClientRect().height;\n connectorObj.rowHeight = rowHeight && !isNaN(rowHeight) ? rowHeight : this.parent.rowHeight;\n connectorObj.type = predecessor.type;\n var parentId = this.parent.viewType === 'ResourceView' ? parentGanttRecord.taskId : parentGanttRecord.rowUniqueID;\n var childId = this.parent.viewType === 'ResourceView' ? childGanttRecord.taskId : childGanttRecord.rowUniqueID;\n connectorObj.connectorLineId = 'parent' + parentId + 'child' + childId;\n connectorObj.milestoneParent = parentGanttRecord.isMilestone ? true : false;\n connectorObj.milestoneChild = childGanttRecord.isMilestone ? true : false;\n connectorObj.isManualParent = (!(this.parent.flatData[parentIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[parentIndex].hasChildRecords);\n connectorObj.isManualChild = (!(this.parent.flatData[childIndex].ganttProperties.isAutoSchedule) && this.parent.flatData[childIndex].hasChildRecords);\n connectorObj.parentEndPoint = connectorObj.parentLeft + connectorObj.parentWidth;\n connectorObj.childEndPoint = connectorObj.childLeft + connectorObj.childWidth;\n if (isNullOrUndefined(isScheduledTask(parentGanttRecord)) || isNullOrUndefined(isScheduledTask(childGanttRecord))) {\n return null;\n }\n else {\n return connectorObj;\n }\n }\n };\n /**\n * To render connector line.\n *\n * @param {IConnectorLineObject} connectorLinesCollection .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.renderConnectorLines = function (connectorLinesCollection) {\n var connectorLine = '';\n var ariaConnector = [];\n for (var index = 0; index < connectorLinesCollection.length; index++) {\n connectorLine = connectorLine + this.getConnectorLineTemplate(connectorLinesCollection[index]);\n ariaConnector.push(connectorLinesCollection[index]);\n }\n this.svgObject.innerHTML = connectorLine;\n var childNodes = this.parent.connectorLineModule.svgObject.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var innerChild = childNodes[i].childNodes;\n for (var j = 0; j < innerChild.length; j++) {\n var ariaString = 'Connector Line ' + this.parent.connectorLineModule.generateAriaLabel(ariaConnector[i]);\n innerChild[j].setAttribute('aria-label', ariaString);\n }\n }\n this.parent.ganttChartModule.chartBodyContent.insertBefore(this.dependencyViewContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);\n this.dependencyViewContainer.appendChild(this.svgObject);\n for (var i = 0; i < this.svgObject.children.length; i++) {\n this.svgObject.children[i].children[0].setAttribute('tabindex', '-1');\n }\n };\n /**\n * To get parent position.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getParentPosition = function (data) {\n if (data.parentIndex < data.childIndex) {\n if (data.type === 'FF') {\n if ((data.childLeft + data.childWidth) >= (data.parentLeft + data.parentWidth)) {\n return 'FFType2';\n }\n else {\n return 'FFType1';\n }\n }\n else if ((data.parentLeft < data.childLeft) && (data.childLeft > (data.parentLeft + data.parentWidth + 25))) {\n if (data.type === 'FS') {\n return 'FSType1';\n }\n if (data.type === 'SF') {\n return 'SFType1';\n }\n else if (data.type === 'SS') {\n return 'SSType2';\n }\n else if (data.type === 'FF') {\n return 'FFType2';\n }\n }\n else if ((data.parentLeft < data.childLeft && (data.childLeft < (data.parentLeft + data.parentWidth)))\n || (data.parentLeft === data.childLeft || data.parentLeft > data.childLeft)) {\n if (data.parentLeft > (data.childLeft + data.childWidth + 25)) {\n if (data.type === 'SF') {\n return 'SFType2';\n }\n }\n if (data.parentLeft > data.childLeft) {\n if (data.type === 'SS') {\n return 'SSType1';\n }\n if (data.type === 'SF') {\n return 'SFType1';\n }\n if (data.type === 'FF') {\n return 'FFType1';\n }\n }\n else if ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType2';\n }\n }\n if (data.type === 'FS') {\n return 'FSType2';\n }\n else if (data.type === 'SS') {\n return 'SSType2';\n }\n else if (data.type === 'FF') {\n return 'FFType1';\n }\n else if (data.type === 'SF') {\n return 'SFType1';\n }\n }\n else if ((data.parentLeft) < data.childLeft) {\n if (data.type === 'FS') {\n return 'FSType2';\n }\n else if (data.type === 'FF') {\n return 'FFType2';\n }\n else if (data.type === 'SS') {\n return 'SSType2';\n }\n else if (data.type === 'SF') {\n return 'SFType1';\n }\n }\n }\n else if (data.parentIndex > data.childIndex) {\n if ((data.parentLeft < data.childLeft) && (data.childLeft > (data.parentLeft + data.parentWidth))) {\n if (data.type === 'FS') {\n if (30 >= (data.childLeft - (data.milestoneParent ?\n (data.parentLeft + data.parentWidth + 4) : (data.parentLeft + data.parentWidth)))) {\n return 'FSType3';\n }\n else {\n return 'FSType4';\n }\n }\n if (data.parentLeft < data.childLeft || ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth))) {\n if (data.type === 'SS') {\n return 'SSType4';\n }\n if (data.type === 'FF') {\n return 'FFType4';\n }\n if (data.type === 'SF') {\n return 'SFType4';\n }\n // eslint-disable-next-line\n }\n else if ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType4';\n }\n }\n }\n else if ((data.parentLeft < data.childLeft && (data.childLeft < (data.parentLeft + data.parentWidth)))\n || (data.parentLeft === data.childLeft || data.parentLeft > data.childLeft)) {\n if ((data.childLeft + data.childWidth) <= (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType3';\n }\n if (data.type === 'SF') {\n if ((data.childLeft + data.childWidth + 25) < (data.parentLeft)) {\n return 'SFType3';\n }\n else {\n return 'SFType4';\n }\n }\n if (data.type === 'SS') {\n if (data.childLeft <= data.parentLeft) {\n return 'SSType3';\n }\n else {\n return 'SSType4';\n }\n }\n }\n else if ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType4';\n }\n if (data.type === 'SF') {\n return 'SFType4';\n }\n if (data.type === 'SS') {\n if (data.childLeft <= data.parentLeft) {\n return 'SSType3';\n }\n else {\n return 'SSType4';\n }\n }\n }\n if (data.type === 'FS') {\n return 'FSType3';\n }\n }\n else if (data.parentLeft < data.childLeft) {\n if (data.type === 'FS') {\n return 'FSType3';\n }\n if (data.type === 'SS') {\n return 'SSType4';\n }\n if (data.type === 'FF') {\n return 'FFType4';\n }\n if (data.type === 'SF') {\n return 'SFType4';\n }\n }\n }\n return null;\n };\n /**\n * To get line height.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getHeightValue = function (data) {\n if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation && !this.parent.allowTaskbarOverlap) {\n return (data.parentIndex * this.parent.rowHeight) > (data.childIndex * this.parent.rowHeight) ?\n ((data.parentIndex * this.parent.rowHeight) - (data.childIndex * this.parent.rowHeight)) :\n ((data.childIndex * this.parent.rowHeight) - (data.parentIndex * this.parent.rowHeight));\n }\n else {\n return (data.parentIndex * data.rowHeight) > (data.childIndex * data.rowHeight) ?\n ((data.parentIndex * data.rowHeight) - (data.childIndex * data.rowHeight)) :\n ((data.childIndex * data.rowHeight) - (data.parentIndex * data.rowHeight));\n }\n };\n /**\n * To get sstype2 inner element width.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getInnerElementWidthSSType2 = function (data) {\n if (data.parentLeft === data.childLeft) {\n return 10;\n }\n return (data.childLeft - data.parentLeft);\n };\n /**\n * To get sstype2 inner element left.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getInnerElementLeftSSType2 = function (data) {\n if (data.parentLeft === data.childLeft) {\n return (data.parentLeft - 20);\n }\n return (data.parentLeft - 10);\n };\n /**\n * To get sstype2 inner child element width.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getInnerChildWidthSSType2 = function (data) {\n if ((data.parentLeft + data.parentWidth) < data.childLeft) {\n return 10;\n }\n if (data.parentLeft === data.childLeft) {\n return 20;\n }\n if ((data.parentLeft + data.parentWidth) >= data.childLeft) {\n return 10;\n }\n return (data.childLeft - data.parentLeft);\n };\n ConnectorLine.prototype.getBorderStyles = function (cssType, unit) {\n var borderWidth = 'border-' + cssType + '-width:' + unit + 'px;';\n var borderStyle = 'border-' + cssType + '-style:solid;';\n var borderColor = !isNullOrUndefined(this.lineColor) ? 'border-' + cssType + '-color:' + this.lineColor + ';' : '';\n return (borderWidth + borderStyle + borderColor);\n };\n /**\n * To get connector line template.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getConnectorLineTemplate = function (data) {\n var setInnerChildWidthSSType2 = this.getInnerChildWidthSSType2(data);\n var setInnerElementWidthSSType2 = this.getInnerElementWidthSSType2(data);\n var setInnerElementLeftSSType2 = this.getInnerElementLeftSSType2(data);\n var height = this.getHeightValue(data);\n var isMilestoneParent = data.milestoneParent ? true : false;\n var isMilestone = data.milestoneChild ? true : false;\n var connectorContainer = '';\n var isVirtual = this.parent.virtualScrollModule && this.parent.enableVirtualization;\n var connectorLine = this.getPosition(data, this.getParentPosition(data), height);\n var rowPosition = this.getPosition(data, this.getParentPosition(data), height);\n var rowPositionHeight = rowPosition.top;\n var isMilestoneValue = 0;\n if (this.parent.renderBaseline) {\n isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;\n }\n var heightValue = isVirtual ? connectorLine.height : (height + isMilestoneValue);\n var borderTopWidth = 0;\n var addTop = 0;\n var parentOverlapTopValue = 0;\n var childOverlapTopValue = 0;\n var count = 0;\n if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation && !this.parent.allowTaskbarOverlap) {\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n if (this.parent.getRowByIndex(i).style.display != 'none') {\n if (count < data.parentIndex) {\n count++;\n parentOverlapTopValue = parentOverlapTopValue + this.parent.getRowByIndex(i).offsetHeight;\n }\n }\n }\n count = 0;\n for (var j = 0; j < this.parent.currentViewData.length; j++) {\n if (this.parent.getRowByIndex(j).style.display != 'none') {\n if (count < data.childIndex) {\n count++;\n childOverlapTopValue = childOverlapTopValue + this.parent.getRowByIndex(j).offsetHeight;\n }\n }\n }\n heightValue = Math.abs(parentOverlapTopValue - childOverlapTopValue);\n }\n if (this.parent.currentViewData[data.parentIndex] && this.parent.currentViewData[data.childIndex] && this.parent.allowParentDependency) {\n var fromRecordIsParent = this.parent.currentViewData[data.parentIndex].hasChildRecords;\n var toRecordIsParent = this.parent.currentViewData[data.childIndex].hasChildRecords;\n var fromRecordIsManual = this.parent.currentViewData[data.parentIndex].ganttProperties.isAutoSchedule;\n var toRecordIsManual = this.parent.currentViewData[data.childIndex].ganttProperties.isAutoSchedule;\n var isValid = true;\n if (((fromRecordIsParent && fromRecordIsManual) && !toRecordIsParent) || ((toRecordIsParent && toRecordIsManual) &&\n !fromRecordIsParent) || (fromRecordIsParent && fromRecordIsManual && toRecordIsManual && toRecordIsParent)\n || (!fromRecordIsParent && !toRecordIsParent)) {\n isValid = false;\n }\n if (isValid) {\n if (((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {\n addTop = -11;\n }\n else if (!((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {\n if (data.childIndex > data.parentIndex) {\n if (!fromRecordIsParent && toRecordIsParent) {\n borderTopWidth = -11;\n }\n else {\n borderTopWidth = 11;\n addTop = -11;\n }\n }\n else {\n if ((fromRecordIsParent && !toRecordIsParent)) {\n borderTopWidth = -11;\n }\n else {\n borderTopWidth = 11;\n addTop = -11;\n }\n }\n }\n if (this.parent.currentViewData[data.parentIndex].ganttProperties.isMilestone) {\n if (data.parentIndex > data.childIndex) {\n addTop = -5;\n borderTopWidth = 10;\n }\n else if (data.type === 'SS' || data.type === 'FF') {\n addTop = -5;\n }\n }\n else if (this.parent.currentViewData[data.childIndex].ganttProperties.isMilestone) {\n if (data.parentIndex > data.childIndex) {\n addTop = 5;\n borderTopWidth = -10;\n }\n else if (data.type === 'SS' || data.type === 'FF') {\n addTop = 5;\n }\n }\n }\n }\n if (this.getParentPosition(data)) {\n // Create the group element\n this.transform = this.parent.enableRtl ? \"translate(\" + this.parent.timelineModule.totalTimelineWidth + \", 0) scale(-1, 1)\" : '';\n this.connectorId = \"ConnectorLine\" + data.connectorLineId;\n this.groupObject = this.renderer.createGroup({\n id: this.connectorId,\n transform: this.transform,\n style: 'pointer-events: stroke',\n class: cls.connectorLineContainer,\n });\n // Create the path element for the connector line\n this.connectorPath = this.renderer.drawPath({\n class: cls.connectorLineSVG,\n d: this.connectorLinePath,\n fill: 'transparent',\n \"stroke-width\": 1,\n });\n // Create the path element for the arrow\n this.arrowlinePath = this.renderer.drawPath({\n d: this.arrowPath,\n class: cls.connectorLineArrow\n });\n // Append the path element to the group element\n this.groupObject.appendChild(this.connectorPath);\n this.groupObject.appendChild(this.arrowlinePath);\n if (this.getParentPosition(data) === 'FSType1') {\n this.taskLineValue = data.milestoneChild ? 1 : 0;\n this.x1 = data.parentEndPoint + (data.milestoneParent ? -1 : (data.milestoneChild ? -1 : 0));\n this.x2 = data.milestoneParent ? ((((data.childLeft - (data.parentEndPoint + 10)) + 1) - 10) + 1) : (((data.childLeft - (data.parentEndPoint + 10))) - 10);\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = heightValue + this.taskLineValue;\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.y2) +\n \" L \" + (this.x1 + this.x2 + 11) + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + (this.x1 + this.x2 + 18) + \" \" + (this.y1 + this.y2 + this.manualChild) +\n \" L \" + (this.x1 + this.x2 + 11) + \" \" + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + this.x2 + 11) + \" \" + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FSType2') {\n this.taskLineValue = data.milestoneChild ? 1 : 0;\n this.x1 = data.parentLeft + (data.milestoneChild ? -1 : 0);\n this.x2 = data.parentWidth + (data.milestoneParent ? 1 : 0);\n this.x3 = this.x2 + (data.milestoneParent ? 11 : 10);\n this.x4 = data.parentWidth - ((data.parentEndPoint - data.childLeft) + 20);\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;\n this.y3 = this.getconnectorLineGap(data);\n this.y4 = this.y1 + this.y2 - ((this.y1 + this.y2) % data.rowHeight);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" \" + \" L \" + (this.x1 + this.x3) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x1 + this.x3) + \" \" + this.y4 +\n \" L \" + (this.x1 + this.x4) + \" \" + this.y4 + \" L \" + (this.x1 + this.x4) + \" \" + (this.y1 + this.y2 + this.y3) + \" L \" + (this.x1 + this.x4 + 11) + \" \" + (this.y1 + this.y2 + this.y3);\n this.arrowPath = \"M \" + (this.x1 + this.x4 + 18) + \" \" + (this.y1 + this.y2 + this.y3 + this.manualChild) +\n \" L \" + (this.x1 + this.x4 + 11) + \" \" + (this.y1 + this.y2 + this.y3 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + this.x4 + 11) + \" \" + (this.y1 + this.y2 + this.y3 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FSType3') {\n this.taskLineValue = data.milestoneChild ? 1 : 0;\n this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));\n this.x1 = (data.childLeft + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0)) - 20;\n this.x2 = (data.parentEndPoint - data.childLeft) + 30;\n this.y1 = this.point1 + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.point1 + heightValue - this.getconnectorLineGap(data) + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild ? -10 : 0) : 0);\n this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.y4 = this.y2 - (this.y2 % data.rowHeight);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + 12) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + this.y4 +\n \" L \" + (this.x1 + this.x2) + \" \" + this.y4 + \" L \" + (this.x1 + this.x2) + \" \" + (this.y2 + this.y3) + \" L \" + (this.x1 + this.x2 - 12) + \" \" + (this.y2 + this.y3);\n this.arrowPath = \"M \" + (this.x1 + 18) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + (this.x1 + 11) + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + 11) + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FSType4') {\n this.point1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.parentEndPoint + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0);\n this.x2 = data.childLeft - data.parentEndPoint - 20;\n this.y1 = this.point1 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.point1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2 + 11) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x1 + this.x2) + \" \" + this.y2 +\n \" L \" + this.x1 + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + this.x2 + 18) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + (this.x1 + this.x2 + 11) + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + this.x2 + 11) + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType4') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.point1 = heightValue + this.taskLineValue;\n this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));\n this.x1 = data.parentLeft - 8;\n this.x2 = data.childLeft - data.parentLeft;\n this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) +\n \" L \" + this.x1 + \" \" + this.y2 + \" L \" + (this.x1 + 10) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + this.x2 + 8) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType3') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + this.taskLineValue;\n this.x1 = data.childLeft - 20;\n this.y1 = (data.milestoneChild ? 1 : 0) + ((this.parent.enableVirtualization ? rowPositionHeight : (!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild))) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.x2 = data.parentLeft - data.childLeft + 21;\n this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : data.milestoneParent ? 10 : 0) : 0);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + 12) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) +\n \" L \" + this.x1 + \" \" + this.y2 + \" L \" + (this.x1 + this.x2) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + 20) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType2') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + this.taskLineValue;\n this.x1 = setInnerElementLeftSSType2;\n this.x2 = setInnerChildWidthSSType2 + 1;\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.y1 + this.point1;\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + this.y2 +\n \" L \" + (this.x1 + setInnerElementWidthSSType2) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + setInnerElementWidthSSType2 + 8) + \" \" + (this.y2 + this.manualChild) +\n \" L \" + (this.x1 + setInnerElementWidthSSType2) + \" \" + (this.y2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + setInnerElementWidthSSType2) + \" \" + (this.y2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType1') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + this.taskLineValue;\n this.x1 = data.childLeft - 20;\n this.x2 = data.parentLeft - data.childLeft + 21;\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.y1 + this.point1;\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + this.y2 +\n \" L \" + (this.x1 + 12) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + 20) + \" \" + (this.y2 + this.manualChild) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType1') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);\n this.x1 = data.childEndPoint;\n this.x2 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);\n this.x3 = data.milestoneParent ? 22 : 21;\n this.x4 = data.milestoneChild ? 4 : 8;\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = heightValue + this.taskLineValue;\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1 + this.y2) +\n \" L \" + (this.x1 + this.x4) + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + this.x1 + \" \" + (this.y1 + this.y2 + this.manualChild) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType2') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);\n this.x1 = data.parentEndPoint;\n this.x2 = data.childEndPoint + (data.milestoneParent ? 22 : 21);\n this.x3 = data.childEndPoint + (data.milestoneChild ? 9 : 8);\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = heightValue + this.taskLineValue;\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x2 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x2 + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x3 + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + (this.x3 - 8) + \" \" + (this.y1 + this.y2 + this.manualChild) +\n \" L \" + this.x3 + \" \" + (this.y1 + this.y2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + this.x3 + \" \" + (this.y1 + this.y2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType3') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.childEndPoint;\n this.x2 = this.x1 + (data.milestoneChild ? 4 : 8);\n this.x3 = data.parentEndPoint - data.childEndPoint + (data.milestoneChild ? 16 : 10);\n this.x4 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x4 + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + this.x1 + \" \" + (this.y1 + this.manualChild) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType4') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.parentEndPoint;\n this.x2 = data.childEndPoint + (data.milestoneChild ? 7 : 8);\n this.x3 = this.x2 + (data.milestoneChild ? 12 : 11);\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild)) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = heightValue + this.taskLineValue + +(this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x3 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x3 + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x1 + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + (this.x2 - 8) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + this.x2 + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + this.x2 + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType4') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? -1 : 0);\n this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;\n this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));\n this.x1 = data.parentLeft - 10;\n this.x2 = this.x1 + ((data.childEndPoint - data.parentLeft) + 18);\n this.x3 = this.x2 + (data.milestoneChild ? 16 : 11);\n this.y1 = this.point2 + (data.milestoneChild ? 1 : 0) + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild ? -11 : 0) : 0);\n this.y3 = this.getconnectorLineGap(data) + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.y4 = this.y2 - (this.y2 % data.rowHeight);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x3 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x3 + \" \" + this.y4 + \" L \" + this.x1 + \" \" + this.y4 +\n \" L \" + this.x1 + \" \" + (this.y2 + this.y3) + \" L \" + (this.x1 + 11) + \" \" + (this.y2 + this.y3);\n this.arrowPath = \"M \" + (this.x2 - 8) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + this.x2 + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + this.x2 + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType3') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.point1 = (data.parentLeft - (data.childEndPoint + (data.milestoneParent ? 25 : 20))) + 1 + (this.parent.renderBaseline ? (data.milestoneParent ? 5 : 0) : 0);\n this.point2 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.childIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneChild));\n this.x1 = data.childEndPoint;\n this.x2 = this.x1 + (data.milestoneChild ? 9 : 8);\n this.x3 = this.x2 + (data.milestoneChild ? 17 : 11);\n this.y1 = this.point2 + ((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.y2 = this.y1 + heightValue + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneParent ? 10 : 0) : 0);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x3 + \" \" + (this.y1 + this.manualParent + this.manualChild) +\n \" L \" + this.x3 + \" \" + this.y2 + \" L \" + (this.x3 + this.point1) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x2 - 8) + \" \" + (this.y1 + this.manualChild) +\n \" L \" + this.x2 + \" \" + (this.y1 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + this.x2 + \" \" + (this.y1 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType1') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue - this.getconnectorLineGap(data) + this.taskLineValue;\n this.point2 = this.getconnectorLineGap(data);\n this.x1 = data.parentLeft - 10;\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.x2 = (data.childEndPoint - data.parentLeft) + 31;\n this.y2 = this.y1 + this.point1;\n this.x3 = (data.childEndPoint - data.parentLeft) + 18;\n this.y3 = this.y2 - (this.y2 % data.rowHeight);\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + 11) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + this.x1 + \" \" + this.y3 +\n \" L \" + (this.x1 + this.x2) + \" \" + this.y3 + \" L \" + (this.x1 + this.x2) + \" \" + (this.y2 + this.point2) + \" L \" + (this.x1 + this.x3) + \" \" + (this.y2 + this.point2);\n this.arrowPath = \"M \" + (this.x1 + this.x3 - 8) + \" \" + (this.y2 + this.point2 + this.manualChild) +\n \" L \" + (this.x1 + this.x3) + \" \" + (this.y2 + this.point2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + this.x3) + \" \" + (this.y2 + this.point2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType2') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.childEndPoint;\n this.y1 = this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + this.getTaskbarMidpoint(data.milestoneParent)) + +((data.isManualParent && data.isManualChild) ? -10 : 0);\n this.x2 = (data.parentLeft - data.childEndPoint);\n this.y2 = this.y1 + heightValue + this.taskLineValue;\n this.manualParent = (data.isManualParent && !data.isManualChild ? -10 : 0);\n this.manualChild = (data.isManualChild && !data.isManualParent ? -10 : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2 + 1) + \" \" + (this.y1 + this.manualParent + this.manualChild) + \" L \" + (this.x1 + this.x2 - 10) + \" \" + (this.y1 + this.manualParent + this.manualChild) +\n \" L \" + (this.x1 + this.x2 - 10) + \" \" + this.y2 + \" L \" + (this.x1 + 8) + \" \" + this.y2;\n this.arrowPath = \"M \" + this.x1 + \" \" + (this.y2 + this.manualChild) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y2 - (4 + this.lineStroke) + this.manualChild) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y2 + 4 + this.lineStroke + this.manualChild) + \" Z\";\n }\n this.connectorPath.setAttribute(\"d\", this.connectorLinePath);\n this.arrowlinePath.setAttribute(\"d\", this.arrowPath);\n }\n return this.groupObject.outerHTML;\n };\n /**\n * @param {IConnectorLineObject} data .\n * @param {string} type .\n * @param {number} heightValue .\n * @returns {number} .\n * @private\n */\n ConnectorLine.prototype.getPosition = function (data, type, heightValue) {\n var topPosition = 0;\n var lineHeight = 0;\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var isMilestoneParent = data.milestoneParent ? true : false;\n var isMilestone = data.milestoneChild ? true : false;\n var midPointParent = this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1);\n var midPoint = this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1);\n var isParentIndex = data.parentIndexInCurrentView !== -1;\n var isChildIndex = data.childIndexInCurrentView !== -1;\n var lastRowIndex = this.parent.currentViewData.length - 1;\n if (type === 'SSType1' || type === 'SSType2' || type === 'FFType1' || type === 'FFType2' || type === 'SFType2') {\n topPosition = isParentIndex ? (data.parentIndexInCurrentView * data.rowHeight) + midPointParent : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isChildIndex ?\n (data.childIndexInCurrentView * data.rowHeight) + midPointParent : (lastRowIndex * data.rowHeight) + midPointParent;\n }\n else if (type === 'SSType3' || type === 'SSType4' || type === 'FSType4' || type === 'FFType3' ||\n type === 'FFType4' || type === 'SFType4' || type === 'SFType3') {\n topPosition = isChildIndex ? (data.childIndexInCurrentView * data.rowHeight) + midPoint : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isParentIndex ?\n (data.parentIndexInCurrentView * data.rowHeight) + midPoint :\n (lastRowIndex * data.rowHeight) + midPoint;\n }\n else if (type === 'FSType3') {\n topPosition = isChildIndex ? (data.childIndexInCurrentView * data.rowHeight) + midPointParent : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isParentIndex ?\n (data.parentIndexInCurrentView * data.rowHeight) + midPoint :\n (lastRowIndex * data.rowHeight) + midPointParent;\n }\n else if (type === 'SFType1' || type === 'FSType1' || type === 'FSType2') {\n topPosition = isParentIndex ? (data.parentIndexInCurrentView * data.rowHeight) + midPoint : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isChildIndex ?\n (data.childIndexInCurrentView * data.rowHeight) + midPoint :\n (lastRowIndex * data.rowHeight) + midPoint;\n }\n }\n return { top: topPosition, height: lineHeight };\n };\n /**\n * @returns {void} .\n * @private\n */\n ConnectorLine.prototype.createConnectorLineTooltipTable = function () {\n this.tooltipTable = createElement('table', { className: '.e-tooltiptable', styles: 'margin-top:0px', attrs: { 'cellspacing': '2px', 'cellpadding': '2px' } });\n var tooltipBody = createElement('tbody');\n tooltipBody.innerHTML = '';\n this.tooltipTable.appendChild(tooltipBody);\n };\n /**\n * @param {string} fromTaskName .\n * @param {string} fromPredecessorText .\n * @param {string} toTaskName .\n * @param {string} toPredecessorText .\n * @returns {string} .\n * @private\n */\n ConnectorLine.prototype.getConnectorLineTooltipInnerTd = function (fromTaskName, fromPredecessorText, toTaskName, toPredecessorText) {\n var innerTd = '' + this.parent.localeObj.getConstant('from') + ' ';\n innerTd = innerTd + fromTaskName + ' ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' ';\n innerTd = innerTd + '' + this.parent.localeObj.getConstant('to') + ' ' + toTaskName;\n innerTd = innerTd + ' ' + this.parent.localeObj.getConstant(toPredecessorText) + ' ';\n return innerTd;\n };\n /**\n * Generate aria-label for connectorline\n *\n * @param {IConnectorLineObject} data .\n * @returns {string} .\n * @private\n */\n ConnectorLine.prototype.generateAriaLabel = function (data) {\n var type = data.type;\n var updatedRecords = this.expandedRecords;\n var fromName = updatedRecords[data.parentIndex].ganttProperties.taskName;\n var toName = updatedRecords[data.childIndex].ganttProperties.taskName;\n var start = this.parent.localeObj.getConstant('start');\n var finish = this.parent.localeObj.getConstant('finish');\n var value = '';\n if (type === 'FS') {\n value = fromName + ' ' + finish + ' to ' + toName + ' ' + start;\n }\n else if (type === 'FF') {\n value = fromName + ' ' + finish + ' to ' + toName + ' ' + finish;\n }\n else if (type === 'SS') {\n value = fromName + ' ' + start + ' to ' + toName + ' ' + start;\n }\n else {\n value = fromName + ' ' + start + ' to ' + toName + ' ' + finish;\n }\n return value;\n };\n /**\n * To get the record based on the predecessor value\n *\n * @param {string} id .\n * @returns {IGanttData} .\n * @private\n */\n ConnectorLine.prototype.getRecordByID = function (id) {\n if (isNullOrUndefined(id)) {\n return null;\n }\n return this.parent.viewType === 'ResourceView' ? this.parent.flatData[this.parent.getTaskIds().indexOf('T' + id.toString())] :\n this.parent.flatData[this.parent.ids.indexOf(id.toString())];\n };\n /**\n * Method to remove connector line from DOM\n *\n * @param {IGanttData[] | object} records .\n * @returns {void} .\n * @private\n */\n ConnectorLine.prototype.removePreviousConnectorLines = function (records) {\n var isObjectType;\n if (isObject(records) === true) {\n isObjectType = true;\n }\n else {\n isObjectType = false;\n }\n var length = isObjectType ? Object.keys(records).length : records.length;\n var keys = Object.keys(records);\n for (var i = 0; i < length; i++) {\n var data = void 0;\n if (isObjectType) {\n var uniqueId = keys[i];\n data = records[uniqueId];\n }\n else {\n data = records[i];\n }\n var predecessors = data.ganttProperties && data.ganttProperties.predecessor;\n if (predecessors && predecessors.length > 0) {\n for (var pre = 0; pre < predecessors.length; pre++) {\n var lineId = 'parent' + predecessors[pre].from + 'child' + predecessors[pre].to;\n this.removeConnectorLineById(lineId);\n }\n }\n }\n };\n /**\n * @param {string} id .\n * @returns {void} .\n * @private\n */\n ConnectorLine.prototype.removeConnectorLineById = function (id) {\n var element = this.parent.connectorLineModule.dependencyViewContainer.querySelector('#ConnectorLine' + id);\n if (!isNullOrUndefined(element)) {\n remove(element);\n }\n };\n return ConnectorLine;\n}());\nexport { ConnectorLine };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n *
\n *
Left Pane
\n *
Center Pane
\n *
Right Pane
\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isPaneContentChanged = paneCounts.some(function (count) { return !isNullOrUndefined(newProp.paneSettings[count].content); });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { Splitter as SplitterLayout } from '@syncfusion/ej2-layouts';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * Splitter module is used to define the splitter position in Gantt layout.\n */\nvar Splitter = /** @class */ (function () {\n function Splitter(ganttObj) {\n this.parent = ganttObj;\n this.parent.on('destroy', this.destroy, this);\n }\n /**\n * @returns {void} .\n * @private\n */\n Splitter.prototype.renderSplitter = function () {\n var _this = this;\n var splitterPosition = this.calculateSplitterPosition(this.parent.splitterSettings);\n this.parent.splitterElement = createElement('div', { className: cls.splitter });\n this.parent.treeGridPane = createElement('div', { className: cls.treeGridPane });\n this.parent.chartPane = createElement('div', { className: cls.ganttChartPane });\n if (this.parent.enableRtl) {\n this.parent.splitterElement.appendChild(this.parent.chartPane);\n this.parent.splitterElement.appendChild(this.parent.treeGridPane);\n }\n else {\n this.parent.splitterElement.appendChild(this.parent.treeGridPane);\n this.parent.splitterElement.appendChild(this.parent.chartPane);\n }\n this.splitterObject = new SplitterLayout({\n height: null,\n width: this.parent.ganttWidth.toString(),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n separatorSize: this.parent.splitterSettings.separatorSize,\n paneSettings: [\n {\n resizable: true,\n size: splitterPosition,\n min: this.getSpliterPositionInPercentage(this.parent.splitterSettings.minimum)\n },\n {\n resizable: true\n }\n ],\n orientation: 'Horizontal',\n resizeStart: function (args) {\n if (_this.parent.contextMenuModule && _this.parent.contextMenuModule.isOpen) {\n _this.parent.contextMenuModule.contextMenu.close();\n }\n var leftPane = args.pane[0];\n var rightPane = args.pane[1];\n _this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';\n _this.splitterPreviousPositionChart = rightPane.scrollWidth + 1 + 'px';\n var callBackPromise = new Deferred();\n _this.parent.trigger('splitterResizeStart', args, function (resizeStartArgs) {\n callBackPromise.resolve(resizeStartArgs);\n });\n return callBackPromise;\n },\n resizing: function (args) {\n _this.parent.trigger('splitterResizing', args);\n },\n resizeStop: function (args) {\n var leftPane = args.pane[0];\n _this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';\n _this.splitterObject.paneSettings[0].size = _this.getSpliterPositionInPercentage(_this.splitterPreviousPositionGrid);\n var callBackPromise = new Deferred();\n _this.parent.trigger('splitterResized', args, function (splitterResizedArgs) {\n if (splitterResizedArgs.cancel === true) {\n _this.splitterObject.paneSettings[0].size = null;\n _this.splitterObject.paneSettings[0].size = _this.getSpliterPositionInPercentage(_this.splitterPreviousPositionGrid);\n _this.splitterObject.paneSettings[1].size = null;\n _this.splitterObject.paneSettings[1].size = _this.getSpliterPositionInPercentage(_this.splitterPreviousPositionChart);\n }\n if (isNullOrUndefined(_this.parent.projectEndDate)) {\n _this.parent.timelineModule.updateTimelineAfterZooming(_this.parent.timelineModule.timelineEndDate, true);\n }\n callBackPromise.resolve(splitterResizedArgs);\n });\n return callBackPromise;\n }\n });\n this.parent.element.appendChild(this.parent.splitterElement);\n this.splitterObject.appendTo(this.parent.splitterElement);\n };\n /**\n * @param {SplitterSettingsModel} splitter .\n \n * @returns {string} .\n * @private\n */\n Splitter.prototype.calculateSplitterPosition = function (splitter) {\n if (!isNullOrUndefined(this.splitterObject) && this.parent.enablePersistence) {\n return this.splitterObject.paneSettings[0].size;\n }\n if (splitter.view === 'Grid') {\n return '100%';\n }\n else if (splitter.view === 'Chart') {\n return '0%';\n }\n else {\n if (!isNullOrUndefined(splitter.position) && splitter.position !== '') {\n return this.getSpliterPositionInPercentage(splitter.position);\n }\n else if (!isNullOrUndefined(splitter.columnIndex) && splitter.columnIndex >= 0) {\n if ((splitter.columnIndex * 150) < this.parent.ganttWidth || !this.parent.element.classList.contains('e-device')) {\n return this.getSpliterPositionInPercentage(this.getTotalColumnWidthByIndex(splitter.columnIndex).toString() + 'px');\n }\n else {\n return this.getSpliterPositionInPercentage((splitter.columnIndex * 130) + 'px');\n }\n }\n else {\n return this.getSpliterPositionInPercentage('250px');\n }\n }\n };\n /**\n * @param {string} position .\n * @returns {string} .\n */\n Splitter.prototype.getSpliterPositionInPercentage = function (position) {\n var value = !isNullOrUndefined(position) && position !== '' ? position : null;\n if (!isNullOrUndefined(value)) {\n if (position.indexOf('px') !== -1) {\n var intValue = parseInt(position, 10);\n value = (((intValue / this.parent.ganttWidth) * 100) <= 100 ? ((intValue / this.parent.ganttWidth) * 100) + '%' :\n '25%');\n }\n else {\n value = position.indexOf('%') === -1 ?\n position + '%' : position;\n }\n }\n return value;\n };\n /**\n * @param {number} index .\n * @returns {number} .\n */\n Splitter.prototype.getTotalColumnWidthByIndex = function (index) {\n var width = 0;\n var tr = this.parent.ganttColumns;\n index = tr.length > index ? index : tr.length;\n for (var column = 0; column < index; column++) {\n width = width + parseInt(tr[column].width);\n }\n return width;\n };\n /**\n * @returns {void} .\n * @private\n */\n Splitter.prototype.updateSplitterPosition = function () {\n this.splitterObject.separatorSize = this.parent.splitterSettings.separatorSize >= 4 ?\n this.parent.splitterSettings.separatorSize : 4;\n var splitterPosition = this.calculateSplitterPosition(this.parent.splitterSettings);\n this.splitterObject.paneSettings[0].min = this.getSpliterPositionInPercentage(this.parent.splitterSettings.minimum);\n this.splitterObject.dataBind();\n this.splitterObject.paneSettings[0].size = splitterPosition;\n };\n /**\n * @returns {void} .\n * @private\n */\n Splitter.prototype.triggerCustomResizedEvent = function () {\n var pane1 = this.splitterObject.element.querySelectorAll('.e-pane')[0];\n var pane2 = this.splitterObject.element.querySelectorAll('.e-pane')[1];\n var eventArgs = {\n event: null,\n element: this.splitterObject.element,\n pane: [pane1, pane2],\n index: [0, 1],\n separator: this.splitterObject.element.querySelector('.e-split-bar'),\n paneSize: [pane1.offsetWidth, pane2.offsetWidth]\n };\n this.parent.trigger('splitterResized', eventArgs);\n if (eventArgs.cancel === true) {\n this.splitterObject.paneSettings[0].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionGrid);\n this.splitterObject.paneSettings[1].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionChart);\n }\n };\n Splitter.prototype.destroy = function () {\n this.splitterObject.destroy();\n this.parent.off('destroy', this.destroy);\n };\n return Splitter;\n}());\nexport { Splitter };\n","import { Tooltip as TooltipComponent } from '@syncfusion/ej2-popups';\nimport { parentsUntil } from '../base/utils';\nimport * as cls from '../base/css-constants';\nimport { extend, isNullOrUndefined, getValue, EventHandler, closest, SanitizeHtmlHelper, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * File for handling tooltip in Gantt.\n */\nvar Tooltip = /** @class */ (function () {\n function Tooltip(gantt) {\n this.parent = gantt;\n this.createTooltip();\n this.parent.on('destroy', this.destroy, this);\n }\n /**\n * To create tooltip.\n *\n * @returns {void} .\n * @private\n */\n Tooltip.prototype.createTooltip = function () {\n this.toolTipObj = new TooltipComponent();\n this.toolTipObj.target = '.e-header-cell-label, .e-gantt-child-taskbar,' +\n '.e-gantt-parent-taskbar, .e-gantt-milestone, .e-gantt-unscheduled-taskbar' +\n '.e-event-markers, .e-baseline-bar, .e-event-markers,' +\n '.e-connector-line-container, .e-indicator-span, .e-notes-info, .e-gantt-manualparent-milestone,' +\n '.e-taskbar-left-resizer, .e-taskbar-right-resizer, .e-baseline-gantt-milestone, .e-gantt-manualparenttaskbar';\n this.toolTipObj.position = 'BottomCenter';\n this.toolTipObj.openDelay = 700;\n this.toolTipObj.enableRtl = this.parent.enableRtl;\n this.toolTipObj.enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n this.toolTipObj.cssClass = cls.ganttTooltip;\n this.toolTipObj.animation = { open: { effect: 'None', delay: 0 }, close: { effect: 'None', delay: 0 } };\n this.toolTipObj.afterOpen = this.updateTooltipPosition.bind(this);\n this.toolTipObj.showTipPointer = false;\n this.toolTipObj.beforeRender = this.tooltipBeforeRender.bind(this);\n this.toolTipObj.afterClose = this.tooltipCloseHandler.bind(this);\n this.toolTipObj.isStringTemplate = true;\n this.toolTipObj.appendTo(this.parent.element);\n };\n Tooltip.prototype.tooltipBeforeRender = function (args) {\n var parent = this.parent;\n if (parent.isOnEdit) {\n args.cancel = true;\n return;\n }\n var element;\n var row = closest(args.target, 'div.' + cls.taskBarMainContainer);\n if (!isNullOrUndefined(row)) {\n element = args.target;\n }\n else {\n element = parentsUntil(args.target, cls.chartRowCell);\n }\n var data;\n var argsData = {\n data: {},\n args: args,\n cancel: false,\n content: ''\n };\n if (args.target.classList.contains('e-header-cell-label')) {\n if (parent.timelineSettings.showTooltip) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('timeline', data, parent, args);\n }\n else {\n args.cancel = true;\n }\n }\n else {\n if (parent.tooltipSettings.showTooltip) {\n if (element) {\n argsData.data = parent.ganttChartModule.getRecordByTaskBar(element);\n data = argsData.data;\n }\n if (args.target.classList.contains('e-gantt-child-taskbar') ||\n args.target.classList.contains('e-gantt-parent-taskbar') ||\n args.target.classList.contains('e-gantt-milestone') ||\n args.target.classList.contains('e-gantt-unscheduled-taskbar') ||\n args.target.classList.contains('e-taskbar-left-resizer') ||\n args.target.classList.contains('e-taskbar-right-resizer') ||\n (args.target.classList.contains('e-gantt-manualparenttaskbar') && parent.tooltipSettings.taskbar)) {\n var taskbarTemplateNode = void 0;\n if (parent.tooltipSettings.taskbar) {\n taskbarTemplateNode = parent.tooltipModule.templateCompiler(parent.tooltipSettings.taskbar, parent, data, 'TooltipTaskbarTemplate');\n }\n argsData.content = this.toolTipObj.content = taskbarTemplateNode ? taskbarTemplateNode[0] :\n parent.tooltipModule.getTooltipContent((data.ganttProperties.isMilestone ? 'milestone' : 'taskbar'), data, parent, args);\n }\n else if (args.target.classList.contains('e-baseline-bar') ||\n args.target.classList.contains('e-baseline-gantt-milestone')) {\n var baseLineTemplateNode = void 0;\n if ((parent.tooltipSettings.baseline)) {\n baseLineTemplateNode = parent.tooltipModule.templateCompiler(parent.tooltipSettings.baseline, parent, data, 'TooltipBaselineTemplate');\n }\n argsData.content = this.toolTipObj.content = baseLineTemplateNode ? baseLineTemplateNode[0] :\n parent.tooltipModule.getTooltipContent((data.ganttProperties.isMilestone ? 'milestone' : 'baseline'), data, parent, args);\n }\n else if (args.target.classList.contains('e-event-markers')) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('marker', data, parent, args);\n }\n else if (args.target.classList.contains('e-connector-line-container')) {\n var dependencyLineTemplateNode = void 0;\n parent.tooltipModule.predecessorTooltipData = parent.tooltipModule.getPredecessorTooltipData(args);\n argsData.data = this.predecessorTooltipData;\n if ((parent.tooltipSettings.connectorLine)) {\n dependencyLineTemplateNode = parent.tooltipModule.templateCompiler(parent.tooltipSettings.connectorLine, parent, parent.tooltipModule.predecessorTooltipData, 'TooltipConnectorLineTemplate');\n }\n argsData.content = this.toolTipObj.content = dependencyLineTemplateNode ?\n dependencyLineTemplateNode[0] :\n parent.tooltipModule.getTooltipContent('connectorLine', data, parent, args);\n }\n else if (args.target.classList.contains('e-indicator-span')) {\n argsData.content = this.toolTipObj.content =\n parent.tooltipModule.getTooltipContent('indicator', data, parent, args);\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n else if (args.target.classList.contains('e-notes-info')) {\n var ganttData = this.parent.ganttChartModule.getRecordByTarget(args.event);\n argsData.content = this.toolTipObj.content = ganttData.ganttProperties.notes;\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n else if (args.target.classList.contains('e-gantt-manualparenttaskbar')) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('manualtaskbar', data, parent, args);\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n else if (args.target.classList.contains('e-gantt-manualparent-milestone')) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('manualmilestone', data, parent, args);\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n }\n else {\n args.cancel = true;\n }\n }\n if (args.cancel === false) {\n var callBackPromise_1 = new Deferred();\n parent.trigger('beforeTooltipRender', argsData, function (argData) {\n callBackPromise_1.resolve(argData);\n if (argData.cancel) {\n args.cancel = true;\n }\n });\n this.toolTipObj.content = argsData.content;\n if (!this.parent.isAdaptive && args.event.type === 'mouseover') {\n this.currentTarget = args.target;\n EventHandler.add(this.currentTarget, 'mousemove', this.mouseMoveHandler.bind(this));\n }\n this.parent.renderTemplates();\n return callBackPromise_1;\n }\n };\n // eslint-disable-next-line\n Tooltip.prototype.tooltipCloseHandler = function (args) {\n this.tooltipMouseEvent = null;\n if (!this.parent.isAdaptive) {\n EventHandler.remove(this.currentTarget, 'mousemove', this.mouseMoveHandler);\n }\n this.currentTarget = null;\n };\n Tooltip.prototype.mouseMoveHandler = function (e) {\n this.tooltipMouseEvent = e;\n };\n /**\n * Method to update tooltip position\n *\n * @param {TooltipEventArgs} args .\n * @returns {void} .\n */\n Tooltip.prototype.updateTooltipPosition = function (args) {\n args.element.style.visibility = 'visible';\n if (isNullOrUndefined(this.tooltipMouseEvent) || args.target.classList.contains('e-notes-info')) {\n return;\n }\n var postion = this.getPointorPosition(this.tooltipMouseEvent);\n var containerPosition = this.parent.getOffsetRect(this.parent.chartPane);\n var topEnd = containerPosition.top + this.parent.chartPane.offsetHeight;\n var leftEnd = containerPosition.left + this.parent.chartPane.offsetWidth;\n var tooltipPositionX = postion.x;\n var tooltipPositionY = postion.y;\n if (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {\n while (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {\n tooltipPositionX = leftEnd - args.element.offsetWidth - 10;\n args.element.style.left = tooltipPositionX + 'px';\n }\n }\n else {\n tooltipPositionX = tooltipPositionX + 10;\n args.element.style.left = tooltipPositionX + 'px';\n }\n if (window.innerHeight < args.element.offsetHeight + tooltipPositionY) {\n tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;\n }\n if ((topEnd < (tooltipPositionY + args.element.offsetHeight + 20))) {\n tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;\n }\n else {\n tooltipPositionY = tooltipPositionY + 10;\n }\n args.element.style.top = tooltipPositionY + 'px';\n };\n /**\n * Method to get mouse pointor position\n *\n * @param {Event} e .\n * @returns {number} .\n */\n Tooltip.prototype.getPointorPosition = function (e) {\n var posX;\n var posY;\n if (!isNullOrUndefined(getValue('pageX', e)) || !isNullOrUndefined(getValue('pageY', e))) {\n posX = getValue('pageX', e);\n posY = getValue('pageY', e);\n }\n else if (!isNullOrUndefined(getValue('clientX', e)) || !isNullOrUndefined(getValue('clientY', e))) {\n posX = getValue('clientX', e) + document.body.scrollLeft + document.documentElement.scrollLeft;\n posY = getValue('clientY', e) + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return { x: posX, y: posY };\n };\n /**\n * Getting tooltip content for different elements\n *\n * @param {string} elementType .\n * @param {IGanttData} ganttData .\n * @param {Gantt} parent .\n * @param {TooltipEventArgs} args .\n * @returns {string | Function} .\n */\n Tooltip.prototype.getTooltipContent = function (elementType, ganttData, parent, args) {\n var content;\n var data;\n var taskName;\n if (ganttData) {\n data = ganttData.ganttProperties;\n var taskNameValue = data.taskName;\n if (this.parent.enableHtmlSanitizer && typeof (taskNameValue) === 'string') {\n taskNameValue = SanitizeHtmlHelper.sanitize(taskNameValue);\n }\n taskName = !isNullOrUndefined(taskNameValue) ? '' : '';\n }\n switch (elementType) {\n case 'milestone':\n {\n var milestoneStartDate = void 0;\n if (args.target.className.includes('e-baseline-gantt-milestone') && !isNullOrUndefined(data.baselineStartDate)) {\n milestoneStartDate = data.baselineStartDate;\n }\n else if (!isNullOrUndefined(data.startDate)) {\n milestoneStartDate = data.startDate;\n }\n var sDateValue = this.parent.getFormatedDate(milestoneStartDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer && typeof (sDateValue) === 'string') {\n sDateValue = SanitizeHtmlHelper.sanitize(sDateValue);\n }\n var sDate_1 = !isNullOrUndefined(milestoneStartDate) ? '' +\n '' : '';\n var contentTemp_1 = function () {\n return '
' +\n (this.parent.disableHtmlEncode ? taskNameValue.replace(//g, \">\") : taskNameValue) + '
Date:' +\n sDateValue + '
' +\n taskName + sDate_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_1);\n break;\n }\n case 'taskbar':\n {\n var scheduledTask = !ganttData.hasChildRecords || data.isAutoSchedule ? true : false;\n var startDateValue = this.parent.getFormatedDate(scheduledTask ? data.startDate : data.autoStartDate, this.parent.getDateFormat());\n var endDateValue = this.parent.getFormatedDate(scheduledTask ? data.endDate : data.autoEndDate, this.parent.getDateFormat());\n var durationValue = this.parent.getDurationString((scheduledTask ? data.duration : data.autoDuration), data.durationUnit);\n var progressValue = data.progress;\n if (this.parent.enableHtmlSanitizer) {\n startDateValue = typeof (startDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(startDateValue) : startDateValue;\n endDateValue = typeof (endDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(endDateValue) : endDateValue;\n durationValue = typeof (durationValue) === 'string' ? SanitizeHtmlHelper.sanitize(durationValue) : durationValue;\n progressValue = typeof (progressValue) === 'string' ? SanitizeHtmlHelper.sanitize(progressValue) : progressValue;\n }\n var startDate_1 = data.startDate ? '' +\n this.parent.localeObj.getConstant(scheduledTask ? 'startDate' : 'subTasksStartDate') +\n ':' + ' ' + startDateValue + '' : '';\n var endDate_1 = data.endDate ? '' +\n this.parent.localeObj.getConstant(scheduledTask ? 'endDate' : 'subTasksEndDate') +\n ':' + '' + endDateValue + '' : '';\n var duration_1 = !isNullOrUndefined(data.duration) ? '' +\n this.parent.localeObj.getConstant('duration') + ':' +\n ' ' + durationValue +\n '' : '';\n var progress_1 = !isNullOrUndefined(data.progress) ? '' +\n this.parent.localeObj.getConstant('progress') + ':' + progressValue +\n '' : '';\n var contentTemp_2 = function () {\n return '' +\n taskName + startDate_1 + endDate_1 + duration_1 + progress_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_2);\n break;\n }\n case 'baseline':\n {\n var baselineStartDateValue_1 = this.parent.getFormatedDate(data.baselineStartDate, this.parent.getDateFormat());\n var baselineEndDateValue_1 = this.parent.getFormatedDate(data.baselineEndDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer) {\n baselineStartDateValue_1 = typeof (baselineStartDateValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(baselineStartDateValue_1) : baselineStartDateValue_1;\n baselineEndDateValue_1 = typeof (baselineEndDateValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(baselineEndDateValue_1) : baselineEndDateValue_1;\n }\n var contentTemp_3 = function () {\n return '' +\n taskName + '' + '' +\n '
' +\n this.parent.localeObj.getConstant('baselineStartDate') + ':' +\n baselineStartDateValue_1 + '
' + this.parent.localeObj.getConstant('baselineEndDate') +\n ':' +\n baselineEndDateValue_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_3, this);\n break;\n }\n case 'marker':\n {\n var markerTooltipElement = parent.tooltipModule.getMarkerTooltipData(args);\n var markerTooltipElementValue_1 = this.parent.getFormatedDate(this.parent.dateValidationModule.getDateFromFormat(markerTooltipElement.day), this.parent.getDateFormat());\n var markerLabel_1 = markerTooltipElement.label ? markerTooltipElement.label : '';\n if (this.parent.enableHtmlSanitizer) {\n markerLabel_1 = typeof (markerLabel_1) === 'string' ? SanitizeHtmlHelper.sanitize(markerLabel_1) : markerLabel_1;\n markerTooltipElementValue_1 = typeof (markerTooltipElementValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(markerTooltipElementValue_1) : markerTooltipElementValue_1;\n }\n var contentTemp_4 = function () {\n return '
' +\n markerTooltipElementValue_1 + '
' + (this.parent.disableHtmlEncode ? markerLabel_1.replace(//g, \">\") : markerLabel_1) + '
';\n };\n content = initializeCSPTemplate(contentTemp_4, this);\n break;\n }\n case 'connectorLine':\n {\n var fromNameValue_1 = parent.tooltipModule.predecessorTooltipData.fromName;\n var fromIdValue_1 = parent.tooltipModule.predecessorTooltipData.fromId;\n var toNameValue_1 = parent.tooltipModule.predecessorTooltipData.toName;\n var toIdValue_1 = parent.tooltipModule.predecessorTooltipData.toId;\n var linkTextValue_1 = parent.tooltipModule.predecessorTooltipData.linkText;\n var offsetStringValue_1 = parent.tooltipModule.predecessorTooltipData.offsetString;\n if (this.parent.enableHtmlSanitizer) {\n fromNameValue_1 = typeof (fromNameValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(fromNameValue_1) : fromNameValue_1;\n fromIdValue_1 = typeof (fromIdValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(fromIdValue_1) : fromIdValue_1;\n toNameValue_1 = typeof (toNameValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(toNameValue_1) : toNameValue_1;\n toIdValue_1 = typeof (toIdValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(toIdValue_1) : toIdValue_1;\n linkTextValue_1 = typeof (linkTextValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(linkTextValue_1) : linkTextValue_1;\n offsetStringValue_1 = typeof (offsetStringValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(offsetStringValue_1) : offsetStringValue_1;\n }\n var contentTemp_5 = function () {\n return '' +\n '' + '
' +\n this.parent.localeObj.getConstant('from') + ':' + (this.parent.disableHtmlEncode ? fromNameValue_1.replace(//g, \">\") : fromNameValue_1) + ' (' +\n (this.parent.disableHtmlEncode ? (typeof (fromIdValue_1) === 'string' ? fromIdValue_1.replace(//g, \">\") : fromIdValue_1) : fromIdValue_1) + ')' + '
' +\n this.parent.localeObj.getConstant('to') + ':' +\n (this.parent.disableHtmlEncode ? toNameValue_1.replace(//g, \">\") : toNameValue_1) + ' (' + toIdValue_1 + ')' + '
' + this.parent.localeObj.getConstant('taskLink') +\n ': ' + linkTextValue_1 +\n '
' + this.parent.localeObj.getConstant('lag') +\n ':' +\n offsetStringValue_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_5, this);\n break;\n }\n case 'indicator':\n if (args.target.title.length) {\n var titleValue_1 = args.target.title;\n if (this.parent.enableHtmlSanitizer && typeof (titleValue_1) === 'string') {\n titleValue_1 = SanitizeHtmlHelper.sanitize(titleValue_1);\n }\n var contentTemp_6 = function () {\n return '' + titleValue_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_6);\n }\n break;\n case 'timeline':\n var timlineTitleValue_1 = args.target.title;\n if (this.parent.enableHtmlSanitizer && typeof (timlineTitleValue_1) === 'string') {\n timlineTitleValue_1 = SanitizeHtmlHelper.sanitize(timlineTitleValue_1);\n }\n var contentTemp = function () {\n return '' + timlineTitleValue_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp);\n break;\n case 'manualtaskbar':\n {\n var autoStartDateValue = this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat());\n var autoEndDateValue = this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat());\n var durationUnitValue = this.parent.getDurationString(data.duration, data.durationUnit);\n var manualStartDateValue = this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat());\n var manualEndDateValue = this.parent.getFormatedDate(data.endDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer) {\n autoStartDateValue = typeof (autoStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoStartDateValue) : autoStartDateValue;\n autoEndDateValue = typeof (autoEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoEndDateValue) : autoEndDateValue;\n durationUnitValue = typeof (durationUnitValue) === 'string' ? SanitizeHtmlHelper.sanitize(durationUnitValue) : durationUnitValue;\n manualStartDateValue = typeof (manualStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(manualStartDateValue) : manualStartDateValue;\n manualEndDateValue = typeof (manualEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(manualEndDateValue) : manualEndDateValue;\n }\n var autoStartDate_1 = data.autoStartDate ? '' +\n this.parent.localeObj.getConstant('subTasksStartDate') + ':' + ' ' +\n autoStartDateValue + '' : '';\n var autoEndDate_1 = data.autoEndDate ? '' +\n this.parent.localeObj.getConstant('subTasksEndDate') + ':' + '' +\n autoEndDateValue + '' : '';\n var durationValue_1 = !isNullOrUndefined(data.duration) ? '' +\n this.parent.localeObj.getConstant('duration') + ':' +\n ' ' + durationUnitValue +\n '' : '';\n var manualStartDate_1 = data.startDate ? '' +\n this.parent.localeObj.getConstant('startDate') + ':' + ' ' +\n manualStartDateValue + '' : '';\n var manualEndDate_1 = data.endDate ? '' +\n this.parent.localeObj.getConstant('endDate') + ':' + '' +\n manualEndDateValue + '' : '';\n var contentTemp_7 = function () {\n return '' +\n taskName + manualStartDate_1 + autoStartDate_1 + manualEndDate_1 + autoEndDate_1 + durationValue_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_7);\n break;\n }\n case 'manualmilestone':\n {\n var autoStartValue = this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat());\n var autoEndValue = this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat());\n var dateValue = this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer) {\n autoStartValue = typeof (autoStartValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoStartValue) : autoStartValue;\n autoEndValue = typeof (autoEndValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoEndValue) : autoEndValue;\n dateValue = typeof (dateValue) === 'string' ? SanitizeHtmlHelper.sanitize(dateValue) : dateValue;\n }\n var autoStart_1 = data.autoStartDate ? '' +\n this.parent.localeObj.getConstant('subTasksStartDate') + ':' + ' ' +\n autoStartValue + '' : '';\n var autoEnd_1 = data.autoEndDate ? '' +\n this.parent.localeObj.getConstant('subTasksEndDate') + ':' + '' +\n autoEndValue + '' : '';\n var date_1 = ' Date:' +\n '' +\n dateValue + '';\n var contentTemp_8 = function () {\n return '' +\n taskName + date_1 + autoStart_1 + autoEnd_1 + '
';\n };\n content = initializeCSPTemplate(contentTemp_8);\n break;\n }\n }\n return content;\n };\n /**\n * To get the details of an event marker.\n *\n * @param {TooltipEventArgs} args .\n * @returns {EventMarkerModel} .\n * @private\n */\n Tooltip.prototype.getMarkerTooltipData = function (args) {\n var markerTooltipId = (args.target.id).match(/\\d+/g);\n var markerTooltipElement = this.parent.eventMarkers[Number(markerTooltipId)];\n return markerTooltipElement;\n };\n /**\n * To get the details of a connector line.\n *\n * @param {TooltipEventArgs} args .\n * @returns {PredecessorTooltip} .\n * @private\n */\n Tooltip.prototype.getPredecessorTooltipData = function (args) {\n var predeceesorParent = args.target.id;\n if (this.parent.enableHtmlSanitizer && typeof (predeceesorParent) === 'string') {\n predeceesorParent = SanitizeHtmlHelper.sanitize(predeceesorParent);\n }\n var taskIds = predeceesorParent.match(/ConnectorLineparent(.*)child(.*)/);\n taskIds.shift();\n var fromTask;\n var toTask;\n if (this.parent.viewType === 'ResourceView') {\n fromTask = this.parent.flatData[this.parent.getTaskIds().indexOf('T' + taskIds[0])];\n toTask = this.parent.flatData[this.parent.getTaskIds().indexOf('T' + taskIds[1])];\n }\n else {\n fromTask = this.parent.flatData[this.parent.ids.indexOf(taskIds[0])];\n toTask = this.parent.flatData[this.parent.ids.indexOf(taskIds[1])];\n }\n var predecessor = (fromTask.ganttProperties.predecessor).filter(function (pdc) { return pdc.to === taskIds[1]; });\n var predecessorTooltipData = {\n fromId: this.parent.viewType === 'ResourceView' ? fromTask.ganttProperties.taskId : fromTask.ganttProperties.rowUniqueID,\n toId: this.parent.viewType === 'ResourceView' ? toTask.ganttProperties.taskId : toTask.ganttProperties.rowUniqueID,\n fromName: fromTask.ganttProperties.taskName,\n toName: toTask.ganttProperties.taskName,\n linkType: predecessor[0].type,\n linkText: this.parent.getPredecessorTextValue(predecessor[0].type),\n offset: predecessor[0].offset,\n offsetUnit: predecessor[0].offsetUnit,\n offsetString: this.parent.getDurationString(predecessor[0].offset, predecessor[0].offsetUnit)\n };\n return predecessorTooltipData;\n };\n /**\n * To compile template string.\n *\n * @param {string | Function} template .\n * @param {Gantt} parent .\n * @param {IGanttData|PredecessorTooltip} data .\n * @param {string} propName .\n * @returns {NodeList} .\n * @private\n */\n Tooltip.prototype.templateCompiler = function (template, parent, data, propName) {\n var tooltipFunction = parent.chartRowsModule.templateCompiler(template);\n var templateID = parent.chartRowsModule.getTemplateID(propName);\n var templateNode = tooltipFunction(extend({ index: 0 }, data), parent, propName, templateID, true);\n return templateNode;\n };\n Tooltip.prototype.destroy = function () {\n this.toolTipObj.destroy();\n };\n return Tooltip;\n}());\nexport { Tooltip };\n","import { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\n/**\n * Focus module is used to handle certain action on focus elements in keyboard navigations.\n */\nvar FocusModule = /** @class */ (function () {\n function FocusModule(parent) {\n this.parent = parent;\n this.activeElement = null;\n this.previousActiveElement = null;\n }\n FocusModule.prototype.getActiveElement = function (isPreviousActiveElement) {\n return isPreviousActiveElement ? this.previousActiveElement : this.activeElement;\n };\n FocusModule.prototype.setActiveElement = function (element) {\n this.previousActiveElement = this.activeElement;\n this.activeElement = element;\n };\n /**\n * To perform key interaction in Gantt\n *\n * @param {KeyboardEventArgs} e .\n * @returns {void} .\n * @private\n */\n FocusModule.prototype.onKeyPress = function (e) {\n var ganttObj = this.parent;\n var expandedRecords = ganttObj.getExpandedRecords(ganttObj.currentViewData);\n if (isNullOrUndefined(this.parent.focusModule.getActiveElement()) && (e.action === 'expandAll' || e.action === 'collapseAll')) {\n var focussedElement = this.parent.element.querySelector('.e-treegrid');\n focussedElement.focus();\n }\n var targetElement = this.parent.focusModule.getActiveElement();\n if (e.action === 'home' || e.action === 'end' || e.action === 'downArrow' || e.action === 'upArrow' || e.action === 'delete' ||\n e.action === 'rightArrow' || e.action === 'leftArrow' || e.action === 'focusTask' || e.action === 'focusSearch' ||\n e.action === 'expandAll' || e.action === 'collapseAll') {\n if (!isNullOrUndefined(ganttObj.editModule) && !isNullOrUndefined(ganttObj.editModule.cellEditModule) &&\n ganttObj.editModule.cellEditModule.isCellEdit === true) {\n return;\n }\n }\n if (ganttObj.isAdaptive) {\n if (e.action === 'addRowDialog' || e.action === 'editRowDialog' || e.action === 'delete'\n || e.action === 'addRow') {\n if (ganttObj.selectionModule && ganttObj.selectionSettings.type === 'Multiple') {\n ganttObj.selectionModule.hidePopUp();\n document.getElementsByClassName('e-gridpopup')[0].style.display = 'none';\n }\n }\n }\n switch (e.action) {\n case 'home':\n if (ganttObj.selectionModule && ganttObj.selectionSettings.mode !== 'Cell') {\n if (ganttObj.selectedRowIndex === 0) {\n return;\n }\n ganttObj.selectionModule.selectRow(0, false, true);\n }\n break;\n case 'end':\n if (ganttObj.selectionModule && ganttObj.selectionSettings.mode !== 'Cell') {\n var currentSelectingRecord = expandedRecords[expandedRecords.length - 1];\n if (ganttObj.selectedRowIndex === ganttObj.flatData.indexOf(currentSelectingRecord)) {\n return;\n }\n ganttObj.selectionModule.selectRow(ganttObj.flatData.indexOf(currentSelectingRecord), false, true);\n }\n break;\n case 'downArrow':\n case 'upArrow':\n {\n var searchElement = ganttObj.element.querySelector('#' + ganttObj.element.id + '_searchbar');\n if (searchElement && searchElement.parentElement.classList.contains('e-input-focus')) {\n ganttObj.selectionModule.clearSelection();\n }\n if (!ganttObj.element.classList.contains('e-scroll-disabled')) {\n this.upDownKeyNavigate(e);\n if (!isNullOrUndefined(targetElement) && !isNullOrUndefined(targetElement.closest('.e-chart-row'))) {\n ganttObj.ganttChartModule.manageFocus(this.getActiveElement(), 'remove', true);\n }\n }\n break;\n }\n case 'expandAll':\n ganttObj.ganttChartModule.expandCollapseAll('expand');\n break;\n case 'collapseAll':\n ganttObj.ganttChartModule.expandCollapseAll('collapse');\n break;\n case 'expandRow':\n case 'collapseRow':\n this.expandCollapseKey(e);\n break;\n case 'saveRequest':\n if (!isNullOrUndefined(ganttObj.editModule) && !isNullOrUndefined(ganttObj.editModule.cellEditModule) &&\n ganttObj.editModule.cellEditModule.isCellEdit) {\n var col = ganttObj.editModule.cellEditModule.editedColumn;\n if (col.field === ganttObj.columnMapping.duration && !isNullOrUndefined(col.edit) &&\n !isNullOrUndefined(col.edit.read)) {\n var textBox = e.target.ej2_instances[0];\n var textValue = e.target.value;\n var ganttProp = ganttObj.currentViewData[ganttObj.selectedRowIndex].ganttProperties;\n var tempValue = void 0;\n if (col.field === ganttObj.columnMapping.duration) {\n tempValue = !isNullOrUndefined(col.edit) && !isNullOrUndefined(col.edit.read) ? col.edit.read() :\n // eslint-disable-next-line\n !isNullOrUndefined(col.valueAccessor) ? col.valueAccessor(ganttObj.columnMapping.duration, ganttObj.editedRecords, col) :\n ganttObj.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);\n if (textValue !== tempValue.toString()) {\n textBox.value = textValue;\n textBox.dataBind();\n }\n }\n }\n if (ganttObj.editModule.dialogModule.dialogObj && getValue('dialogOpen', ganttObj.editModule.dialogModule.dialogObj)) {\n return;\n }\n ganttObj.editModule.cellEditModule.isCellEdit = false;\n ganttObj.treeGrid.grid.saveCell();\n var focussedElement = ganttObj.element.querySelector('.e-treegrid');\n focussedElement.focus();\n }\n if (!isNullOrUndefined(this.parent.onTaskbarClick) && !isNullOrUndefined(targetElement)\n && !isNullOrUndefined(targetElement.closest('.e-chart-row'))) {\n var target = e.target;\n var taskbarElement = targetElement.querySelector('.e-gantt-parent-taskbar,' +\n '.e-gantt-child-taskbar,.e-gantt-milestone');\n if (taskbarElement) {\n this.parent.ganttChartModule.onTaskbarClick(e, target, taskbarElement);\n }\n }\n break;\n case 'cancelRequest':\n if (!isNullOrUndefined(ganttObj.editModule) && !isNullOrUndefined(ganttObj.editModule.cellEditModule)) {\n ganttObj.editModule.cellEditModule.isCellEdit = false;\n if (!isNullOrUndefined(ganttObj.toolbarModule)) {\n ganttObj.toolbarModule.refreshToolbarItems();\n }\n }\n break;\n case 'addRow':\n {\n if (ganttObj.editModule && ganttObj.editModule.cellEditModule && ganttObj.editModule.cellEditModule.isCellEdit) {\n e.stopPropagation();\n }\n else if (isNullOrUndefined(document.getElementById(this.parent.element.id + '_dialog'))) {\n e.preventDefault();\n ganttObj.addRecord(undefined, this.parent.editSettings.newRowPosition);\n var focussedElement = ganttObj.element;\n focussedElement.focus();\n }\n break;\n }\n case 'addRowDialog':\n e.preventDefault();\n if (ganttObj.editModule && ganttObj.editModule.dialogModule && ganttObj.editSettings.allowAdding) {\n if (ganttObj.editModule.dialogModule.dialogObj && getValue('dialogOpen', ganttObj.editModule.dialogModule.dialogObj)) {\n return;\n }\n ganttObj.editModule.dialogModule.openAddDialog();\n }\n break;\n case 'editRowDialog':\n {\n e.preventDefault();\n var focussedTreeElement = ganttObj.element.querySelector('.e-treegrid');\n focussedTreeElement.focus();\n if (ganttObj.editModule && ganttObj.editModule.dialogModule && ganttObj.editSettings.allowEditing) {\n if (ganttObj.editModule.dialogModule.dialogObj && getValue('dialogOpen', ganttObj.editModule.dialogModule.dialogObj)) {\n return;\n }\n ganttObj.editModule.dialogModule.openToolbarEditDialog();\n }\n break;\n }\n case 'delete':\n if (ganttObj.selectionModule && ganttObj.editModule && ganttObj.editModule.dialogModule &&\n (!ganttObj.editModule.dialogModule.dialogObj || (ganttObj.editModule.dialogModule.dialogObj &&\n !ganttObj.editModule.dialogModule.dialogObj.visible)) && (!ganttObj.editSettings.allowTaskbarEditing\n || (ganttObj.editSettings.allowTaskbarEditing && !ganttObj.editModule.taskbarEditModule.touchEdit))) {\n if ((ganttObj.selectionSettings.mode !== 'Cell' && ganttObj.selectionModule.selectedRowIndexes.length)\n || (ganttObj.selectionSettings.mode === 'Cell' && ganttObj.selectionModule.getSelectedRowCellIndexes().length)) {\n if (!isNullOrUndefined(e.target)) {\n if (e.target['tagName'] !== 'INPUT') {\n ganttObj.editModule.startDeleteAction();\n }\n }\n else {\n ganttObj.editModule.startDeleteAction();\n }\n }\n }\n break;\n case 'focusTask':\n {\n e.preventDefault();\n var selectedId = void 0;\n if (ganttObj.selectionModule) {\n var currentViewData = ganttObj.currentViewData;\n if (ganttObj.selectionSettings.mode !== 'Cell' &&\n !isNullOrUndefined(currentViewData[ganttObj.selectedRowIndex])) {\n selectedId = ganttObj.currentViewData[ganttObj.selectedRowIndex].ganttProperties.rowUniqueID;\n }\n else if (ganttObj.selectionSettings.mode === 'Cell' &&\n ganttObj.selectionModule.getSelectedRowCellIndexes().length > 0) {\n var selectCellIndex = ganttObj.selectionModule.getSelectedRowCellIndexes();\n selectedId = currentViewData[selectCellIndex[selectCellIndex.length - 1].rowIndex].ganttProperties.rowUniqueID;\n }\n }\n if (selectedId) {\n ganttObj.scrollToTask(selectedId.toString());\n }\n break;\n }\n case 'focusSearch':\n {\n if (ganttObj.element.querySelector('#' + ganttObj.element.id + '_searchbar')) {\n var searchElement = ganttObj.element.querySelector('#' + ganttObj.element.id + '_searchbar');\n searchElement.setAttribute('tabIndex', '-1');\n searchElement.focus();\n }\n break;\n }\n case 'tab':\n case 'shiftTab':\n if (!ganttObj.element.classList.contains('e-scroll-disabled')) {\n ganttObj.ganttChartModule.onTabAction(e);\n }\n break;\n case 'contextMenu':\n {\n var contextMenu = document.getElementById(this.parent.element.id +\n '_contextmenu').ej2_instances[0];\n var containerPosition = this.parent.getOffsetRect(e.target);\n var top_1 = containerPosition.top + (containerPosition.height / 2);\n var left = containerPosition.left + (containerPosition.width / 2);\n this.setActiveElement(e.target);\n contextMenu.open(top_1, left);\n e.preventDefault();\n break;\n }\n default:\n {\n var eventArgs = {\n requestType: 'keyPressed',\n action: e.action,\n keyEvent: e\n };\n ganttObj.trigger('actionComplete', eventArgs);\n break;\n }\n }\n };\n FocusModule.prototype.upDownKeyNavigate = function (e) {\n e.preventDefault();\n var ganttObj = this.parent;\n var expandedRecords = ganttObj.getExpandedRecords(ganttObj.currentViewData);\n if (ganttObj.selectionModule) {\n if (ganttObj.selectionSettings.mode !== 'Cell' && ganttObj.selectedRowIndex !== -1) {\n var selectedItem = ganttObj.currentViewData[ganttObj.selectedRowIndex];\n var focusedRowIndex = this.parent.ganttChartModule.focusedRowIndex;\n var selectingRowIndex = expandedRecords.indexOf(selectedItem);\n var currentSelectingRecord = e.action === 'downArrow' ? expandedRecords[selectingRowIndex + 1] :\n expandedRecords[selectingRowIndex - 1];\n ganttObj.selectionModule.selectRow(ganttObj.currentViewData.indexOf(currentSelectingRecord), false, true);\n }\n else if (ganttObj.selectionSettings.mode === 'Cell' && ganttObj.selectionModule.getSelectedRowCellIndexes().length > 0) {\n var selectCellIndex = ganttObj.selectionModule.getSelectedRowCellIndexes();\n var selectedCellItem = selectCellIndex[selectCellIndex.length - 1];\n var currentCellIndex = selectedCellItem.cellIndexes[selectedCellItem.cellIndexes.length - 1];\n var selectedItem = ganttObj.currentViewData[selectedCellItem.rowIndex];\n var selectingRowIndex = expandedRecords.indexOf(selectedItem);\n var currentSelectingRecord = e.action === 'downArrow' ? expandedRecords[selectingRowIndex + 1] :\n expandedRecords[selectingRowIndex - 1];\n var cellInfo = {\n rowIndex: ganttObj.currentViewData.indexOf(currentSelectingRecord),\n cellIndex: currentCellIndex\n };\n ganttObj.selectionModule.selectCell(cellInfo);\n }\n this.parent.ganttChartModule.focusedRowIndex = this.parent.selectedRowIndex;\n }\n };\n FocusModule.prototype.expandCollapseKey = function (e) {\n var ganttObj = this.parent;\n if (ganttObj.selectionModule && ganttObj.selectedRowIndex !== -1) {\n var selectedRowIndex = void 0;\n if (ganttObj.selectionSettings.mode !== 'Cell') {\n selectedRowIndex = ganttObj.selectedRowIndex;\n }\n else if (ganttObj.selectionSettings.mode === 'Cell' && ganttObj.selectionModule.getSelectedRowCellIndexes().length > 0) {\n var selectCellIndex = ganttObj.selectionModule.getSelectedRowCellIndexes();\n selectedRowIndex = selectCellIndex[selectCellIndex.length - 1].rowIndex;\n }\n if (e.action === 'expandRow') {\n ganttObj.expandByIndex(selectedRowIndex);\n }\n else {\n ganttObj.collapseByIndex(selectedRowIndex);\n }\n }\n };\n return FocusModule;\n}());\nexport { FocusModule };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, createElement, Complex, addClass, removeClass, Event, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Internationalization, extend, getValue, isObjectArray, isObject, setValue, isUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, L10n, EventHandler } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, KeyboardEvents, Collection, append, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { TaskProcessor } from './task-processor';\nimport { GanttChart } from './gantt-chart';\nimport { Timeline } from '../renderer/timeline';\nimport { GanttTreeGrid } from './tree-grid';\nimport { SortSettings } from '../models/models';\nimport { LoadingIndicator } from '../models/models';\nimport { TaskFields, TimelineSettings, Holiday, EventMarker, DayWorkingTime, EditSettings, SelectionSettings } from '../models/models';\nimport { FilterSettings, SplitterSettings, TooltipSettings, LabelSettings } from '../models/models';\nimport { SearchSettings, ResourceFields } from '../models/models';\nimport { DateProcessor } from './date-processor';\nimport { ChartRows } from '../renderer/chart-rows';\nimport { Dependency } from '../actions/dependency';\nimport * as cls from './css-constants';\nimport { TreeGrid } from '@syncfusion/ej2-treegrid';\nimport { getActualProperties } from '@syncfusion/ej2-grids';\nimport { ConnectorLine } from '../renderer/connector-line';\nimport { Splitter } from './splitter';\nimport { Tooltip } from '../renderer/tooltip';\nimport { FocusModule } from '../actions/keyboard';\nimport { isCountRequired } from './utils';\n/**\n *\n * Represents the Gantt chart component.\n * ```html\n *
\n * \n * ```\n */\nvar Gantt = /** @class */ (function (_super) {\n __extends(Gantt, _super);\n function Gantt(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.showIndicator = true;\n _this.singleTier = 0;\n _this.isLocaleChanged = false;\n /** @hidden */\n _this.isCancelled = false;\n /** @hidden */\n _this.previousRecords = {};\n /** @hidden */\n _this.editedRecords = [];\n /** @hidden */\n _this.modifiedRecords = [];\n /** @hidden */\n _this.isOnEdit = false;\n /** @hidden */\n _this.isOnDelete = false;\n /** @hidden */\n _this.isExpandCollapseLevelMethod = false;\n /** @hidden */\n _this.isDynamicData = false;\n /** @hidden */\n _this.isConnectorLineUpdate = false;\n /** @hidden */\n _this.staticSelectedRowIndex = -1;\n _this.needsID = true;\n /** @hidden */\n _this.showActiveElement = true;\n /** @hidden */\n _this.addDeleteRecord = false;\n /** @hidden */\n _this.enableHeaderFocus = true;\n /** @hidden */\n _this.enableValidation = true;\n /**\n * @private\n */\n _this.isTreeGridRendered = false;\n /**\n * @private\n */\n _this.isFromOnPropertyChange = false;\n /**\n * @private\n */\n _this.isFromRenderBaseline = false;\n /**\n * @private\n */\n _this.isGanttChartRendered = false;\n /**\n * @private\n */\n _this.isEdit = false;\n setValue('mergePersistData', _this.mergePersistGanttData, _this);\n return _this;\n }\n /**\n * To get the module name\n *\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getModuleName = function () {\n return 'gantt';\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.preRender = function () {\n this.initProperties();\n };\n Gantt.prototype.initProperties = function () {\n this.globalize = new Internationalization(this.locale);\n this.isAdaptive = Browser.isDevice;\n this.flatData = [];\n this.currentViewData = [];\n this.updatedRecords = [];\n this.ids = [];\n this.ganttColumns = [];\n this.localeObj = new L10n(this.getModuleName(), this.getDefaultLocale(), this.locale);\n this.dataOperation = new TaskProcessor(this);\n this.nonWorkingHours = [];\n this.nonWorkingTimeRanges = [];\n this.workingTimeRanges = [];\n this.defaultEndTime = null;\n this.defaultStartTime = null;\n this.durationUnitTexts = {\n days: 'days',\n hours: 'hours',\n minutes: 'minutes',\n day: 'day',\n hour: 'hour',\n minute: 'minute'\n };\n this.durationUnitEditText = {\n minute: ['m', 'min', 'minute', 'minutes'],\n hour: ['h', 'hr', 'hour', 'hours'],\n day: ['d', 'dy', 'day', 'days']\n };\n this.perDayWidth = null;\n this.isMileStoneEdited = false;\n this.chartVerticalLineContainer = null;\n this.updatedConnectorLineCollection = [];\n this.connectorLineIds = [];\n this.predecessorsCollection = [];\n this.isInPredecessorValidation = this.enablePredecessorValidation;\n this.isValidationEnabled = true;\n this.isLoad = true;\n this.editedTaskBarItem = null;\n this.validationDialogElement = null;\n this.currentEditedArgs = {};\n this.dialogValidateMode = {\n respectLink: false,\n removeLink: false,\n preserveLinkWithEditing: true\n };\n this.secondsPerDay = this.dataOperation.getSecondsPerDay();\n this.nonWorkingDayIndex = [];\n this.dataOperation.getNonWorkingDayIndex();\n this.columnMapping = {};\n this.controlId = this.element.id;\n this.cloneProjectStartDate = this.enablePersistence && this.cloneProjectStartDate ?\n this.cloneProjectStartDate : null;\n this.cloneProjectEndDate = this.enablePersistence && this.cloneProjectEndDate ?\n this.cloneProjectEndDate : null;\n this.totalHolidayDates = this.dataOperation.getHolidayDates();\n this.ganttChartModule = new GanttChart(this);\n this.timelineModule = new Timeline(this);\n this.chartRowsModule = new ChartRows(this);\n this.treeGridModule = new GanttTreeGrid(this);\n this.dateValidationModule = new DateProcessor(this);\n this.predecessorModule = new Dependency(this);\n this.connectorLineModule = new ConnectorLine(this);\n this.splitterModule = new Splitter(this);\n this.tooltipModule = new Tooltip(this);\n this.keyConfig = {\n home: 'home',\n end: 'end',\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n collapseAll: 'ctrl+uparrow',\n expandAll: 'ctrl+downarrow',\n collapseRow: 'ctrl+shift+uparrow',\n expandRow: 'ctrl+shift+downarrow',\n saveRequest: '13',\n cancelRequest: '27',\n addRow: 'insert',\n addRowDialog: 'ctrl+insert',\n editRowDialog: 'ctrl+f2',\n delete: 'delete',\n tab: 'tab',\n shiftTab: 'shift+tab',\n focusTask: 'shift+f5',\n indentLevel: 'shift+leftarrow',\n outdentLevel: 'shift+rightarrow',\n focusSearch: 'ctrl+shift+70',\n contextMenu: 'shift+F10' //F Key\n };\n this.focusModule = new FocusModule(this);\n if (this.zoomingLevels.length === 0) {\n this.zoomingLevels = this.getZoomingLevels();\n }\n this.resourceFieldsMapping();\n if (isNullOrUndefined(this.resourceFields.unit)) { //set resourceUnit as unit if not mapping\n this.resourceFields.unit = 'unit';\n }\n if (!isNullOrUndefined(this.taskFields.work)) {\n this.taskType = 'FixedWork';\n }\n this.taskIds = [];\n };\n /**\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getDateFormat = function () {\n if (!isNullOrUndefined(this.dateFormat)) {\n return this.dateFormat;\n }\n else {\n var ganttDateFormat = this.globalize.getDatePattern({ skeleton: 'yMd' });\n return ganttDateFormat;\n }\n };\n /**\n * To get timezone offset.\n *\n * @returns {number} .\n * @private\n */\n Gantt.prototype.getDefaultTZOffset = function () {\n var janMonth = new Date(new Date().getFullYear(), 0, 1);\n var julMonth = new Date(new Date().getFullYear(), 6, 1); //Because there is no reagions DST inbetwwen this range\n return Math.max(janMonth.getTimezoneOffset(), julMonth.getTimezoneOffset());\n };\n /**\n * To check whether the date is in DST.\n *\n * @param {Date} date - Defines the date to check whether it is DST.\n * @returns {boolean} .\n * @private\n */\n Gantt.prototype.isInDst = function (date) {\n return date.getTimezoneOffset() < this.getDefaultTZOffset();\n };\n /**\n * Method to map resource fields.\n *\n * @returns {void} .\n */\n Gantt.prototype.resourceFieldsMapping = function () {\n var resourceSettings = this.resourceFields;\n resourceSettings.id = !isNullOrUndefined(resourceSettings.id) ? resourceSettings.id : this.resourceIDMapping;\n resourceSettings.name = !isNullOrUndefined(resourceSettings.name) ? resourceSettings.name : this.resourceNameMapping;\n };\n /**\n * To validate height and width\n *\n * @param {string | number} value .\n * @returns {string} .\n */\n Gantt.prototype.validateDimentionValue = function (value) {\n if (!isNullOrUndefined(value)) {\n if (typeof (value) === 'string' && value !== 'auto' && value.indexOf('%') === -1) {\n return value.indexOf('px') === -1 ? value + 'px' : value;\n }\n else if (typeof (value) === 'number') {\n return value + 'px';\n }\n else {\n return value.toString();\n }\n }\n else {\n return null;\n }\n };\n /**\n * To calculate dimensions of Gantt control\n *\n * @returns {void} .\n */\n Gantt.prototype.calculateDimensions = function () {\n var settingsHeight = this.validateDimentionValue(this.height);\n var settingsWidth = this.validateDimentionValue(this.width);\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n settingsWidth = this.width;\n }\n var elementStyleHeight = this.element.style.height;\n var elementStyleWidth = this.element.style.width;\n if (settingsWidth) {\n this.element.style.width = settingsWidth;\n }\n if (settingsHeight) {\n this.element.style.height = settingsHeight;\n }\n if (!settingsHeight && !elementStyleHeight) {\n this.element.style.height = 'auto'; // old 450px\n }\n if (!settingsWidth && !elementStyleWidth) {\n this.element.style.width = 'auto';\n }\n this.ganttHeight = this.element.offsetHeight;\n this.ganttWidth = this.element.offsetWidth;\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.render = function () {\n if (this.isReact) {\n this.treeGrid.isReact = true;\n this.treeGrid.grid.isReact = true;\n }\n if (this.isVue) {\n this.treeGrid.isVue = true;\n this.treeGrid.grid.isVue = true;\n this.treeGrid.vueInstance = this.vueInstance;\n this.treeGrid.grid.vueInstance = this.vueInstance;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.trigger('load', {});\n this.element.classList.add(cls.root);\n if (this.isAdaptive) {\n this.element.classList.add(cls.adaptive);\n }\n else {\n this.element.classList.remove(cls.adaptive);\n }\n this.calculateDimensions();\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.renderToolbar();\n }\n this.splitterModule.renderSplitter();\n this.notify('renderPanels', null);\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.showMaskRow();\n }\n else {\n this.showSpinner();\n }\n this.dataOperation.checkDataBinding();\n };\n Gantt.prototype.hideMaskRow = function () {\n var isTablePresent = this.element.querySelectorAll('.e-masked-table').length;\n if (!isNullOrUndefined(this.contentMaskTable) && (isTablePresent != 0 || this.contentMaskTable)) {\n var maskTable = this.contentMaskTable;\n remove(maskTable);\n this.contentMaskTable = null;\n }\n isTablePresent = this.element.querySelectorAll('.e-masked-table').length;\n if (!isNullOrUndefined(this.headerMaskTable) && (isTablePresent != 0 || this.headerMaskTable)) {\n var maskTable = this.headerMaskTable;\n remove(maskTable);\n this.headerMaskTable = null;\n }\n while ((this.element.querySelectorAll('.e-table-background')).length != 0) {\n this.element.querySelectorAll('.e-table-background')[0].remove();\n }\n while ((this.element.querySelectorAll('.e-temp-timeline')).length != 0) {\n this.element.querySelectorAll('.e-temp-timeline')[0].remove();\n }\n if (this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer).length != 0) {\n for (var i = 0; i < this.singleTier; i++) {\n if (!isNullOrUndefined(this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[parseInt(i.toString(), 10)])) {\n this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[parseInt(i.toString(), 10)]['style'].visibility = \"visible\";\n }\n }\n }\n if (!isNullOrUndefined(this.element.querySelector('.' + cls.timelineHeaderContainer))) {\n this.element.querySelector('.' + cls.timelineHeaderContainer)['style'].position = \"relative\";\n }\n if (!isNullOrUndefined(this.element.getElementsByClassName(cls.chartBodyContent)[0])) {\n this.element.getElementsByClassName(cls.chartBodyContent)[0]['style'].visibility = \"visible\";\n }\n };\n Gantt.prototype.showMaskRow = function () {\n var ganttHeader = this.chartPane.childNodes[0].childNodes[0];\n this.scrollLeftValue = this.chartPane.childNodes[0].childNodes[0]['scrollLeft'];\n var ganttContent = this.chartPane.childNodes[0].childNodes[1];\n if (this.treeGrid.element) {\n this.ganttChartModule['setVirtualHeight']();\n }\n if (!this.contentMaskTable) {\n if (ganttContent) {\n var content = ganttContent;\n this.renderBackGround(content);\n if (this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer).length != 0) {\n this.singleTier = this.timelineModule.isSingleTier ? 1 : 2;\n for (var i = 0; i < this.singleTier; i++) {\n this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[parseInt(i.toString(), 10)]['style'].visibility = \"hidden\";\n }\n }\n if (this.singleTier === 0) {\n this.singleTier = 2;\n }\n this.element.getElementsByClassName(cls.chartBodyContent)[0]['style'].visibility = \"hidden\";\n this.contentMaskTable = this.contentMaskTable = this.createMaskTable(content);\n }\n if (ganttHeader) {\n this.element.querySelector('.' + cls.timelineHeaderContainer)['style'].position = \"static\";\n var content = ganttHeader;\n this.renderHeaderBackground(content);\n this.headerMaskTable = this.headerMaskTable = this.createMaskTable(content);\n }\n }\n };\n Gantt.prototype.renderHeaderBackground = function (element) {\n var parentElement = element;\n var timelineHeight = element.getBoundingClientRect().height;\n var header = closest(parentElement, '.' + cls.timelineHeaderContainer) ? true : false;\n if (header) {\n var div = this.createElement('div', { className: 'e-table-background' });\n var tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight + 'px;'\n } });\n var backgroundLines = 0;\n var containerWidth = Math.round(element.getBoundingClientRect().width);\n for (var i = 0; i < 3; i++) {\n if (this.enableRtl) {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (containerWidth -= ((160))) + 'px; top:0px;'\n } }));\n }\n else {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (backgroundLines += ((160))) + 'px; top:0px;'\n } }));\n }\n }\n parentElement.insertBefore(div, parentElement.firstChild);\n }\n };\n Gantt.prototype.renderBackGround = function (element) {\n var parentElement = element;\n var timelineHeight = element.getBoundingClientRect().height;\n var content = closest(parentElement, '.' + cls.chartBodyContainer) ? true : false;\n if (content) {\n var div = this.createElement('div', { className: 'e-table-background' });\n var tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight + 'px;'\n } });\n var backgroundLines = 0;\n var containerWidth = Math.round(element.getBoundingClientRect().width);\n for (var i = 0; i < 3; i++) {\n if (this.enableRtl) {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (containerWidth -= (160)) + 'px;z-index:1;'\n } }));\n }\n else {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (backgroundLines += (160)) + 'px;z-index:1;'\n } }));\n }\n }\n parentElement.insertBefore(div, parentElement.firstChild);\n }\n };\n Gantt.prototype.createMaskTable = function (element) {\n var parentElement = element;\n var shimmerContainerHeight = element.getBoundingClientRect().height;\n var header = closest(parentElement, '.' + cls.timelineHeaderContainer) ? true : false;\n var maskTable;\n if (header) {\n maskTable = this.createEmptyTimeLineTable(shimmerContainerHeight);\n maskTable.style.position = 'sticky';\n maskTable.style.left = 0 + 'px';\n if (this.enableRtl) {\n maskTable.style.removeProperty('left');\n }\n }\n else {\n maskTable = this.createEmptyMaskTable(shimmerContainerHeight);\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = 1;\n }\n if (!header) {\n maskTable.style.height = element.getBoundingClientRect().height + 'px';\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n }\n else {\n maskTable.style.height = element.getBoundingClientRect().height + 'px';\n var div = this.createElement('div', { className: 'e-temp-timeline' });\n div.style.width = 614 + 'px';\n div.style.position = 'sticky';\n if (this.enableRtl) {\n div.style['margin-right'] = Math.abs(this.scrollLeftValue) + 'px';\n }\n else {\n div.style['margin-left'] = this.scrollLeftValue + 'px';\n }\n div.appendChild(maskTable);\n parentElement.insertBefore(div, parentElement.firstChild);\n }\n return maskTable;\n };\n Gantt.prototype.createEmptyTimeLineTable = function (timelineHeight) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = [];\n var duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight / 2 + 'px;'\n } });\n for (var i = 0; i < this.singleTier; i++) {\n row.push(duplicateRow.cloneNode(true));\n }\n this.topBottomHeader = 0;\n for (var i = 0; i < row.length; i++) {\n tbody.appendChild(this.applyTimelineMaskRow(row[parseInt(i.toString(), 10)]));\n this.topBottomHeader = this.topBottomHeader + 1;\n }\n table.appendChild(tbody);\n table.style.width = 100 + '%';\n return table;\n };\n Gantt.prototype.applyTimelineMaskRow = function (row) {\n var maskRow = row;\n maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n for (var i = 0; i < maskRow.childNodes.length - 1; i++) {\n maskRow.childNodes[parseInt(i.toString(), 10)]['style']['width'] = 166 + 'px';\n }\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n switch (this.topBottomHeader) {\n case 0:\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -20 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n case 1:\n maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n var innerMaskCells = [].slice.call(maskCell.childNodes);\n for (var i_1 = 0; i_1 < innerMaskCells.length; i_1++) {\n var htmlInner = innerMaskCells[parseInt(i_1.toString(), 10)];\n if (i_1 === 0) {\n if (this.enableRtl) {\n htmlInner.innerHTML = '';\n htmlInner.children[0]['style'].left = -14 + 'px';\n }\n else {\n htmlInner.innerHTML = '';\n }\n }\n else if (i_1 === 1) {\n if (this.enableRtl) {\n htmlInner.innerHTML = '';\n htmlInner.children[0]['style'].left = -30 + 'px';\n }\n else {\n htmlInner.innerHTML = '';\n }\n }\n else {\n if (this.enableRtl) {\n htmlInner.innerHTML = '';\n htmlInner.children[0]['style'].left = -60 + 'px';\n }\n else {\n htmlInner.innerHTML = '';\n }\n }\n }\n break;\n }\n }\n return maskRow;\n };\n Gantt.prototype.createEmptyMaskTable = function (timelineHeight) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = [];\n var duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight / 7 + 'px;'\n } });\n this.columnLoop = 0;\n for (var i = 0; i < 6; i++) {\n row.push(duplicateRow.cloneNode(true));\n }\n for (var j = 0; j < row.length; j++) {\n if (this.columnLoop < 4) {\n this.columnLoop = this.columnLoop + 1;\n }\n else if (this.columnLoop === 4) {\n this.columnLoop = 1;\n }\n tbody.appendChild(this.applyMaskRow(row[parseInt(j.toString(), 10)]));\n }\n table.appendChild(tbody);\n table.style.width = 100 + '%';\n var div = this.createElement('div', { className: 'e-temp-container' });\n div.style.width = 'calc(100% - ' + 17 + 'px)';\n div.style.overflow = 'hidden';\n div.appendChild(table);\n return div;\n };\n Gantt.prototype.applyMaskRow = function (row) {\n var maskRow = row;\n if (this.columnLoop < 4) {\n maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));\n maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));\n }\n else {\n maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));\n }\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n switch (this.columnLoop) {\n case 1:\n if (i === 0) {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -14 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n case 2:\n if (i === 0) {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -14 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n case 3:\n if (i === 0) {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -64 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n else {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -192 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n break;\n case 4:\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -388 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n }\n }\n return maskRow;\n };\n /**\n * Method used to show spinner.\n *\n * @returns {void} .\n */\n Gantt.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Method used to hide spinner.\n *\n * @returns {void} .\n */\n Gantt.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.processTimeline = function () {\n this.timelineModule.processTimelineUnit();\n this.timelineModule.calculateZoomingLevelsPerDayWidth(); // To calculate the perDaywidth\n };\n /**\n * @param {boolean} isChange -Defines whether task data is changed.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderGantt = function (isChange) {\n if (isChange) {\n this.isFromOnPropertyChange = isChange;\n }\n // predecessor calculation\n if (this.predecessorModule && this.taskFields.dependency) {\n this.predecessorModule['parentIds'] = [];\n this.predecessorModule['parentRecord'] = [];\n this.predecessorModule.updatePredecessors();\n if (this.isInPredecessorValidation && this.enableValidation && this.autoCalculateDateScheduling) {\n this.predecessorModule.updatedRecordsDateByPredecessor();\n }\n }\n if (this.enableValidation) {\n this.dataOperation.calculateProjectDates();\n this.timelineModule.validateTimelineProp();\n }\n if (isChange) {\n if (this.enableValidation) {\n this.dataOperation.updateGanttData();\n }\n if (this.allowParentDependency) {\n this.predecessorModule.updateParentPredecessor();\n }\n if (this.dataSource instanceof Object && isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.treeGrid.dataSource = { result: this.flatData, count: count };\n }\n else {\n this.treeGrid.setProperties({ dataSource: this.flatData }, false);\n }\n }\n else {\n if (this.enableValidation) {\n this.dataOperation.updateGanttData();\n }\n if (this.allowParentDependency) {\n this.predecessorModule.updateParentPredecessor();\n }\n this.treeGridPane.classList.remove('e-temp-content');\n remove(this.treeGridPane.querySelector('.e-gantt-temp-header'));\n this.notify('dataReady', {});\n if (this.enableContextMenu) {\n this.notify('initiate-contextMenu', {});\n }\n this.renderTreeGrid();\n this.wireEvents();\n this.notify('initPredessorDialog', {});\n }\n this.splitterModule.updateSplitterPosition();\n // if (this.gridLines === 'Vertical' || this.gridLines === 'Both') {\n // this.renderChartVerticalLines();\n // }\n };\n Gantt.prototype.removeCriticalPathStyles = function () {\n var ganttChartElement = this.ganttChartModule.chartElement;\n removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), cls.criticalChildTaskBarInnerDiv);\n removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), cls.criticalChildProgressBarInnerDiv);\n removeClass(ganttChartElement.querySelectorAll('.e-critical-milestone'), cls.criticalMilestone);\n removeClass(this.element.querySelectorAll('.e-connector-line'), cls.criticalConnectorLineSVG);\n removeClass(this.element.querySelectorAll('.e-connector-line-arrow'), cls.criticalConnectorArrowSVG);\n };\n Gantt.prototype.wireEvents = function () {\n if (this.allowKeyboard) {\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfig,\n eventName: 'keydown'\n });\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n Gantt.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n this.ganttChartModule.manageFocus(this.treeGrid.element.childNodes[1], 'remove', false);\n this.ganttChartModule.manageFocus(this.element, 'add', false);\n }\n }\n };\n /**\n * Method trigger while user perform window resize.\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.windowResize = function () {\n if (!isNullOrUndefined(this.element)) {\n this.updateContentHeight();\n this.ganttChartModule.updateWidthAndHeight(); // Updating chart scroll conatiner height for row mismatch\n this.treeGridModule.ensureScrollBar();\n if (this.predecessorModule && this.taskFields.dependency) {\n this.updateRowHeightInConnectorLine(this.updatedConnectorLineCollection);\n this.connectorLineModule.renderConnectorLines(this.updatedConnectorLineCollection);\n }\n if (this.enableCriticalPath) {\n var criticalModule = this.criticalPathModule;\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n }\n };\n Gantt.prototype.keyActionHandler = function (e) {\n this.focusModule.onKeyPress(e);\n };\n /**\n * Method for updating row height value in connector line collections\n *\n * @param {IConnectorLineObject[]} collection -Defines the CollectorLine collection.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.updateRowHeightInConnectorLine = function (collection) {\n if (collection && collection.length) {\n var rowHeight = this.ganttChartModule.getChartRows()[0]\n && this.ganttChartModule.getChartRows()[0].getBoundingClientRect().height;\n if (rowHeight && !isNaN(rowHeight)) {\n for (var count = 0; count < collection.length; count++) {\n collection[count].rowHeight = rowHeight;\n }\n }\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderToolbar = function () {\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.renderToolbar();\n this.toolbarModule.refreshToolbarItems();\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderTreeGrid = function () {\n this.treeGridModule.renderTreeGrid();\n };\n Gantt.prototype.updateCurrentViewData = function () {\n this.currentViewData = this.treeGrid.getCurrentViewRecords().slice();\n };\n /**\n * @param {IGanttData} records -Defines the delete record collections.\n * @returns {IGanttData} .\n * @private\n */\n Gantt.prototype.getRecordFromFlatdata = function (records) {\n var updatedRecord = [];\n for (var i = 0; i < records.length; i++) {\n updatedRecord.push(this.getTaskByUniqueID(records[i].uniqueID));\n }\n return updatedRecord;\n };\n /**\n * @param {object} args -Update the gantt element content height.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.updateContentHeight = function (args) {\n if (!this.allowTaskbarOverlap && this.viewType === 'ResourceView' && !this.isLoad) {\n return;\n }\n else {\n if (this.virtualScrollModule && this.enableVirtualization && !isNullOrUndefined(args)) {\n var length_1 = getValue('result.length', args);\n this.contentHeight = length_1 * this.rowHeight;\n }\n else {\n var expandedRecords = this.virtualScrollModule && this.enableVirtualization ?\n this.currentViewData : this.getExpandedRecords(this.currentViewData);\n var height = void 0;\n var chartRow = !isNullOrUndefined(this.ganttChartModule.getChartRows()) ? this.ganttChartModule.getChartRows()[0] : null;\n if (!isNullOrUndefined(chartRow) && chartRow.getBoundingClientRect().height > 0) {\n height = chartRow.getBoundingClientRect().height;\n }\n else {\n height = this.rowHeight;\n }\n this.contentHeight = expandedRecords.length * height;\n }\n }\n };\n /**\n * To get expand status.\n *\n * @param {IGanttData} data .\n * @returns {boolean} .\n * @private\n */\n Gantt.prototype.getExpandStatus = function (data) {\n var parentRecord = this.getParentTask(data.parentItem);\n if (!isNullOrUndefined(parentRecord)) {\n if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n var parentData = this.getParentTask(parentRecord.parentItem);\n if (parentData.expanded === false) {\n return false;\n }\n else {\n return this.getExpandStatus(this.getParentTask(parentRecord.parentItem));\n }\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n /**\n * Get expanded records from given record collection.\n *\n * @param {IGanttData[]} records - Defines record collection.\n * @returns {IGanttData[]} .\n\n */\n Gantt.prototype.getExpandedRecords = function (records) {\n var _this = this;\n if (isNullOrUndefined(records)) {\n return [];\n }\n var expandedRecords = records.filter(function (record) {\n return _this.getExpandStatus(record) === true;\n });\n return expandedRecords;\n };\n /**\n * Getting the Zooming collections of the Gantt control\n *\n * @returns {ZoomTimelineSettings} .\n * @private\n */\n Gantt.prototype.getZoomingLevels = function () {\n var _WeekStartDay = this.timelineSettings.weekStartDay;\n var zoomingLevels = [\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 50 },\n bottomTier: { unit: 'Year', format: 'yyyy', count: 10 }, timelineUnitSize: 99, level: 0,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 20 },\n bottomTier: { unit: 'Year', format: 'yyyy', count: 5 }, timelineUnitSize: 99, level: 1,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 5 },\n bottomTier: { unit: 'Year', format: 'yyyy', count: 1 }, timelineUnitSize: 99, level: 2,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayHalfValue, count: 6\n }, timelineUnitSize: 66, level: 3,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayHalfValue, count: 6\n }, timelineUnitSize: 99, level: 4,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayQuarterValue, count: 3\n }, timelineUnitSize: 66, level: 5,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayQuarterValue, count: 3\n }, timelineUnitSize: 99, level: 6,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 1 },\n bottomTier: { unit: 'Month', format: 'MMM yyyy', count: 1 }, timelineUnitSize: 99, level: 7,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Month', format: 'MMM, yy', count: 1 },\n bottomTier: { unit: 'Week', format: 'dd', count: 1 }, timelineUnitSize: 33, level: 8,\n timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Month', format: 'MMM, yyyy', count: 1 },\n bottomTier: { unit: 'Week', format: 'dd MMM', count: 1 }, timelineUnitSize: 66, level: 9,\n timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Month', format: 'MMM, yyyy', count: 1 },\n bottomTier: { unit: 'Week', format: 'dd MMM', count: 1 }, timelineUnitSize: 99, level: 10,\n timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },\n bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 33, level: 11,\n timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },\n bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 66, level: 12,\n timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },\n bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 99, level: 13,\n timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 12 }, timelineUnitSize: 66, level: 14,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 12 }, timelineUnitSize: 99, level: 15,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 6 }, timelineUnitSize: 66, level: 16,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 6 }, timelineUnitSize: 99, level: 17,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 2 }, timelineUnitSize: 66, level: 18,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 2 }, timelineUnitSize: 99, level: 19,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 1 }, timelineUnitSize: 66, level: 20,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 1 }, timelineUnitSize: 99, level: 21,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },\n bottomTier: { unit: 'Minutes', format: 'mm', count: 30 }, timelineUnitSize: 66, level: 22,\n timelineViewMode: 'Hour', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },\n bottomTier: { unit: 'Minutes', format: 'mm', count: 15 }, timelineUnitSize: 66, level: 23,\n timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },\n bottomTier: { unit: 'Minutes', format: 'mm', count: 1 }, timelineUnitSize: 66, level: 24,\n timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n }\n ];\n return zoomingLevels;\n };\n Gantt.prototype.displayQuarterValue = function (date) {\n var month = date.getMonth();\n if (month >= 0 && month <= 2) {\n return 'Q1';\n }\n else if (month >= 3 && month <= 5) {\n return 'Q2';\n }\n else if (month >= 6 && month <= 8) {\n return 'Q3';\n }\n else {\n return 'Q4';\n }\n };\n Gantt.prototype.displayHalfValue = function (date) {\n var month = date.getMonth();\n if (month >= 0 && month <= 5) {\n return 'H1';\n }\n else {\n return 'H2';\n }\n };\n /**\n *\n * @param {Date} date .\n * @param {string} format .\n * @returns {string} .\n */\n Gantt.prototype.getFormatedDate = function (date, format) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n if (isNullOrUndefined(format)) {\n format = this.getDateFormat();\n }\n return this.globalize.formatDate(date, { format: format });\n };\n /**\n * Get duration value as string combined with duration and unit values.\n *\n * @param {number} duration - Defines the duration.\n * @param {string} durationUnit - Defines the duration unit.\n * @returns {string} .\n */\n Gantt.prototype.getDurationString = function (duration, durationUnit) {\n var value = this.dateValidationModule.getDurationString(duration, durationUnit);\n return value;\n };\n /**\n * Get work value as string combined with work and unit values.\n *\n * @param {number} work - Defines the work value.\n * @param {string} workUnit - Defines the work unit.\n * @returns {string} .\n */\n Gantt.prototype.getWorkString = function (work, workUnit) {\n var value = this.dateValidationModule.getWorkString(work, workUnit);\n return value;\n };\n Gantt.prototype.updateTreeColumns = function () {\n var temp;\n var field;\n var gridColumns = this.treeGrid.grid.getColumns();\n if (this.treeColumnIndex !== -1 && this.columns[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columns[this.treeColumnIndex]['template'])) {\n temp = this.columns[this.treeColumnIndex]['template'];\n field = this.columns[this.treeColumnIndex]['field'];\n }\n var gridColumn;\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var j = 0; j < this.columns.length; j++) {\n if (this.columns[j]['field'] == gridColumns[i].field) {\n for (var _i = 0, _a = Object.keys(this.columns[j]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (!isUndefined(this.columns[j][prop])) {\n gridColumn[prop] = gridColumns[i][prop];\n }\n gridColumn.visible = gridColumns[i].visible;\n gridColumn.width = gridColumns[i].width;\n }\n this.columns[j] = (gridColumn);\n if (this.columns[j]['type'] !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columns[j]['template'] = temp;\n }\n }\n }\n }\n if (this.columns.length > 0) {\n this.treeGrid.setProperties({ columns: this.columns }, true);\n }\n };\n /**\n *\n * @param {object} args .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.treeDataBound = function (args) {\n this.element.getElementsByClassName('e-chart-root-container')[0]['style'].height = '100%';\n var gridHeight = this.element.getElementsByClassName('e-gridcontent')[0]['style'].height;\n var timelineContainer = this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];\n gridHeight = 'calc(100% - ' + timelineContainer + 'px)';\n // eslint-disable-next-line\n this.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {\n this.splitterElement.style.height = 'calc(100% - ' + this.toolbarModule.element.offsetHeight + 'px)';\n }\n else {\n this.splitterElement.style.height = '100%';\n }\n if (this.isLoad) {\n if (this.enablePersistence) {\n this.updateTreeColumns();\n }\n this.updateCurrentViewData();\n if (!this.enableVirtualization) {\n this.updateContentHeight();\n }\n if (!this.isTreeGridRendered) {\n this.isTreeGridRendered = true;\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {\n toolbarHeight = this.toolbarModule.element.offsetHeight;\n }\n if (this.timelineModule.isSingleTier) {\n addClass(this.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n addClass(this.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n else {\n removeClass(this.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n removeClass(this.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n this.treeGrid.height = '100%';\n this.notify('tree-grid-created', {});\n this.createGanttPopUpElement();\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.hideMaskRow();\n }\n else {\n this.hideSpinner();\n }\n setValue('isGanttCreated', true, args);\n this.renderComplete();\n }\n }\n else {\n this.getCurrentRecords(args);\n }\n if (this.enableCriticalPath && this.criticalPathModule) {\n this.criticalPathModule.showCriticalPath(this.enableCriticalPath);\n }\n this.notify('recordsUpdated', {});\n for (var i = 0; i < document.getElementsByClassName('e-timeline-header-table-container').length; i++) {\n for (var j = 0; j < document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children.length; j++) {\n document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children[j].children[0].setAttribute('tabindex', '-1');\n }\n }\n if (this.enableCriticalPath && this.criticalPathModule) {\n var criticalModule = this.criticalPathModule;\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n this.initialChartRowElements = this.ganttChartModule.getChartRows();\n this.isLoad = false;\n this.trigger('dataBound', args);\n };\n /**\n * @param {object} args .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Gantt.prototype.getCurrentRecords = function (args) {\n if (this.predecessorModule && this.taskFields.dependency) {\n this.connectorLineModule.removePreviousConnectorLines(this.currentViewData);\n }\n this.updateCurrentViewData();\n if (!this.enableVirtualization) {\n this.updateContentHeight();\n }\n // this.chartRowsModule.refreshGanttRows();\n if (this.virtualScrollModule && this.enableVirtualization) {\n this.ganttChartModule.virtualRender.adjustTable();\n this.ganttChartModule.scrollObject.updateTopPosition();\n }\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @param {GanttModel} newProp - Defines the New GanttModel.\n * @param {GanttModel} oldProp - Defines the old GanttModel.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Gantt.prototype.onPropertyChanged = function (newProp, oldProp) {\n var isRefresh = false;\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowSelection':\n case 'allowRowDragAndDrop':\n case 'allowFiltering':\n case 'showColumnMenu':\n case 'allowResizing':\n case 'allowReordering':\n case 'enableImmutableMode':\n this.treeGrid[prop] = this[prop];\n this.treeGrid.dataBind();\n break;\n case 'workWeek':\n this.dataOperation.getNonWorkingDayIndex();\n this.dataOperation.reUpdateGanttData();\n this.chartRowsModule.initiateTemplates();\n if (this.taskFields.dependency) {\n this.predecessorModule.updatedRecordsDateByPredecessor();\n }\n this.chartRowsModule.refreshGanttRows();\n this.treeGrid.refreshColumns();\n this.timelineModule.refreshTimeline();\n break;\n case 'toolbar':\n this.notify('ui-toolbarupdate', { module: 'toolbar', properties: newProp });\n break;\n case 'columnMenuItems':\n this.treeGrid.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'eventMarkers':\n case 'highlightWeekends':\n this.notify('ui-update', { module: 'day-markers', properties: newProp });\n break;\n case 'sortSettings':\n this.treeGrid.sortSettings = getActualProperties(this.sortSettings);\n this.treeGrid.dataBind();\n break;\n case 'timelineSettings':\n this.timelineModule.refreshTimeline();\n break;\n case 'rowHeight':\n case 'taskbarHeight':\n this.treeGrid.rowHeight = this.rowHeight;\n this.treeGrid.dataBind();\n this.chartRowsModule.initiateTemplates();\n this.timelineModule.updateChartByNewTimeline();\n if (this.taskFields.dependency) {\n this.ganttChartModule.reRenderConnectorLines();\n }\n break;\n case 'timezone':\n this.dataOperation.checkDataBinding(true);\n break;\n case 'enableCriticalPath':\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.hideMaskRow();\n }\n else {\n this.hideSpinner();\n }\n if (this.enableCriticalPath && this.criticalPathModule) {\n this.criticalPathModule.showCriticalPath(this.enableCriticalPath);\n var criticalModule = this.criticalPathModule;\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n else {\n this.removeCriticalPathStyles();\n }\n break;\n case 'filterSettings':\n this.treeGrid.filterSettings = getActualProperties(this.filterSettings);\n this.treeGrid.dataBind();\n break;\n case 'gridLines':\n this.treeGrid.gridLines = this.gridLines;\n this.treeGrid.dataBind();\n this.renderChartGridLines();\n break;\n case 'tooltipSettings':\n if (this.tooltipModule.toolTipObj) {\n this.tooltipModule.toolTipObj.destroy();\n }\n this.tooltipModule.createTooltip();\n break;\n case 'splitterSettings':\n this.splitterModule.updateSplitterPosition();\n break;\n case 'selectionSettings':\n this.treeGrid.selectionSettings = getActualProperties(this.selectionSettings);\n this.treeGrid.grid.selectionSettings.enableToggle = this.selectionSettings.enableToggle;\n this.treeGrid.dataBind();\n break;\n case 'searchSettings':\n if (newProp.searchSettings.key !== (\"\" || undefined)) {\n this.treeGrid.grid.searchSettings = getActualProperties(this.searchSettings);\n this.treeGrid.grid.dataBind();\n }\n this.treeGrid.searchSettings = getActualProperties(this.searchSettings);\n this.treeGrid.dataBind();\n if (this.toolbarModule) {\n this.toolbarModule.updateSearchTextBox();\n }\n break;\n case 'labelSettings':\n case 'renderBaseline':\n case 'baselineColor':\n this.isFromRenderBaseline = true;\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n this.isFromRenderBaseline = false;\n break;\n case 'resourceIDMapping':\n case 'resourceNameMapping':\n case 'resources':\n this.dataOperation.reUpdateResources();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n break;\n case 'includeWeekend':\n case 'allowUnscheduledTasks':\n case 'holidays':\n this.isLoad = true;\n if (prop === 'holidays') {\n this.totalHolidayDates = this.dataOperation.getHolidayDates();\n this.notify('ui-update', { module: 'day-markers', properties: newProp });\n }\n this.dataOperation.reUpdateGanttData();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n this.isLoad = false;\n break;\n case 'dayWorkingTime':\n this.isLoad = true;\n this.dataOperation.reUpdateGanttData();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n this.isLoad = false;\n break;\n case 'addDialogFields':\n case 'editDialogFields':\n if (this.editModule && this.editModule.dialogModule) {\n this.editModule.dialogModule.processDialogFields();\n }\n break;\n case 'columns':\n this.treeGridModule.treeGridColumns = [];\n this.treeGridModule.validateGanttColumns();\n this.treeGrid.columns = this.treeGridModule.treeGridColumns;\n this.chartRowsModule.initiateTemplates();\n this.timelineModule.updateChartByNewTimeline();\n break;\n case 'width':\n case 'height':\n this.reUpdateDimention();\n break;\n case 'editSettings':\n this.treeGrid.editSettings.allowAdding = this.editSettings.allowAdding;\n this.treeGrid.editSettings.allowDeleting = this.editSettings.allowDeleting;\n this.treeGrid.editSettings.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n this.treeGrid.editSettings.allowEditing = this.editSettings.allowEditing;\n this.treeGrid.editSettings.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n if (!isNullOrUndefined(this.editModule)) {\n this.editModule.reUpdateEditModules();\n }\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.refreshToolbarItems();\n }\n break;\n case 'connectorLineBackground':\n case 'connectorLineWidth':\n if (this.taskFields.dependency) {\n this.connectorLineModule.initPublicProp();\n this.ganttChartModule.reRenderConnectorLines();\n }\n break;\n case 'treeColumnIndex':\n this.treeGrid.treeColumnIndex = this.treeColumnIndex;\n break;\n case 'projectStartDate':\n case 'projectEndDate':\n this.dataOperation.calculateProjectDates();\n this.updateProjectDates(this.cloneProjectStartDate, this.cloneProjectEndDate, this.isTimelineRoundOff);\n break;\n case 'selectedRowIndex':\n if (!isNullOrUndefined(this.selectionModule)) {\n this.selectionModule.selectRowByIndex();\n }\n break;\n case 'dataSource':\n this.closeGanttActions();\n if (this.dataSource instanceof Object && isCountRequired(this)) {\n // In order to bind the observable data at load time, hasChildMapping is necessary to be mapped.\n this.treeGrid.hasChildMapping = 'isParent';\n var count = getValue('count', this.dataSource);\n this.treeGrid.dataSource = { result: this.flatData, count: count };\n }\n else {\n this.treeGrid.hasChildMapping = null;\n }\n this.dataOperation.checkDataBinding(true);\n break;\n case 'enableContextMenu':\n case 'contextMenuItems':\n if (this.enableContextMenu || prop === 'contextMenuItems') {\n this.notify('reRender-contextMenu', { module: 'contextMenu', enable: this.contextMenuItems });\n }\n else {\n this.treeGrid.contextMenuItems = [];\n }\n this.treeGrid.dataBind();\n break;\n case 'currencyCode':\n case 'locale':\n case 'enableRtl':\n case 'readOnly':\n case 'viewType':\n case 'taskFields':\n case 'allowTaskbarDragAndDrop':\n case 'allowTaskbarOverlap':\n case 'allowParentDependency':\n if (prop === 'locale') {\n this.isLocaleChanged = true;\n }\n isRefresh = true;\n break;\n case 'validateManualTasksOnLinking':\n this.validateManualTasksOnLinking = newProp.validateManualTasksOnLinking;\n break;\n case 'showOverAllocation':\n this.updateOverAllocationCotainer();\n break;\n }\n }\n if (isRefresh) {\n if (this.isLoad && this.contentMaskTable) {\n this.contentMaskTable = null;\n }\n this.refresh();\n }\n };\n Gantt.prototype.updateOverAllocationCotainer = function () {\n if (this.showOverAllocation && this.viewType === 'ResourceView') {\n this.ganttChartModule.renderOverAllocationContainer();\n }\n else {\n var rangeContainer = this.element.querySelector('.' + cls.rangeContainer);\n if (rangeContainer) {\n rangeContainer.innerHTML = '';\n }\n }\n };\n /**\n * Returns the properties to be maintained in persisted state.\n *\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getPersistData = function () {\n var keyEntity = ['sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex', 'currentZoomingLevel', 'cloneProjectStartDate', 'cloneProjectEndDate'];\n var ignoreOnPersist = {\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n Gantt.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n };\n Gantt.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.destroy = function () {\n this.notify('destroy', {});\n if (!isNullOrUndefined(this.validationDialogElement) && !this.validationDialogElement.isDestroyed) {\n this.validationDialogElement.destroy();\n }\n var modules = ['ganttChartModule', 'timelineModule', 'chartRowsModule',\n 'treeGridModule', 'ganttDataUpdatesModule', 'dateValidationModule', 'tooltipModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.editModule && this.editModule.dialogModule) {\n this.editModule.dialogModule.destroy();\n }\n _super.prototype.destroy.call(this);\n this.chartVerticalLineContainer = null;\n this.element.innerHTML = '';\n removeClass([this.element], cls.root);\n this.element.innerHTML = '';\n this.isTreeGridRendered = false;\n this.resetTemplates();\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Method to get taskbarHeight.\n *\n * @returns {number} .\n * @public\n */\n Gantt.prototype.getTaskbarHeight = function () {\n return this.chartRowsModule.taskBarHeight;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} .\n * @hidden\n */\n Gantt.prototype.requiredModules = function () {\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.allowFiltering || (this.toolbar && this.toolbar.indexOf('Search') !== -1)) {\n modules.push({\n member: 'filter',\n args: [this]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'excelExport',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop || this.allowTaskbarDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.enableCriticalPath) {\n modules.push({\n member: 'criticalPath',\n args: [this]\n });\n }\n if (this.allowResizing) {\n modules.push({\n member: 'resize',\n args: [this]\n });\n }\n if (this.toolbar && this.toolbar.length > 0) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowEditing || this.editSettings.allowDeleting\n || this.editSettings.allowTaskbarEditing || this.allowRowDragAndDrop) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.tooltipSettings.showTooltip) {\n modules.push({\n member: 'tooltip',\n args: [this]\n });\n }\n if (this.highlightWeekends || (this.holidays && this.holidays.length > 0)\n || (this.eventMarkers && this.eventMarkers.length > 0)) {\n modules.push({\n member: 'dayMarkers',\n args: [this]\n });\n }\n if (this.enableContextMenu) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'pdfExport',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void} .\n */\n Gantt.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule && this.allowSorting) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n Gantt.prototype.mergePersistGanttData = function () {\n if (!this.treeGrid) {\n this.treeGrid = new TreeGrid();\n }\n var persist1 = 'mergePersistGridData';\n this.treeGrid.grid[persist1].apply(this);\n };\n Gantt.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.treeGrid.grid[persist2].apply(this, [storedColumn, columns]);\n };\n /**\n * Clears all the sorted columns of the Gantt.\n *\n * @returns {void} .\n */\n Gantt.prototype.clearSorting = function () {\n this.sortModule.clearSorting();\n };\n /**\n * To validate and render chart horizontal and vertical lines in the Gantt\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.renderChartGridLines = function () {\n var className = 'e-chart-row-border';\n var verticalLines = this.chartVerticalLineContainer;\n var chartRowsTD = document.getElementById(this.element.id + 'GanttTaskTableBody').querySelectorAll('td');\n if (this.gridLines === 'Vertical') {\n if (isNullOrUndefined(verticalLines)) {\n this.renderChartVerticalLines();\n }\n else {\n if (verticalLines.style.display === 'none') {\n verticalLines.style.display = 'block';\n }\n }\n if (chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n removeClass([chartRowsTD[c]], className);\n }\n }\n }\n else if (this.gridLines === 'Horizontal') {\n if (!isNullOrUndefined(verticalLines)) {\n verticalLines.style.display = 'none';\n }\n if (!chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n addClass([chartRowsTD[c]], className);\n }\n }\n }\n else if (this.gridLines === 'Both') {\n if (isNullOrUndefined(verticalLines)) {\n this.renderChartVerticalLines();\n }\n else {\n if (verticalLines.style.display === 'none') {\n verticalLines.style.display = 'block';\n }\n }\n if (!chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n addClass([chartRowsTD[c]], className);\n }\n }\n }\n else if (this.gridLines === 'None') {\n if (!isNullOrUndefined(verticalLines) && verticalLines.style.display !== 'none') {\n verticalLines.style.display = 'none';\n }\n if (chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n removeClass([chartRowsTD[c]], className);\n }\n }\n }\n };\n /**\n * To update height of the Grid lines in the Gantt chart side.\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.updateGridLineContainerHeight = function () {\n if (this.chartVerticalLineContainer) {\n this.chartVerticalLineContainer.style.height = formatUnit(this.getContentHeight());\n }\n };\n /**\n * To get actual height of grid lines, holidays, weekend and event markers.\n *\n * @returns {number} .\n * @private\n */\n Gantt.prototype.getContentHeight = function () {\n var scrollHeight = this.ganttChartModule.scrollElement.offsetHeight - 16; //16 is horizontal scrollbar height\n var contentHeight = this.ganttChartModule.chartBodyContent.offsetHeight;\n var height = contentHeight < scrollHeight ? contentHeight : scrollHeight;\n return height;\n };\n /**\n * To update height of the Grid lines in the Gantt chart side.\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.reUpdateDimention = function () {\n var toolbarHeight = 0;\n this.calculateDimensions();\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {\n this.toolbarModule.toolbar.refresh();\n this.toolbarModule.refreshToolbarItems();\n toolbarHeight = this.toolbarModule.element.offsetHeight;\n }\n this.treeGrid.height = this.ganttHeight - toolbarHeight -\n this.treeGrid.grid.getHeaderContent().offsetHeight;\n this.splitterModule.splitterObject.height = (this.ganttHeight - toolbarHeight).toString();\n if (!isNullOrUndefined(this.chartVerticalLineContainer)) {\n this.chartVerticalLineContainer.style.height = this.ganttHeight + 'px';\n }\n if (!isNullOrUndefined(this.dayMarkersModule)) {\n var holidayContainer = getValue('nonworkingDayRender.holidayContainer', this.dayMarkersModule);\n var weekendContainer = getValue('nonworkingDayRender.weekendContainer', this.dayMarkersModule);\n var eventMarkersContainer = getValue('eventMarkerRender.eventMarkersContainer', this.dayMarkersModule);\n if (holidayContainer) {\n holidayContainer.style.height = this.ganttHeight + 'px';\n }\n if (weekendContainer) {\n weekendContainer.style.height = this.ganttHeight + 'px';\n }\n if (eventMarkersContainer) {\n eventMarkersContainer.style.height = this.ganttHeight + 'px';\n }\n }\n this.splitterModule.splitterObject.width = this.ganttWidth.toString();\n this.ganttChartModule.scrollObject.\n setHeight(this.ganttHeight - this.ganttChartModule.chartTimelineContainer.offsetHeight - toolbarHeight);\n };\n /**\n * To render vertical lines in the Gantt chart side.\n *\n * @returns {void} .\n */\n Gantt.prototype.renderChartVerticalLines = function () {\n if (!this.element.contains(this.chartVerticalLineContainer)) {\n this.chartVerticalLineContainer = createElement('div', {\n id: this.element.id + 'line-container',\n styles: 'position:absolute;height:100%;'\n });\n this.ganttChartModule.chartBodyContent.insertBefore(this.chartVerticalLineContainer, this.ganttChartModule.chartBodyContent.lastChild);\n }\n this.chartVerticalLineContainer.innerHTML = '';\n var headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[1];\n if (isNullOrUndefined(headerTable)) {\n headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[0];\n }\n var thElements = headerTable.getElementsByTagName('th');\n var thLength = thElements.length;\n var thWidth;\n var leftPos = 0;\n var containerDiv = createElement('div');\n for (var n = 0; n < thLength; n++) {\n leftPos = n === 0 ? -1 : (leftPos + parseFloat(thWidth));\n thWidth = thElements[n].style.width;\n var divElement = createElement('div', {\n className: 'e-line-container-cell',\n styles: (this.enableRtl ? 'right:' + (leftPos + 1) : 'left:' + leftPos) + 'px'\n });\n containerDiv.appendChild(divElement);\n }\n this.chartVerticalLineContainer.innerHTML = containerDiv.innerHTML;\n };\n /**\n * Method to get default localized text of the Gantt.\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.getDefaultLocale = function () {\n var ganttLocale = {\n emptyRecord: 'No records to display',\n id: 'ID',\n name: 'Name',\n startDate: 'Start Date',\n endDate: 'End Date',\n duration: 'Duration',\n progress: 'Progress',\n dependency: 'Dependency',\n notes: 'Notes',\n criticalPath: 'Critical Path',\n baselineStartDate: 'Baseline Start Date',\n baselineEndDate: 'Baseline End Date',\n taskMode: 'Task Mode',\n changeScheduleMode: 'Change Schedule Mode',\n subTasksStartDate: 'SubTasks Start Date',\n subTasksEndDate: 'SubTasks End Date',\n scheduleStartDate: 'Schedule Start Date',\n scheduleEndDate: 'Schedule End Date',\n auto: 'Auto',\n manual: 'Manual',\n type: 'Type',\n offset: 'Offset',\n resourceName: 'Resources',\n resourceID: 'Resource ID',\n day: 'day',\n hour: 'hour',\n minute: 'minute',\n days: 'days',\n hours: 'hours',\n minutes: 'minutes',\n generalTab: 'General',\n customTab: 'Custom Columns',\n writeNotes: 'Write Notes',\n addDialogTitle: 'New Task',\n editDialogTitle: 'Task Information',\n add: 'Add',\n edit: 'Edit',\n update: 'Update',\n delete: 'Delete',\n cancel: 'Cancel',\n search: 'Search',\n task: ' task',\n tasks: ' tasks',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n zoomToFit: 'Zoom to fit',\n excelExport: 'Excel export',\n csvExport: 'CSV export',\n pdfExport: 'Pdf export',\n expandAll: 'Expand all',\n collapseAll: 'Collapse all',\n nextTimeSpan: 'Next timespan',\n prevTimeSpan: 'Previous timespan',\n saveButton: 'Save',\n taskBeforePredecessorFS: 'You moved \"{0}\" to start before \"{1}\" finishes and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorFS: 'You moved \"{0}\" away from \"{1}\" and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskBeforePredecessorSS: 'You moved \"{0}\" to start before \"{1}\" starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorSS: 'You moved \"{0}\" to start after \"{1}\" starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskBeforePredecessorFF: 'You moved \"{0}\" to finish before \"{1}\" finishes and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorFF: 'You moved \"{0}\" to finish after \"{1}\" finishes and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskBeforePredecessorSF: 'You moved \"{0}\" away from \"{1}\" to starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorSF: 'You moved \"{0}\" to finish after \"{1}\" starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n okText: 'Ok',\n confirmDelete: 'Are you sure you want to Delete Record?',\n from: 'From',\n to: 'To',\n taskLink: 'Task Link',\n lag: 'Lag',\n start: 'Start',\n finish: 'Finish',\n enterValue: 'Enter the value',\n taskInformation: 'Task Information',\n deleteTask: 'Delete Task',\n deleteDependency: 'Delete Dependency',\n convert: 'Convert',\n save: 'Save',\n above: 'Above',\n below: 'Below',\n child: 'Child',\n milestone: 'Milestone',\n toTask: 'To Task',\n toMilestone: 'To Milestone',\n eventMarkers: 'Event markers',\n leftTaskLabel: 'Left task label',\n rightTaskLabel: 'Right task label',\n timelineCell: 'Timeline cell',\n confirmPredecessorDelete: 'Are you sure you want to remove dependency link?',\n unit: 'Unit',\n work: 'Work',\n taskType: 'Task Type',\n unassignedTask: 'Unassigned Task',\n group: 'Group',\n indent: 'Indent',\n outdent: 'Outdent',\n segments: 'Segments',\n splitTask: 'Split Task',\n mergeTask: 'Merge Task',\n left: 'Left',\n right: 'Right'\n };\n return ganttLocale;\n };\n /**\n * To remove sorted records of particular column.\n *\n * @param {string} columnName - Defines the sorted column name.\n * @returns {void} .\n */\n Gantt.prototype.removeSortColumn = function (columnName) {\n this.sortModule.removeSortColumn(columnName);\n };\n /**\n *\n * @param {object} args -Defines the edited event args.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.actionBeginTask = function (args) {\n this.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.showMaskRow();\n }\n else {\n this.showSpinner();\n }\n };\n /**\n * To move horizontal scroll bar of Gantt to specific date.\n *\n * @param {string} date - Defines the task date of data.\n * @returns {void} .\n */\n Gantt.prototype.scrollToDate = function (date) {\n var tempDate = this.dateValidationModule.getDateFromFormat(date);\n var left = this.dataOperation.getTaskLeft(tempDate, false);\n this.ganttChartModule.updateScrollLeft(left);\n };\n /**\n * To move horizontal scroll bar of Gantt to specific task id.\n *\n * @param {string} taskId - Defines the task id of data.\n * @returns {void} .\n */\n Gantt.prototype.scrollToTask = function (taskId) {\n if (this.ids.indexOf(taskId) !== -1) {\n var left = this.flatData[this.ids.indexOf(taskId)].ganttProperties.left;\n this.ganttChartModule.updateScrollLeft(left);\n }\n };\n /**\n * To set scroll left and top in chart side.\n *\n * @param {number} left - Defines the scroll left value of chart side.\n * @param {number} top - Defines the scroll top value of chart side.\n * @returns {void} .\n */\n Gantt.prototype.updateChartScrollOffset = function (left, top) {\n if (!isNullOrUndefined(left)) {\n left = this.ganttChartModule.scrollElement.scrollWidth <= left ?\n this.ganttChartModule.scrollElement.scrollWidth : left;\n this.ganttChartModule.scrollObject.setScrollLeft(left, this.enableRtl ? -1 : 0);\n }\n if (!isNullOrUndefined(top)) {\n top = this.ganttChartModule.scrollElement.scrollHeight <= top ? this.ganttChartModule.scrollElement.scrollHeight : top;\n this.ganttChartModule.scrollObject.setScrollTop(top);\n }\n };\n /**\n * Get parent task by clone parent item.\n *\n * @param {IParent} cloneParent - Defines the clone parent item.\n * @returns {IGanttData} .\n * @hidden\n */\n Gantt.prototype.getParentTask = function (cloneParent) {\n if (!isNullOrUndefined(cloneParent)) {\n var parent_1 = this.flatData.filter(function (val) {\n return cloneParent.uniqueID === val.uniqueID;\n });\n if (parent_1.length > 0) {\n return parent_1[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * Get parent task by clone parent item.\n *\n * @param {IGanttData} ganttRecord -Defines the Gantt record.\n * @param {number} level -Defines the selected record level.\n * @returns {IGanttData} .\n * @hidden\n */\n Gantt.prototype.getRootParent = function (ganttRecord, level) {\n if (ganttRecord.level === level) {\n return ganttRecord;\n }\n return this.getRootParent(this.getParentTask(ganttRecord.parentItem), level);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean | number[] | string[] | Date[] | boolean[]} filterValue - Defines the value\n * used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, TreeGrid filters the records with exact match.if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @returns {void} .\n */\n Gantt.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent) {\n this.treeGrid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent);\n };\n /**\n * Export Gantt data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Gantt.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} .\n */\n Gantt.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n /* eslint-disable-next-line */\n workbook, isBlob) {\n return this.excelExportModule ? this.treeGrid.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob) : null;\n };\n /**\n * Export Gantt data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Gantt.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} .\n */\n Gantt.prototype.csvExport = function (excelExportProperties, \n /* eslint-disable-next-line */\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ? this.treeGrid.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob) : null;\n };\n /**\n * Export Gantt data to PDF document.\n *\n * @param {PdfExportProperties} pdfExportProperties - Defines the export properties of the Gantt.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If the 'isBlob' parameter is set to true, the method returns PDF data as a blob instead of exporting it as a down-loadable PDF file. The default value is false.\n * @returns {Promise} .\n */\n Gantt.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.export(pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : null;\n };\n /**\n * Clears the filtered columns in Gantt.\n *\n * Can also be used to clear filtering of a specific column in Gantt.\n *\n * @param {string[]} fields - Defines the specific column to remove filter.\n * @returns {void} .\n */\n Gantt.prototype.clearFiltering = function (fields) {\n this.treeGrid.grid.clearFiltering(fields);\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.removeFilteredColsByField = function (field) {\n this.treeGrid.removeFilteredColsByField(field, false);\n };\n /**\n * Method to set holidays and non working days in date time and date picker controls\n *\n * @param {RenderDayCellEventArgs} args .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderWorkingDayCell = function (args) {\n var includeWeekend = this.taskMode !== 'Auto' ? true : (this.includeWeekend || !this.autoCalculateDateScheduling) ? true : false;\n var nonWorkingDays = !includeWeekend ? this.nonWorkingDayIndex : [];\n var holidays = this.totalHolidayDates;\n if (nonWorkingDays.length > 0 && nonWorkingDays.indexOf(args.date.getDay()) !== -1) {\n args.isDisabled = true;\n }\n else if (holidays.length > 0) {\n var tempDate = new Date(args.date.getTime());\n tempDate.setHours(0, 0, 0);\n if (holidays.indexOf(tempDate.getTime()) !== -1) {\n if (!this.autoCalculateDateScheduling) {\n args.isDisabled = false;\n }\n else {\n args.isDisabled = true;\n }\n }\n }\n };\n /**\n * To update timeline at start point with one unit.\n *\n * @param {string} mode - Render previous span of Timeline.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.previousTimeSpan = function (mode) {\n this.timelineModule.performTimeSpanAction('prevTimeSpan', 'publicMethod', new Date(this.timelineModule.timelineStartDate.getTime()), new Date(this.timelineModule.timelineEndDate.getTime()), mode);\n };\n /**\n * To update timeline at end point with one unit.\n *\n * @param {string} mode - Render next span of Timeline.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.nextTimeSpan = function (mode) {\n this.timelineModule.performTimeSpanAction('nextTimeSpan', 'publicMethod', new Date(this.timelineModule.timelineStartDate.getTime()), new Date(this.timelineModule.timelineEndDate.getTime()), mode);\n };\n /**\n * To validate project start date and end date.\n *\n * @param {Date} startDate - Defines start date of project.\n * @param {Date} endDate - Defines end date of project.\n * @param {boolean} isTimelineRoundOff - Defines project start date and end date need to be round off or not.\n * @param {string} isFrom .\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updateProjectDates = function (startDate, endDate, isTimelineRoundOff, isFrom) {\n this.timelineModule.totalTimelineWidth = 0;\n this.cloneProjectStartDate = startDate;\n this.cloneProjectEndDate = endDate;\n this.isTimelineRoundOff = isTimelineRoundOff;\n this.timelineModule.refreshTimelineByTimeSpan();\n this.dataOperation.reUpdateGanttDataPosition();\n this.timelineModule.updateChartByNewTimeline();\n this.ganttChartModule.chartBodyContent.style.width = formatUnit(this.timelineModule.totalTimelineWidth);\n this.ganttChartModule.updateLastRowBottomWidth();\n if (this.taskFields.dependency) {\n this.ganttChartModule.reRenderConnectorLines();\n }\n if (isFrom !== 'beforeAdd') {\n this.notify('selectRowByIndex', {});\n }\n };\n /**\n * Split the taskbar into segment by the given date\n *\n * @param {string} taskId - Defines the id of a task to be split.\n * @param {string} splitDate - Defines in which date the taskbar must be split up.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.splitTask = function (taskId, splitDate) {\n this.isEdit = true;\n this.chartRowsModule.splitTask(taskId, splitDate);\n };\n /**\n * merge the split taskbar with the given segment indexes.\n *\n * @param {string} taskId - Defines the id of a task to be split.\n * @param {string} segmentIndexes - Defines the object array of indexes which must be merged.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.mergeTask = function (taskId, segmentIndexes) {\n this.chartRowsModule.mergeTask(taskId, segmentIndexes);\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines origin field name.\n * @param {string} toFName - Defines destination field name.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.reorderColumns = function (fromFName, toFName) {\n this.treeGrid.reorderColumns(fromFName, toFName);\n };\n /**\n * Method to clear edited collections in gantt set edit flag value\n *\n * @param {boolean} isStart -Defines whether to initiate edit action.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.initiateEditAction = function (isStart) {\n this.isOnEdit = isStart;\n this.previousRecords = {};\n this.editedRecords = [];\n };\n /**\n *\n * @param {string} field Method to update value in Gantt record and make clone record for this\n * @param {IGanttData | ITaskData} record .\n * @param {boolean} isTaskData .\n * @returns {void} .\n * @private\n */\n /* eslint-disable-next-line */\n Gantt.prototype.setRecordValue = function (field, value, record, isTaskData) {\n value = isUndefined(value) ? null : value;\n if (this.isOnEdit || this.isOnDelete) {\n this.makeCloneData(field, record, isTaskData);\n var ganttData = isTaskData ? record : record.ganttProperties;\n var id = ganttData.rowUniqueID;\n var task = this.getRecordByID(id);\n var isValid = false;\n if (isNullOrUndefined(value) || (!isNullOrUndefined(value) && !isNullOrUndefined(record[\"\" + field]) && (value instanceof Date ? value.getTime() !==\n record[\"\" + field].getTime() : record[\"\" + field] !== value))) {\n isValid = true;\n }\n if (task && ((this.editedRecords.indexOf(task) === -1 && isValid) || this.editedRecords.length === 0)) {\n if (this.editModule['draggedRecord'] && this.editModule['draggedRecord'].ganttProperties.taskId === ganttData.taskId) {\n this.editedRecords.splice(0, 0, task);\n }\n else {\n this.editedRecords.push(task);\n }\n if (this.enableImmutableMode) {\n this.modifiedRecords.push(task);\n }\n }\n }\n setValue(field, value, record);\n };\n Gantt.prototype.makeCloneData = function (field, record, isTaskData) {\n var cloneData;\n /* eslint-disable-next-line */\n var value = getValue(field, record);\n /* eslint-disable-next-line */\n var prevValue;\n /* eslint-disable-next-line */\n var clonedValue;\n if (isTaskData) {\n field = 'ganttProperties.' + field;\n }\n if (isNullOrUndefined(this.previousRecords[record.uniqueID])) {\n var tempData = {};\n this.previousRecords[record.uniqueID] = tempData;\n }\n /* eslint-disable-next-line */\n cloneData = this.previousRecords[record.uniqueID];\n /* eslint-disable-next-line */\n prevValue = getValue(field, cloneData);\n if (isUndefined(prevValue)) {\n if (value instanceof Date) {\n clonedValue = new Date(value.getTime());\n }\n else if (isObjectArray(value)) {\n clonedValue = extend([], value, [], true);\n }\n else if (isObject(value)) {\n clonedValue = extend({}, {}, value, true);\n }\n else {\n clonedValue = value;\n }\n if (!isUndefined(clonedValue)) {\n setValue(field, clonedValue, cloneData);\n }\n else {\n setValue(field, null, cloneData);\n }\n }\n };\n Gantt.prototype.closeGanttActions = function () {\n if (this.editModule) {\n if (this.editModule.cellEditModule && this.editModule.cellEditModule.isCellEdit) {\n this.treeGrid.closeEdit();\n this.editModule.cellEditModule.isCellEdit = false;\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.refreshToolbarItems();\n }\n }\n else if (this.editModule.dialogModule && this.editModule.dialogModule.dialogObj &&\n this.editModule.dialogModule.dialogObj.visible) {\n this.editModule.dialogModule.dialogObj.hide();\n this.editModule.dialogModule.dialogClose();\n }\n }\n };\n /**\n * Method to get task by uniqueId value.\n *\n * @param {string} id - Defines the task id.\n * @returns {IGanttData} .\n * @isGenericType true\n */\n Gantt.prototype.getTaskByUniqueID = function (id) {\n var value = this.flatData.filter(function (val) {\n return val.uniqueID === id;\n });\n if (value.length > 0) {\n return value[0];\n }\n else {\n return null;\n }\n };\n /**\n * Method to get record by id value.\n *\n * @param {string} id - Defines the id of record.\n * @returns {IGanttData} .\n * @isGenericType true\n */\n Gantt.prototype.getRecordByID = function (id) {\n if (isNullOrUndefined(id)) {\n return null;\n }\n return this.flatData[this.ids.indexOf(id.toString())];\n };\n /**\n * Method to set splitter position.\n *\n * @param {string|number} value - Define value to splitter settings property.\n * @param {string} type - Defines name of internal splitter settings property.\n * @returns {void} .\n */\n Gantt.prototype.setSplitterPosition = function (value, type) {\n var tempSplitterSettings = {};\n tempSplitterSettings[type] = value;\n var splitterPosition = this.splitterModule.calculateSplitterPosition(tempSplitterSettings);\n var pane1 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[0];\n var pane2 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[1];\n this.splitterModule.splitterPreviousPositionGrid = pane1.scrollWidth + 1 + 'px';\n this.splitterModule.splitterPreviousPositionChart = pane2.scrollWidth + 1 + 'px';\n this.splitterModule.splitterObject.paneSettings[0].size = splitterPosition;\n this.splitterModule.triggerCustomResizedEvent();\n };\n /**\n * Expand the records by index value.\n *\n * @param {number[] | number} index - Defines the index of rows to be expand.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.expandByIndex = function (index) {\n if (typeof index === 'number') {\n var args = this.contructExpandCollapseArgs(null, index);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.expandGanttRow(args);\n }\n else {\n for (var i = 0; i < index.length; i++) {\n if (typeof index[i] === 'number') {\n var ind = index[i];\n var args = this.contructExpandCollapseArgs(null, ind);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.expandGanttRow(args);\n }\n }\n }\n };\n /**\n * Expand the record by task id.\n *\n * @param {number} id - Defines the id of task.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.expandByID = function (id) {\n var args = this.contructExpandCollapseArgs(id);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.expandGanttRow(args);\n };\n /**\n * Collapse the record by index value.\n *\n * @param {number} index - Defines the index of row.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.collapseByIndex = function (index) {\n var args = this.contructExpandCollapseArgs(null, index);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.collapseGanttRow(args);\n };\n /**\n * Collapse the record by id value.\n *\n * @param {number} id - Defines the id of task.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.collapseByID = function (id) {\n var args = this.contructExpandCollapseArgs(id);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.collapseGanttRow(args);\n };\n /**\n * Method to add record.\n *\n * @param {Object[] | IGanttData | Object} data - Defines record to add.\n * @param {RowPosition} rowPosition - Defines the position of row.\n * @param {number} rowIndex - Defines the row index.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.addRecord = function (data, rowPosition, rowIndex) {\n if (this.editModule && this.editSettings.allowAdding) {\n if (this.viewType === 'ResourceView') {\n this.editModule.addRowPosition = rowPosition;\n this.editModule.addRowIndex = rowIndex;\n var resources = void 0;\n if (!isNullOrUndefined(data)) {\n resources = data[this.taskFields.resourceInfo];\n }\n var id = void 0;\n var parentTask = void 0;\n if (!isNullOrUndefined(resources) && resources.length) {\n for (var i = 0; i < resources.length; i++) {\n id = (typeof resources[i] === 'object') ? resources[i][this.resourceFields.id] :\n resources[0];\n parentTask = this.flatData[this.getTaskIds().indexOf('R' + id)];\n if (parentTask) {\n break;\n }\n }\n if (parentTask && parentTask.childRecords.length || parentTask.level === 0) {\n var dropChildRecord = parentTask.childRecords[rowIndex];\n if (dropChildRecord) {\n var position = rowPosition === 'Above' || rowPosition === 'Below' ? rowPosition :\n 'Child';\n if (position === 'Child') {\n this.editModule.addRecord(data, position, this.getTaskIds().indexOf('R' + id));\n }\n else {\n this.editModule.addRecord(data, position, this.flatData.indexOf(dropChildRecord));\n }\n }\n else {\n this.editModule.addRecord(data, 'Child', this.getTaskIds().indexOf('R' + id));\n }\n }\n else {\n this.editModule.addRecord(data, 'Bottom');\n }\n }\n else {\n this.editModule.addRecord(data, 'Bottom');\n }\n this.editModule.addRowPosition = null;\n this.editModule.addRowIndex = null;\n }\n else {\n this.editModule.addRecord(data, rowPosition, rowIndex);\n }\n }\n };\n /**\n * Method to update record by ID.\n *\n * @param {Object} data - Defines the data to modify.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updateRecordByID = function (data) {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.updateRecordByID(data);\n }\n };\n /**\n * To update existing taskId with new unique Id.\n *\n * @param {number | string} currentId - Defines the current Id of the record.\n * @param {number | string} newId - Defines the new Id of the record.\n * @returns {void} .\n */\n Gantt.prototype.updateTaskId = function (currentId, newId) {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.updateTaskId(currentId, newId);\n }\n };\n /**\n * Public method to expand particular level of rows.\n *\n * @returns {void} .\n * @param {number} level .\n * @private\n */\n Gantt.prototype.expandAtLevel = function (level) {\n if (this.enableVirtualization) {\n this.isExpandCollapseLevelMethod = true;\n }\n this.ganttChartModule.expandAtLevel(level);\n };\n /**\n * To indent the level of selected task to the hierarchical Gantt task.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.indent = function () {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.indent();\n }\n };\n /**\n * To outdent the level of selected task from the hierarchical Gantt task.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.outdent = function () {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.outdent();\n }\n };\n /**\n * To render the critical path tasks in Gantt.\n *\n * @returns {void} .\n * @param {boolean} isCritical- whether to render critical path or not .\n * @public\n */\n Gantt.prototype.showCriticalPath = function (isCritical) {\n if (this.criticalPathModule) {\n this.criticalPathModule.showCriticalPath(isCritical);\n var criticalModule = this.criticalPathModule;\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n };\n /**\n * To get all the critical tasks in Gantt.\n *\n * @returns {IGanttData[]} .\n * @public\n */\n Gantt.prototype.getCriticalTasks = function () {\n if (!isNullOrUndefined(this.criticalPathModule) && this.enableCriticalPath) {\n return this.criticalPathModule.getCriticalTasks();\n }\n else {\n return null;\n }\n };\n /**\n * To perform Zoom in action on Gantt timeline.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.zoomIn = function () {\n this.timelineModule.processZooming(true);\n };\n /**\n * To perform zoom out action on Gantt timeline.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.zoomOut = function () {\n this.timelineModule.processZooming(false);\n };\n /**\n * To show all project task in available chart width\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.fitToProject = function () {\n this.timelineModule.processZoomToFit();\n this.ganttChartModule.updateScrollLeft(0);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Defines the Dragged record index.\n * @param {number} toIndex - Defines the Dropped record index.\n * @param {string} position -Defines the position of the dropped row.\n * @returns {void} .\n */\n Gantt.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Method to update record by Index.\n *\n * @param {number} index - Defines the index of data to modify.\n * @param {object} data - Defines the data to modify.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updateRecordByIndex = function (index, data) {\n if (this.editModule && this.editSettings.allowEditing) {\n var tasks = this.taskFields;\n var record = this.updatedRecords.length > 0 ?\n !isNullOrUndefined(this.updatedRecords[index]) ? this.updatedRecords[index] : null : null;\n if (!isNullOrUndefined(record)) {\n data[tasks.id] = record[tasks.id];\n this.editModule.updateRecordByID(data);\n }\n }\n };\n /**\n * To add dependency for Task.\n *\n * @param {number} id - Defines the ID of data to modify.\n * @param {string} predecessorString - Defines the predecessor string to add.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.addPredecessor = function (id, predecessorString) {\n var ganttRecord = this.getRecordByID(id.toString());\n if (this.editModule && !isNullOrUndefined(ganttRecord) && this.editSettings.allowTaskbarEditing) {\n this.connectorLineEditModule.addPredecessor(ganttRecord, predecessorString);\n }\n };\n /**\n * To remove dependency from task.\n *\n * @param {number} id - Defines the ID of task to modify.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.removePredecessor = function (id) {\n var ganttRecord = this.getRecordByID(id.toString());\n if (this.editModule && !isNullOrUndefined(ganttRecord) && this.editSettings.allowTaskbarEditing) {\n this.connectorLineEditModule.removePredecessor(ganttRecord);\n }\n };\n /**\n * To modify current dependency values of Task by task id.\n *\n * @param {number} id - Defines the ID of data to modify.\n * @param {string} predecessorString - Defines the predecessor string to update.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updatePredecessor = function (id, predecessorString) {\n var ganttRecord = this.getRecordByID(id.toString());\n if (this.editModule && !isNullOrUndefined(ganttRecord) && this.editSettings.allowTaskbarEditing) {\n this.connectorLineEditModule.updatePredecessor(ganttRecord, predecessorString);\n }\n };\n /**\n * Method to open Add dialog.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.openAddDialog = function () {\n if (this.editModule && this.editModule.dialogModule && this.editSettings.allowAdding) {\n this.editModule.dialogModule.openAddDialog();\n }\n };\n /**\n * Method to open Edit dialog.\n *\n * @param {number } taskId - Defines the id of task.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.openEditDialog = function (taskId) {\n if (this.editModule && this.editModule.dialogModule && this.editSettings.allowEditing) {\n this.editModule.dialogModule.openEditDialog(taskId);\n }\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string | number} id .\n * @param {number} index .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.contructExpandCollapseArgs = function (id, index) {\n var chartRow;\n var record;\n var rowIndex;\n if (isNullOrUndefined(index)) {\n record = this.getRecordByID(id.toString());\n chartRow = this.getRowByID(id);\n if (!isNullOrUndefined(chartRow)) {\n rowIndex = getValue('rowIndex', chartRow);\n }\n }\n else if (!isNullOrUndefined(index)) {\n chartRow = this.getRowByIndex(index);\n rowIndex = getValue('rowIndex', chartRow);\n record = this.currentViewData[rowIndex];\n }\n var gridRow = this.treeGrid.getRows()[rowIndex];\n return { data: record, gridRow: gridRow, chartRow: chartRow, cancel: false };\n };\n /**\n * Method to get chart row value by index.\n *\n * @param {number} index - Defines the index of row.\n * @returns {HTMLElement} .\n */\n Gantt.prototype.getRowByIndex = function (index) {\n try {\n var gridRows = this.element.querySelectorAll('.e-chart-row');\n if (!isNullOrUndefined(index)) {\n return gridRows[index];\n }\n else {\n return null;\n }\n }\n catch (e) {\n return null;\n }\n };\n /**\n * Method to get the row element by task id.\n *\n * @param {string | number} id - Defines the id of task.\n * @returns {HTMLElement} .\n */\n Gantt.prototype.getRowByID = function (id) {\n var record = this.getRecordByID(id.toString());\n var index = this.updatedRecords.indexOf(record);\n if (index !== -1) {\n return this.getRowByIndex(index);\n }\n else {\n return null;\n }\n };\n /**\n * Method to get class name for unscheduled tasks\n *\n * @param {ITaskData} ganttProp .\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getUnscheduledTaskClass = function (ganttProp) {\n if (isNullOrUndefined(ganttProp.startDate) && isNullOrUndefined(ganttProp.endDate) &&\n isNullOrUndefined(ganttProp.duration)) {\n return ' ' + cls.traceUnscheduledTask;\n }\n else if (isNullOrUndefined(ganttProp.startDate) || isNullOrUndefined(ganttProp.endDate) ||\n isNullOrUndefined(ganttProp.duration)) {\n return ' ' + cls.traceUnscheduledTask;\n }\n else {\n return '';\n }\n };\n /**\n * Method to get class name for unscheduled tasks\n *\n * @param {ITaskData} ganttProp -Defines the Gantt propertie.\n * @returns {boolean} .\n * @private\n */\n Gantt.prototype.isUnscheduledTask = function (ganttProp) {\n if (isNullOrUndefined(ganttProp.startDate) || isNullOrUndefined(ganttProp.endDate) ||\n isNullOrUndefined(ganttProp.duration)) {\n return true;\n }\n else {\n return false;\n }\n };\n Gantt.prototype.createGanttPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-ganttpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: 'e-content', attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n document.getElementById(this.element.id + 'GanttChart').appendChild(popup);\n };\n /**\n * Method to get predecessor value as string.\n *\n * @param {string} type .\n * @returns {HTMLElement} .\n * @private\n */\n Gantt.prototype.getPredecessorTextValue = function (type) {\n var textValue;\n switch (type) {\n case 'SS':\n textValue = this.localeObj.getConstant('start') + '-' + this.localeObj.getConstant('start');\n break;\n case 'FF':\n textValue = this.localeObj.getConstant('finish') + '-' + this.localeObj.getConstant('finish');\n break;\n case 'SF':\n textValue = this.localeObj.getConstant('start') + '-' + this.localeObj.getConstant('finish');\n break;\n case 'FS':\n textValue = this.localeObj.getConstant('finish') + '-' + this.localeObj.getConstant('start');\n break;\n }\n return textValue;\n };\n /**\n * Method to perform search action in Gantt.\n *\n * @param {string} keyVal - Defines key value to search.\n * @returns {void} .\n */\n Gantt.prototype.search = function (keyVal) {\n if (this.filterModule) {\n this.searchSettings.key = keyVal;\n this.dataBind();\n }\n };\n /**\n * Method to get offset rect value\n *\n * @param {HTMLElement} element .\n * @returns {number} .\n * @hidden\n */\n Gantt.prototype.getOffsetRect = function (element) {\n var box = element.getBoundingClientRect();\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop\n || document.body.scrollTop;\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft ||\n document.body.scrollLeft;\n var clientTop = document.documentElement.clientTop || document.body.clientTop || 0;\n var clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = this.enableRtl ? box.right + scrollLeft - clientLeft : box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left), width: box.width, height: box.height };\n };\n /**\n * Method to expand all the rows of Gantt.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.expandAll = function () {\n this.ganttChartModule.expandCollapseAll('expand');\n };\n /**\n * Method to update data source.\n *\n * @returns {void} .\n * @param {object[]} dataSource - Defines a collection of data.\n * @param {object} args - Defines the projectStartDate and projectEndDate values.\n * @public\n */\n Gantt.prototype.updateDataSource = function (dataSource, args) {\n this.isDynamicData = true;\n if (!isNullOrUndefined(args)) {\n for (var _i = 0, _a = Object.keys(args); _i < _a.length; _i++) { // eslint-disable-line\n var prop = _a[_i];\n switch (prop) {\n case 'projectStartDate':\n this.setProperties({ projectStartDate: args[prop] }, true);\n break;\n case 'projectEndDate':\n this.setProperties({ projectEndDate: args[prop] }, true);\n break;\n }\n }\n }\n this.dataSource = dataSource;\n };\n /**\n * Method to collapse all the rows of Gantt.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.collapseAll = function () {\n this.ganttChartModule.expandCollapseAll('collapse');\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @returns {Column[]} .\n * @public\n */\n Gantt.prototype.getGridColumns = function () {\n return this.treeGrid.getColumns();\n };\n /**\n * Method to column from given column collection based on field value\n *\n * @param {string} field .\n * @param {ColumnModel[]} columns .\n * @returns {ColumnModel} .\n * @private\n */\n Gantt.prototype.getColumnByField = function (field, columns) {\n var column = columns.filter(function (value) {\n return value.field === field;\n });\n return column.length > 0 ? column[0] : null;\n };\n /**\n * Gets the Gantt columns.\n *\n * @returns {ColumnModel[]} .\n * @public\n */\n Gantt.prototype.getGanttColumns = function () {\n return this.ganttColumns;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.showColumn = function (keys, showBy) {\n this.treeGrid.showColumns(keys, showBy);\n this.updateTreeColumns();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.hideColumn = function (keys, hideBy) {\n this.treeGrid.hideColumns(keys, hideBy);\n this.updateTreeColumns();\n };\n /**\n * To set scroll top for chart scroll container.\n *\n * @param {number} scrollTop - Defines scroll top value for scroll container.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.setScrollTop = function (scrollTop) {\n this.ganttChartModule.scrollObject.setScrollTop(scrollTop);\n };\n /**\n * Cancels edited state.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.cancelEdit = function () {\n this.isCancelled = true;\n this.closeGanttActions();\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void} .\n */\n Gantt.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void} .\n */\n Gantt.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void} .\n */\n Gantt.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} records - Defines the collection of row indexes.\n * @returns {void} .\n */\n Gantt.prototype.selectRows = function (records) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(records);\n }\n };\n /**\n * Method to delete record.\n *\n * @param {number | string } taskDetail - Defines the details of data to delete.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.deleteRecord = function (taskDetail) {\n if (this.editModule) {\n this.editModule.deleteRecord(taskDetail);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void} .\n */\n Gantt.prototype.enableItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void} .\n */\n Gantt.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * @param {ITaskAddedEventArgs | IActionBeginEventArgs} args .\n * @returns {ITaskAddedEventArgs | IActionBeginEventArgs} .\n * @hidden\n */\n Gantt.prototype.updateDataArgs = function (args) {\n if (!Array.isArray(args.data)) {\n var customData = [];\n customData.push(args.data);\n setValue('data', customData, args);\n }\n return args;\n };\n /**\n * Method to convert task data to milestone data.\n *\n * @param {string} id - Defines id of record.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.convertToMilestone = function (id) {\n var rowData = this.getRecordByID(id);\n if (!isNullOrUndefined(rowData)) {\n var data = extend({}, {}, rowData.taskData, true);\n var taskfields = this.taskFields;\n if (data[taskfields.startDate]) {\n this.setRecordValue(taskfields.startDate, rowData.ganttProperties.startDate, data, true);\n }\n if (!isNullOrUndefined(taskfields.duration)) {\n data[taskfields.duration] = 0;\n }\n else {\n data[taskfields.startDate] = new Date(rowData.ganttProperties.startDate);\n data[taskfields.endDate] = new Date(rowData.ganttProperties.endDate);\n }\n if (!isNullOrUndefined(taskfields.milestone)) {\n if (data[taskfields.milestone] === false) {\n data[taskfields.milestone] = true;\n }\n }\n if (!isNullOrUndefined(taskfields.progress)) {\n data[taskfields.progress] = 0;\n }\n if (!isNullOrUndefined(taskfields.child) && data[taskfields.child]) {\n data[taskfields.child] = [];\n }\n if (!isNullOrUndefined(taskfields.parentID) && data[taskfields.parentID]) {\n data[taskfields.parentID] = null;\n }\n if (!isNullOrUndefined(taskfields.segments)) {\n data[taskfields.segments] = null;\n }\n if (!isNullOrUndefined(this.contextMenuModule) &&\n this.contextMenuModule.isOpen &&\n this.contextMenuModule.item === 'Milestone') {\n if (!isNullOrUndefined(taskfields.dependency)) {\n data[taskfields.dependency] = null;\n }\n var position = 'Below';\n this.addRecord(data, position);\n }\n else {\n if (!rowData.hasChildRecords && !rowData.ganttProperties.isMilestone) {\n this.updateRecordByID(data);\n }\n }\n }\n };\n /**\n * To change the mode of a record.\n *\n * @param {object} data - Use to change the TaskMode either manual, auto or custom.\n * @returns {void} .\n */\n Gantt.prototype.changeTaskMode = function (data) {\n var tasks = this.taskFields;\n var ganttData = this.getRecordByID(data[tasks.id]);\n var ganttProp = ganttData.ganttProperties;\n this.isOnEdit = true;\n this.setRecordValue('isAutoSchedule', !ganttProp.isAutoSchedule, ganttProp, true);\n if (!isNullOrUndefined(this.taskFields.manual)) {\n this.setRecordValue('taskData.' + tasks.manual, !ganttProp.isAutoSchedule, ganttData);\n this.setRecordValue(tasks.manual, !ganttProp.isAutoSchedule, ganttData);\n }\n this.editModule.updateTaskScheduleModes(ganttData);\n var args = {\n data: ganttData\n };\n this.editModule.initiateUpdateAction(args);\n };\n /**\n * @returns {string[]} .\n * @private\n */\n Gantt.prototype.getTaskIds = function () {\n return this.taskIds;\n };\n /**\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.setTaskIds = function (data) {\n if (this.viewType !== 'ProjectView') {\n var id = data.ganttProperties.taskId;\n id = data.level === 0 ? 'R' + id : 'T' + id;\n this.taskIds.push(id);\n }\n };\n /**\n * To render the react templates\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.renderTemplates = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To reset the react templates\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.resetTemplates = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowParentDependency\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"disableHtmlEncode\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Gantt.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"UpdateOffsetOnTaskbarEdit\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"autoCalculateDateScheduling\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"autoFocusTasks\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"enablePredecessorValidation\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"timezone\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"collapseAllParentTasks\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"highlightWeekends\", void 0);\n __decorate([\n Property(0)\n ], Gantt.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"dataSource\", void 0);\n __decorate([\n Property('day')\n ], Gantt.prototype, \"durationUnit\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"dateFormat\", void 0);\n __decorate([\n Property('auto')\n ], Gantt.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"renderBaseline\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowTaskbarDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowTaskbarOverlap\", void 0);\n __decorate([\n Property('Horizontal')\n ], Gantt.prototype, \"gridLines\", void 0);\n __decorate([\n Complex({}, LabelSettings)\n ], Gantt.prototype, \"labelSettings\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"taskbarTemplate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"parentTaskbarTemplate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"milestoneTemplate\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"baselineColor\", void 0);\n __decorate([\n Property('auto')\n ], Gantt.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"toolbar\", void 0);\n __decorate([\n Property(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'])\n ], Gantt.prototype, \"workWeek\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"includeWeekend\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowUnscheduledTasks\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"showInlineNotes\", void 0);\n __decorate([\n Property(36)\n ], Gantt.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"taskbarHeight\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"projectStartDate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"projectEndDate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"resourceIDMapping\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"resourceNameMapping\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"resources\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"segmentData\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"connectorLineBackground\", void 0);\n __decorate([\n Property(1)\n ], Gantt.prototype, \"connectorLineWidth\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"columns\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"addDialogFields\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"editDialogFields\", void 0);\n __decorate([\n Property(-1)\n ], Gantt.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Property('hour')\n ], Gantt.prototype, \"workUnit\", void 0);\n __decorate([\n Property('FixedUnit')\n ], Gantt.prototype, \"taskType\", void 0);\n __decorate([\n Property('ProjectView')\n ], Gantt.prototype, \"viewType\", void 0);\n __decorate([\n Collection([{ from: 8, to: 12 }, { from: 13, to: 17 }], DayWorkingTime)\n ], Gantt.prototype, \"dayWorkingTime\", void 0);\n __decorate([\n Collection([], Holiday)\n ], Gantt.prototype, \"holidays\", void 0);\n __decorate([\n Collection([], EventMarker)\n ], Gantt.prototype, \"eventMarkers\", void 0);\n __decorate([\n Complex({}, TaskFields)\n ], Gantt.prototype, \"taskFields\", void 0);\n __decorate([\n Complex({}, ResourceFields)\n ], Gantt.prototype, \"resourceFields\", void 0);\n __decorate([\n Complex({}, TimelineSettings)\n ], Gantt.prototype, \"timelineSettings\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"zoomingLevels\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Gantt.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Gantt.prototype, \"editSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Gantt.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Gantt.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"readOnly\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableContextMenu\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableCriticalPath\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"validateManualTasksOnLinking\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableMultiTaskbar\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"showOverAllocation\", void 0);\n __decorate([\n Property('Auto')\n ], Gantt.prototype, \"taskMode\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Gantt.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Gantt.prototype, \"searchSettings\", void 0);\n __decorate([\n Complex({}, SplitterSettings)\n ], Gantt.prototype, \"splitterSettings\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"queryTaskbarInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"taskbarEdited\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"endEdit\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"taskbarEditing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"splitterResizeStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"splitterResizing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"splitterResized\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"beforeTooltipRender\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"onTaskbarClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"onMouseMove\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfQueryTaskbarInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfQueryTimelineCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfColumnHeaderQueryCellInfo\", void 0);\n Gantt = __decorate([\n NotifyPropertyChanges\n ], Gantt);\n return Gantt;\n}(Component));\nexport { Gantt };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS Gantt.\n * It must be contained in a Gantt component(`ejs-gantt`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AddDialogFieldsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-add-dialog-fields';\n }\n }\n});\nexport var AddDialogFieldsPlugin = {\n name: 'e-add-dialog-fields',\n install: function (Vue) {\n Vue.component(AddDialogFieldsPlugin.name, AddDialogFieldsDirective);\n }\n};\n/**\n * `e-add-dialog-fields` directive represent a add dialog fields in VueJS Gantt.\n * It must be contained in a Gantt component(`ejs-gantt`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AddDialogFieldDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-add-dialog-field';\n }\n }\n});\nexport var AddDialogFieldPlugin = {\n name: 'e-add-dialog-field',\n install: function (Vue) {\n Vue.component(AddDialogFieldPlugin.name, AddDialogFieldDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var EditDialogFieldsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-edit-dialog-fields';\n }\n }\n});\nexport var EditDialogFieldsPlugin = {\n name: 'e-edit-dialog-fields',\n install: function (Vue) {\n Vue.component(EditDialogFieldsPlugin.name, EditDialogFieldsDirective);\n }\n};\n/**\n * `e-edit-dialog-fields` directive represent a add dialog fields in VueJS Gantt.\n * It must be contained in a Gantt component(`ejs-gantt`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var EditDialogFieldDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-edit-dialog-field';\n }\n }\n});\nexport var EditDialogFieldPlugin = {\n name: 'e-edit-dialog-field',\n install: function (Vue) {\n Vue.component(EditDialogFieldPlugin.name, EditDialogFieldDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var DayWorkingTimeCollectionDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-day-working-time-collection';\n }\n }\n});\nexport var DayWorkingTimeCollectionPlugin = {\n name: 'e-day-working-time-collection',\n install: function (Vue) {\n Vue.component(DayWorkingTimeCollectionPlugin.name, DayWorkingTimeCollectionDirective);\n }\n};\n/**\n * `e-day-working-time-collection` directive represent a working time ranges in a day.\n * It must be contained in a Gantt component(`ejs-gantt`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var DayWorkingTimeDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-day-working-time';\n }\n }\n});\nexport var DayWorkingTimePlugin = {\n name: 'e-day-working-time',\n install: function (Vue) {\n Vue.component(DayWorkingTimePlugin.name, DayWorkingTimeDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var HolidaysDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-holidays';\n }\n }\n});\nexport var HolidaysPlugin = {\n name: 'e-holidays',\n install: function (Vue) {\n Vue.component(HolidaysPlugin.name, HolidaysDirective);\n }\n};\n/**\n * `e-holidays` directive represent a holidays collection in Gantt.\n * It must be contained in a Gantt component(`ejs-gantt`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var HolidayDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-holidays';\n }\n }\n});\nexport var HolidayPlugin = {\n name: 'e-holidays',\n install: function (Vue) {\n Vue.component(HolidayPlugin.name, HolidayDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var EventMarkersDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-event-markers';\n }\n }\n});\nexport var EventMarkersPlugin = {\n name: 'e-event-markers',\n install: function (Vue) {\n Vue.component(EventMarkersPlugin.name, EventMarkersDirective);\n }\n};\n/**\n * `e-event-markers` directive represent a event marker collection in Gantt\n * It must be contained in a Gantt component(`ejs-gantt`).\n * ```vue\n * \n * \n * \n * \n * \n * ```\n */\nexport var EventMarkerDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-event-marker';\n }\n }\n});\nexport var EventMarkerPlugin = {\n name: 'e-event-marker',\n install: function (Vue) {\n Vue.component(EventMarkerPlugin.name, EventMarkerDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Gantt } from '@syncfusion/ej2-gantt';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AddDialogFieldsDirective, AddDialogFieldDirective, AddDialogFieldsPlugin, AddDialogFieldPlugin } from './adddialogfields.directive';\nimport { EditDialogFieldsDirective, EditDialogFieldDirective, EditDialogFieldsPlugin, EditDialogFieldPlugin } from './editdialogfields.directive';\nimport { DayWorkingTimeCollectionDirective, DayWorkingTimeDirective, DayWorkingTimeCollectionPlugin, DayWorkingTimePlugin } from './dayworkingtime.directive';\nimport { HolidaysDirective, HolidayDirective, HolidaysPlugin, HolidayPlugin } from './holidays.directive';\nimport { EventMarkersDirective, EventMarkerDirective, EventMarkersPlugin, EventMarkerPlugin } from './eventmarkers.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'UpdateOffsetOnTaskbarEdit', 'addDialogFields', 'allowExcelExport', 'allowFiltering', 'allowKeyboard', 'allowParentDependency', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTaskbarDragAndDrop', 'allowTaskbarOverlap', 'allowUnscheduledTasks', 'autoCalculateDateScheduling', 'autoFocusTasks', 'baselineColor', 'collapseAllParentTasks', 'columnMenuItems', 'columns', 'connectorLineBackground', 'connectorLineWidth', 'contextMenuItems', 'dataSource', 'dateFormat', 'dayWorkingTime', 'disableHtmlEncode', 'durationUnit', 'editDialogFields', 'editSettings', 'enableContextMenu', 'enableCriticalPath', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableMultiTaskbar', 'enablePersistence', 'enablePredecessorValidation', 'enableRtl', 'enableVirtualMaskRow', 'enableVirtualization', 'eventMarkers', 'filterSettings', 'gridLines', 'height', 'highlightWeekends', 'holidays', 'includeWeekend', 'labelSettings', 'loadingIndicator', 'locale', 'milestoneTemplate', 'parentTaskbarTemplate', 'projectEndDate', 'projectStartDate', 'query', 'readOnly', 'renderBaseline', 'resourceFields', 'resourceIDMapping', 'resourceNameMapping', 'resources', 'rowHeight', 'searchSettings', 'segmentData', 'selectedRowIndex', 'selectionSettings', 'showColumnMenu', 'showInlineNotes', 'showOverAllocation', 'sortSettings', 'splitterSettings', 'taskFields', 'taskMode', 'taskType', 'taskbarHeight', 'taskbarTemplate', 'timelineSettings', 'timezone', 'toolbar', 'tooltipSettings', 'treeColumnIndex', 'validateManualTasksOnLinking', 'viewType', 'width', 'workUnit', 'workWeek', 'zoomingLevels', 'actionBegin', 'actionComplete', 'actionFailure', 'beforeExcelExport', 'beforePdfExport', 'beforeTooltipRender', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSelected', 'cellSelecting', 'collapsed', 'collapsing', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataStateChange', 'destroyed', 'endEdit', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'expanded', 'expanding', 'headerCellInfo', 'load', 'onMouseMove', 'onTaskbarClick', 'pdfColumnHeaderQueryCellInfo', 'pdfExportComplete', 'pdfQueryCellInfo', 'pdfQueryTaskbarInfo', 'pdfQueryTimelineCellInfo', 'queryCellInfo', 'queryTaskbarInfo', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'splitterResizeStart', 'splitterResized', 'splitterResizing', 'taskbarEdited', 'taskbarEditing', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-gantt` represents the VueJS Gantt Component.\n * ```vue\n * \n * ```\n */\nexport var GanttComponent = vueDefineComponent({\n name: 'GanttComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instance: new Gantt({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-columns\": \"e-column\", \"e-add-dialog-fields\": \"e-add-dialog-field\", \"e-edit-dialog-fields\": \"e-edit-dialog-field\", \"e-day-working-time-collection\": \"e-day-working-time\", \"e-holidays\": \"e-holidays\", \"e-event-markers\": \"e-event-marker\" },\n tagNameMapper: { \"e-add-dialog-fields\": \"e-addDialogFields\", \"e-edit-dialog-fields\": \"e-editDialogFields\", \"e-day-working-time-collection\": \"e-dayWorkingTime\", \"e-event-markers\": \"e-eventMarkers\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addPredecessor: function (id, predecessorString) {\n return this.ej2Instances.addPredecessor(id, predecessorString);\n },\n addRecord: function (data, rowPosition, rowIndex) {\n return this.ej2Instances.addRecord(data, rowPosition, rowIndex);\n },\n cancelEdit: function () {\n return this.ej2Instances.cancelEdit();\n },\n changeTaskMode: function (data) {\n return this.ej2Instances.changeTaskMode(data);\n },\n clearFiltering: function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n },\n clearSelection: function () {\n return this.ej2Instances.clearSelection();\n },\n clearSorting: function () {\n return this.ej2Instances.clearSorting();\n },\n collapseAll: function () {\n return this.ej2Instances.collapseAll();\n },\n collapseByID: function (id) {\n return this.ej2Instances.collapseByID(id);\n },\n collapseByIndex: function (index) {\n return this.ej2Instances.collapseByIndex(index);\n },\n convertToMilestone: function (id) {\n return this.ej2Instances.convertToMilestone(id);\n },\n csvExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n deleteRecord: function (taskDetail) {\n return this.ej2Instances.deleteRecord(taskDetail);\n },\n enableItems: function (items, isEnable) {\n return this.ej2Instances.enableItems(items, isEnable);\n },\n excelExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n expandAll: function () {\n return this.ej2Instances.expandAll();\n },\n expandByID: function (id) {\n return this.ej2Instances.expandByID(id);\n },\n expandByIndex: function (index) {\n return this.ej2Instances.expandByIndex(index);\n },\n filterByColumn: function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent);\n },\n fitToProject: function () {\n return this.ej2Instances.fitToProject();\n },\n getCriticalTasks: function () {\n return this.ej2Instances.getCriticalTasks();\n },\n getDurationString: function (duration, durationUnit) {\n return this.ej2Instances.getDurationString(duration, durationUnit);\n },\n getExpandedRecords: function (records) {\n return this.ej2Instances.getExpandedRecords(records);\n },\n getFormatedDate: function (date, format) {\n return this.ej2Instances.getFormatedDate(date, format);\n },\n getGanttColumns: function () {\n return this.ej2Instances.getGanttColumns();\n },\n getGridColumns: function () {\n return this.ej2Instances.getGridColumns();\n },\n getRecordByID: function (id) {\n return this.ej2Instances.getRecordByID(id);\n },\n getRowByID: function (id) {\n return this.ej2Instances.getRowByID(id);\n },\n getRowByIndex: function (index) {\n return this.ej2Instances.getRowByIndex(index);\n },\n getTaskByUniqueID: function (id) {\n return this.ej2Instances.getTaskByUniqueID(id);\n },\n getTaskbarHeight: function () {\n return this.ej2Instances.getTaskbarHeight();\n },\n getWorkString: function (work, workUnit) {\n return this.ej2Instances.getWorkString(work, workUnit);\n },\n hideColumn: function (keys, hideBy) {\n return this.ej2Instances.hideColumn(keys, hideBy);\n },\n hideMaskRow: function () {\n return this.ej2Instances.hideMaskRow();\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n indent: function () {\n return this.ej2Instances.indent();\n },\n keyActionHandler: function (e) {\n return this.ej2Instances.keyActionHandler(e);\n },\n mergeTask: function (taskId, segmentIndexes) {\n return this.ej2Instances.mergeTask(taskId, segmentIndexes);\n },\n nextTimeSpan: function (mode) {\n return this.ej2Instances.nextTimeSpan(mode);\n },\n openAddDialog: function () {\n return this.ej2Instances.openAddDialog();\n },\n openEditDialog: function (taskId) {\n return this.ej2Instances.openEditDialog(taskId);\n },\n outdent: function () {\n return this.ej2Instances.outdent();\n },\n pdfExport: function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n },\n previousTimeSpan: function (mode) {\n return this.ej2Instances.previousTimeSpan(mode);\n },\n removeCriticalPathStyles: function () {\n return this.ej2Instances.removeCriticalPathStyles();\n },\n removePredecessor: function (id) {\n return this.ej2Instances.removePredecessor(id);\n },\n removeSortColumn: function (columnName) {\n return this.ej2Instances.removeSortColumn(columnName);\n },\n renderTemplates: function () {\n return this.ej2Instances.renderTemplates();\n },\n reorderColumns: function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n },\n reorderRows: function (fromIndexes, toIndex, position) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex, position);\n },\n resetTemplates: function () {\n return this.ej2Instances.resetTemplates();\n },\n scrollToDate: function (date) {\n return this.ej2Instances.scrollToDate(date);\n },\n scrollToTask: function (taskId) {\n return this.ej2Instances.scrollToTask(taskId);\n },\n search: function (keyVal) {\n return this.ej2Instances.search(keyVal);\n },\n selectCell: function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n },\n selectCells: function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n },\n selectRow: function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n },\n selectRows: function (records) {\n return this.ej2Instances.selectRows(records);\n },\n setScrollTop: function (scrollTop) {\n return this.ej2Instances.setScrollTop(scrollTop);\n },\n setSplitterPosition: function (value, type) {\n return this.ej2Instances.setSplitterPosition(value, type);\n },\n showColumn: function (keys, showBy) {\n return this.ej2Instances.showColumn(keys, showBy);\n },\n showCriticalPath: function (isCritical) {\n return this.ej2Instances.showCriticalPath(isCritical);\n },\n showMaskRow: function () {\n return this.ej2Instances.showMaskRow();\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n sortColumn: function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n },\n splitTask: function (taskId, splitDate) {\n return this.ej2Instances.splitTask(taskId, splitDate);\n },\n updateChartScrollOffset: function (left, top) {\n return this.ej2Instances.updateChartScrollOffset(left, top);\n },\n updateDataSource: function (dataSource, args) {\n return this.ej2Instances.updateDataSource(dataSource, args);\n },\n updatePredecessor: function (id, predecessorString) {\n return this.ej2Instances.updatePredecessor(id, predecessorString);\n },\n updateProjectDates: function (startDate, endDate, isTimelineRoundOff, isFrom) {\n return this.ej2Instances.updateProjectDates(startDate, endDate, isTimelineRoundOff, isFrom);\n },\n updateRecordByID: function (data) {\n return this.ej2Instances.updateRecordByID(data);\n },\n updateRecordByIndex: function (index, data) {\n return this.ej2Instances.updateRecordByIndex(index, data);\n },\n updateTaskId: function (currentId, newId) {\n return this.ej2Instances.updateTaskId(currentId, newId);\n },\n zoomIn: function () {\n return this.ej2Instances.zoomIn();\n },\n zoomOut: function () {\n return this.ej2Instances.zoomOut();\n },\n }\n});\nexport var GanttPlugin = {\n name: 'ejs-gantt',\n install: function (Vue) {\n Vue.component(GanttPlugin.name, GanttComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(AddDialogFieldPlugin.name, AddDialogFieldDirective);\n Vue.component(AddDialogFieldsPlugin.name, AddDialogFieldsDirective);\n Vue.component(EditDialogFieldPlugin.name, EditDialogFieldDirective);\n Vue.component(EditDialogFieldsPlugin.name, EditDialogFieldsDirective);\n Vue.component(DayWorkingTimePlugin.name, DayWorkingTimeDirective);\n Vue.component(DayWorkingTimeCollectionPlugin.name, DayWorkingTimeCollectionDirective);\n Vue.component(HolidayPlugin.name, HolidayDirective);\n Vue.component(HolidaysPlugin.name, HolidaysDirective);\n Vue.component(EventMarkerPlugin.name, EventMarkerDirective);\n Vue.component(EventMarkersPlugin.name, EventMarkersDirective);\n }\n};\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","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :\n typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :\n (global = global || self, factory(global.vueCompositionApi = {}, global.Vue));\n}(this, (function (exports, Vue) { 'use strict';\n\n Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue;\n\n var toString = function (x) { return Object.prototype.toString.call(x); };\r\n function isNative(Ctor) {\r\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\r\n }\r\n var hasSymbol = typeof Symbol !== 'undefined' &&\r\n isNative(Symbol) &&\r\n typeof Reflect !== 'undefined' &&\r\n isNative(Reflect.ownKeys);\r\n var noopFn = function (_) { return _; };\r\n var sharedPropertyDefinition = {\r\n enumerable: true,\r\n configurable: true,\r\n get: noopFn,\r\n set: noopFn,\r\n };\r\n function proxy(target, key, _a) {\r\n var get = _a.get, set = _a.set;\r\n sharedPropertyDefinition.get = get || noopFn;\r\n sharedPropertyDefinition.set = set || noopFn;\r\n Object.defineProperty(target, key, sharedPropertyDefinition);\r\n }\r\n function 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 function hasOwn(obj, key) {\r\n return Object.hasOwnProperty.call(obj, key);\r\n }\r\n function assert(condition, msg) {\r\n if (!condition)\r\n throw new Error(\"[vue-composition-api] \" + msg);\r\n }\r\n function isArray(x) {\r\n return Array.isArray(x);\r\n }\r\n function isPlainObject(x) {\r\n return toString(x) === '[object Object]';\r\n }\r\n function isFunction(x) {\r\n return typeof x === 'function';\r\n }\r\n function warn(msg, vm) {\r\n Vue.util.warn(msg, vm);\r\n }\r\n function logError(err, vm, info) {\r\n {\r\n warn(\"Error in \" + info + \": \\\"\" + err.toString() + \"\\\"\", vm);\r\n }\r\n if (typeof window !== 'undefined' && typeof console !== 'undefined') {\r\n console.error(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n 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\n 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\n 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 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 }\n\n var currentVue = null;\r\n var currentVM = null;\r\n function getCurrentVue() {\r\n {\r\n assert(currentVue, \"must call Vue.use(plugin) before using any function.\");\r\n }\r\n return currentVue;\r\n }\r\n function setCurrentVue(vue) {\r\n currentVue = vue;\r\n }\r\n function getCurrentVM() {\r\n return currentVM;\r\n }\r\n function setCurrentVM(vm) {\r\n currentVM = vm;\r\n }\n\n function currentVMInFn(hook) {\r\n var vm = getCurrentVM();\r\n if ( !vm) {\r\n warn(hook + \" 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 }\r\n return vm;\r\n }\r\n function defineComponentInstance(Ctor, options) {\r\n if (options === void 0) { options = {}; }\r\n var silent = Ctor.config.silent;\r\n Ctor.config.silent = true;\r\n var vm = new Ctor(options);\r\n Ctor.config.silent = silent;\r\n return vm;\r\n }\r\n function isComponentInstance(obj) {\r\n return currentVue && obj instanceof currentVue;\r\n }\r\n function createSlotProxy(vm, slotName) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!vm.$scopedSlots[slotName]) {\r\n return warn(\"slots.\" + slotName + \"() got called outside of the \\\"render()\\\" scope\", vm);\r\n }\r\n return vm.$scopedSlots[slotName].apply(vm, args);\r\n };\r\n }\r\n function resolveSlots(slots, normalSlots) {\r\n var res;\r\n if (!slots) {\r\n res = {};\r\n }\r\n else if (slots._normalized) {\r\n // fast path 1: child component re-render only, parent did not change\r\n return slots._normalized;\r\n }\r\n else {\r\n res = {};\r\n for (var key in slots) {\r\n if (slots[key] && key[0] !== '$') {\r\n res[key] = true;\r\n }\r\n }\r\n }\r\n // expose normal slots on scopedSlots\r\n for (var key in normalSlots) {\r\n if (!(key in res)) {\r\n res[key] = true;\r\n }\r\n }\r\n return res;\r\n }\n\n function createSymbol(name) {\r\n return hasSymbol ? Symbol.for(name) : name;\r\n }\r\n var WatcherPreFlushQueueKey = createSymbol('vfa.key.preFlushQueue');\r\n var WatcherPostFlushQueueKey = createSymbol('vfa.key.postFlushQueue');\r\n var AccessControlIdentifierKey = createSymbol('vfa.key.accessControlIdentifier');\r\n var ReactiveIdentifierKey = createSymbol('vfa.key.reactiveIdentifier');\r\n var RawIdentifierKey = createSymbol('vfa.key.rawIdentifierKey');\r\n // must be a string, symbol key is ignored in reactive\r\n var RefKey = 'vfa.key.refKey';\n\n var RefImpl = /** @class */ (function () {\r\n function RefImpl(_a) {\r\n var get = _a.get, set = _a.set;\r\n proxy(this, 'value', {\r\n get: get,\r\n set: set,\r\n });\r\n }\r\n return RefImpl;\r\n }());\r\n function createRef(options) {\r\n // seal the ref, this could prevent ref from being observed\r\n // It's safe to seal the ref, since we really shouldn't extend it.\r\n // related issues: #79\r\n return Object.seal(new RefImpl(options));\r\n }\r\n function ref(raw) {\r\n var _a;\r\n if (isRef(raw)) {\r\n return raw;\r\n }\r\n var value = reactive((_a = {}, _a[RefKey] = raw, _a));\r\n return createRef({\r\n get: function () { return value[RefKey]; },\r\n set: function (v) { return (value[RefKey] = v); },\r\n });\r\n }\r\n function isRef(value) {\r\n return value instanceof RefImpl;\r\n }\r\n function unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n }\r\n function toRefs(obj) {\r\n if (!isPlainObject(obj))\r\n return obj;\r\n if ( !isReactive(obj)) {\r\n warn(\"toRefs() expects a reactive object but received a plain one.\");\r\n }\r\n var ret = {};\r\n for (var key in obj) {\r\n ret[key] = toRef(obj, key);\r\n }\r\n return ret;\r\n }\r\n function toRef(object, key) {\r\n var v = object[key];\r\n if (isRef(v))\r\n return v;\r\n return createRef({\r\n get: function () { return object[key]; },\r\n set: function (v) { return (object[key] = v); },\r\n });\r\n }\r\n function shallowRef(raw) {\r\n var _a;\r\n if (isRef(raw)) {\r\n return raw;\r\n }\r\n var value = shallowReactive((_a = {}, _a[RefKey] = raw, _a));\r\n return createRef({\r\n get: function () { return value[RefKey]; },\r\n set: function (v) { return (value[RefKey] = v); },\r\n });\r\n }\r\n function triggerRef(value) {\r\n if (!isRef(value))\r\n return;\r\n value.value = value.value;\r\n }\n\n var AccessControlIdentifier = {};\r\n var ReactiveIdentifier = {};\r\n var RawIdentifier = {};\r\n function isRaw(obj) {\r\n return (hasOwn(obj, RawIdentifierKey) && obj[RawIdentifierKey] === RawIdentifier);\r\n }\r\n function isReactive(obj) {\r\n return (Object.isExtensible(obj) &&\r\n hasOwn(obj, ReactiveIdentifierKey) &&\r\n obj[ReactiveIdentifierKey] === ReactiveIdentifier);\r\n }\r\n /**\r\n * Proxing property access of target.\r\n * We can do unwrapping and other things here.\r\n */\r\n function setupAccessControl(target) {\r\n if (!isPlainObject(target) ||\r\n isRaw(target) ||\r\n Array.isArray(target) ||\r\n isRef(target) ||\r\n isComponentInstance(target)) {\r\n return;\r\n }\r\n if (hasOwn(target, AccessControlIdentifierKey) &&\r\n target[AccessControlIdentifierKey] === AccessControlIdentifier) {\r\n return;\r\n }\r\n if (Object.isExtensible(target)) {\r\n def(target, AccessControlIdentifierKey, AccessControlIdentifier);\r\n }\r\n var keys = Object.keys(target);\r\n for (var i = 0; i < keys.length; i++) {\r\n defineAccessControl(target, keys[i]);\r\n }\r\n }\r\n /**\r\n * Auto unwrapping when access property\r\n */\r\n function defineAccessControl(target, key, val) {\r\n if (key === '__ob__')\r\n return;\r\n var getter;\r\n var setter;\r\n var property = Object.getOwnPropertyDescriptor(target, key);\r\n if (property) {\r\n if (property.configurable === false) {\r\n return;\r\n }\r\n getter = property.get;\r\n setter = property.set;\r\n if ((!getter || setter) /* not only have getter */ &&\r\n arguments.length === 2) {\r\n val = target[key];\r\n }\r\n }\r\n setupAccessControl(val);\r\n Object.defineProperty(target, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function getterHandler() {\r\n var value = getter ? getter.call(target) : val;\r\n // if the key is equal to RefKey, skip the unwrap logic\r\n if (key !== RefKey && isRef(value)) {\r\n return value.value;\r\n }\r\n else {\r\n return value;\r\n }\r\n },\r\n set: function setterHandler(newVal) {\r\n if (getter && !setter)\r\n return;\r\n var value = getter ? getter.call(target) : val;\r\n // If the key is equal to RefKey, skip the unwrap logic\r\n // If and only if \"value\" is ref and \"newVal\" is not a ref,\r\n // the assignment should be proxied to \"value\" ref.\r\n if (key !== RefKey && isRef(value) && !isRef(newVal)) {\r\n value.value = newVal;\r\n }\r\n else if (setter) {\r\n setter.call(target, newVal);\r\n }\r\n else {\r\n val = newVal;\r\n }\r\n setupAccessControl(newVal);\r\n },\r\n });\r\n }\r\n function observe(obj) {\r\n var Vue = getCurrentVue();\r\n var observed;\r\n if (Vue.observable) {\r\n observed = Vue.observable(obj);\r\n }\r\n else {\r\n var vm = defineComponentInstance(Vue, {\r\n data: {\r\n $$state: obj,\r\n },\r\n });\r\n observed = vm._data.$$state;\r\n }\r\n return observed;\r\n }\r\n function shallowReactive(obj) {\r\n var e_1, _a;\r\n if ( !obj) {\r\n warn('\"shallowReactive()\" is called without provide an \"object\".');\r\n // @ts-ignore\r\n return;\r\n }\r\n if (!isPlainObject(obj) ||\r\n isReactive(obj) ||\r\n isRaw(obj) ||\r\n !Object.isExtensible(obj)) {\r\n return obj;\r\n }\r\n var observed = observe({});\r\n markReactive(observed, true);\r\n setupAccessControl(observed);\r\n var ob = observed.__ob__;\r\n var _loop_1 = function (key) {\r\n var val = obj[key];\r\n var getter;\r\n var setter;\r\n var property = Object.getOwnPropertyDescriptor(obj, key);\r\n if (property) {\r\n if (property.configurable === false) {\r\n return \"continue\";\r\n }\r\n getter = property.get;\r\n setter = property.set;\r\n if ((!getter || setter) /* not only have getter */ &&\r\n arguments_1.length === 2) {\r\n val = obj[key];\r\n }\r\n }\r\n // setupAccessControl(val);\r\n Object.defineProperty(observed, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function getterHandler() {\r\n var value = getter ? getter.call(obj) : val;\r\n ob.dep.depend();\r\n return value;\r\n },\r\n set: function setterHandler(newVal) {\r\n if (getter && !setter)\r\n return;\r\n if (setter) {\r\n setter.call(obj, newVal);\r\n }\r\n else {\r\n val = newVal;\r\n }\r\n ob.dep.notify();\r\n },\r\n });\r\n };\r\n var arguments_1 = arguments;\r\n try {\r\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var key = _c.value;\r\n _loop_1(key);\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 return observed;\r\n }\r\n function markReactive(target, shallow) {\r\n if (shallow === void 0) { shallow = false; }\r\n if (!isPlainObject(target) ||\r\n isRaw(target) ||\r\n Array.isArray(target) ||\r\n isRef(target) ||\r\n isComponentInstance(target)) {\r\n return;\r\n }\r\n if (hasOwn(target, ReactiveIdentifierKey) &&\r\n target[ReactiveIdentifierKey] === ReactiveIdentifier) {\r\n return;\r\n }\r\n if (Object.isExtensible(target)) {\r\n def(target, ReactiveIdentifierKey, ReactiveIdentifier);\r\n }\r\n if (shallow) {\r\n return;\r\n }\r\n var keys = Object.keys(target);\r\n for (var i = 0; i < keys.length; i++) {\r\n markReactive(target[keys[i]]);\r\n }\r\n }\r\n /**\r\n * Make obj reactivity\r\n */\r\n function reactive(obj) {\r\n if ( !obj) {\r\n warn('\"reactive()\" is called without provide an \"object\".');\r\n // @ts-ignore\r\n return;\r\n }\r\n if (!isPlainObject(obj) ||\r\n isReactive(obj) ||\r\n isRaw(obj) ||\r\n !Object.isExtensible(obj)) {\r\n return obj;\r\n }\r\n var observed = observe(obj);\r\n // def(obj, ReactiveIdentifierKey, ReactiveIdentifier);\r\n markReactive(obj);\r\n setupAccessControl(observed);\r\n return observed;\r\n }\r\n /**\r\n * Make sure obj can't be a reactive\r\n */\r\n function markRaw(obj) {\r\n if (!isPlainObject(obj) || !Object.isExtensible(obj)) {\r\n return obj;\r\n }\r\n // set the vue observable flag at obj\r\n def(obj, '__ob__', observe({}).__ob__);\r\n // mark as Raw\r\n def(obj, RawIdentifierKey, RawIdentifier);\r\n return obj;\r\n }\r\n function toRaw(observed) {\r\n if (isRaw(observe) || !Object.isExtensible(observed)) {\r\n return observed;\r\n }\r\n return observed.__ob__.value || observed;\r\n }\n\n function isUndef(v) {\r\n return v === undefined || v === null;\r\n }\r\n function 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\n function isValidArrayIndex(val) {\r\n var n = parseFloat(String(val));\r\n return n >= 0 && Math.floor(n) === n && isFinite(val);\r\n }\r\n /**\r\n * Set a property on an object. Adds the new property, triggers change\r\n * notification and intercept it's subsequent access if the property doesn't\r\n * already exist.\r\n */\r\n function set(target, key, val) {\r\n var Vue = getCurrentVue();\r\n var _a = Vue.util, warn = _a.warn, defineReactive = _a.defineReactive;\r\n if ( (isUndef(target) || isPrimitive(target))) {\r\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \" + target);\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 \r\n warn('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 // IMPORTANT: define access control before trigger watcher\r\n defineAccessControl(target, key, val);\r\n markReactive(ob.value[key]);\r\n ob.dep.notify();\r\n return val;\r\n }\n\n /**\r\n * Helper that recursively merges two data objects together.\r\n */\r\n function mergeData(from, to) {\r\n if (!from)\r\n return to;\r\n if (!to)\r\n return from;\r\n var key;\r\n var toVal;\r\n var fromVal;\r\n var keys = hasSymbol ? Reflect.ownKeys(from) : 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 to[key] = fromVal;\r\n }\r\n else if (toVal !== fromVal &&\r\n isPlainObject(toVal) &&\r\n !isRef(toVal) &&\r\n isPlainObject(fromVal) &&\r\n !isRef(fromVal)) {\r\n mergeData(fromVal, toVal);\r\n }\r\n }\r\n return to;\r\n }\r\n function install(Vue, _install) {\r\n if (currentVue && currentVue === Vue) {\r\n {\r\n assert(false, 'already installed. Vue.use(plugin) should be called only once');\r\n }\r\n return;\r\n }\r\n Vue.config.optionMergeStrategies.setup = function (parent, child) {\r\n return function mergedSetupFn(props, context) {\r\n return mergeData(typeof parent === 'function' ? parent(props, context) || {} : undefined, typeof child === 'function' ? child(props, context) || {} : undefined);\r\n };\r\n };\r\n setCurrentVue(Vue);\r\n _install(Vue);\r\n }\n\n function set$1(vm, key, value) {\r\n var state = (vm.__secret_vfa_state__ = vm.__secret_vfa_state__ || {});\r\n state[key] = value;\r\n }\r\n function get(vm, key) {\r\n return (vm.__secret_vfa_state__ || {})[key];\r\n }\r\n var vmStateManager = {\r\n set: set$1,\r\n get: get,\r\n };\n\n function unwrapRefProxy(value, map) {\r\n var e_1, _a;\r\n if (map === void 0) { map = new WeakMap(); }\r\n if (map.has(value)) {\r\n return map.get(value);\r\n }\r\n if (isFunction(value) ||\r\n isArray(value) ||\r\n isReactive(value) ||\r\n !isPlainObject(value) ||\r\n !Object.isExtensible(value) ||\r\n isRef(value) ||\r\n isRaw(value)) {\r\n return value;\r\n }\r\n var obj = {};\r\n map.set(value, obj);\r\n // copy symbols over\r\n Object.getOwnPropertySymbols(value).forEach(function (s) { return (obj[s] = value[s]); });\r\n var _loop_1 = function (k) {\r\n var r = value[k];\r\n // don't process on falsy or raw\r\n if (!r || isRaw(r)) {\r\n obj[k] = r;\r\n }\r\n // if is a ref, create a proxy to retrieve the value,\r\n else if (isRef(r)) {\r\n var set = function (v) { return (r.value = v); };\r\n var get = function () { return r.value; };\r\n proxy(obj, k, { get: get, set: set });\r\n }\r\n else {\r\n obj[k] = unwrapRefProxy(r, map);\r\n }\r\n };\r\n try {\r\n for (var _b = __values(Object.keys(value)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var k = _c.value;\r\n _loop_1(k);\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 return obj;\r\n }\n\n function asVmProperty(vm, propName, propValue) {\r\n var props = vm.$options.props;\r\n if (!(propName in vm) && !(props && hasOwn(props, propName))) {\r\n proxy(vm, propName, {\r\n get: function () { return propValue.value; },\r\n set: function (val) {\r\n propValue.value = val;\r\n },\r\n });\r\n {\r\n // expose binding to Vue Devtool as a data property\r\n // delay this until state has been resolved to prevent repeated works\r\n vm.$nextTick(function () {\r\n proxy(vm._data, propName, {\r\n get: function () { return propValue.value; },\r\n set: function (val) {\r\n propValue.value = val;\r\n },\r\n });\r\n });\r\n }\r\n }\r\n else {\r\n if (props && hasOwn(props, propName)) {\r\n warn(\"The setup binding property \\\"\" + propName + \"\\\" is already declared as a prop.\", vm);\r\n }\r\n else {\r\n warn(\"The setup binding property \\\"\" + propName + \"\\\" is already declared.\", vm);\r\n }\r\n }\r\n }\r\n function updateTemplateRef(vm) {\r\n var rawBindings = vmStateManager.get(vm, 'rawBindings') || {};\r\n if (!rawBindings || !Object.keys(rawBindings).length)\r\n return;\r\n var refs = vm.$refs;\r\n var oldRefKeys = vmStateManager.get(vm, 'refs') || [];\r\n for (var index = 0; index < oldRefKeys.length; index++) {\r\n var key = oldRefKeys[index];\r\n var setupValue = rawBindings[key];\r\n if (!refs[key] && setupValue && isRef(setupValue)) {\r\n setupValue.value = null;\r\n }\r\n }\r\n var newKeys = Object.keys(refs);\r\n var validNewKeys = [];\r\n for (var index = 0; index < newKeys.length; index++) {\r\n var key = newKeys[index];\r\n var setupValue = rawBindings[key];\r\n if (refs[key] && setupValue && isRef(setupValue)) {\r\n setupValue.value = refs[key];\r\n validNewKeys.push(key);\r\n }\r\n }\r\n vmStateManager.set(vm, 'refs', validNewKeys);\r\n }\r\n function resolveScopedSlots(vm, slotsProxy) {\r\n var parentVode = vm.$options._parentVnode;\r\n if (!parentVode)\r\n return;\r\n var prevSlots = vmStateManager.get(vm, 'slots') || [];\r\n var curSlots = resolveSlots(parentVode.data.scopedSlots, vm.$slots);\r\n // remove staled slots\r\n for (var index = 0; index < prevSlots.length; index++) {\r\n var key = prevSlots[index];\r\n if (!curSlots[key]) {\r\n delete slotsProxy[key];\r\n }\r\n }\r\n // proxy fresh slots\r\n var slotNames = Object.keys(curSlots);\r\n for (var index = 0; index < slotNames.length; index++) {\r\n var key = slotNames[index];\r\n if (!slotsProxy[key]) {\r\n slotsProxy[key] = createSlotProxy(vm, key);\r\n }\r\n }\r\n vmStateManager.set(vm, 'slots', slotNames);\r\n }\r\n function activateCurrentInstance(vm, fn, onError) {\r\n var preVm = getCurrentVM();\r\n setCurrentVM(vm);\r\n try {\r\n return fn(vm);\r\n }\r\n catch (err) {\r\n if (onError) {\r\n onError(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n finally {\r\n setCurrentVM(preVm);\r\n }\r\n }\r\n function mixin(Vue) {\r\n Vue.mixin({\r\n beforeCreate: functionApiInit,\r\n mounted: function () {\r\n updateTemplateRef(this);\r\n },\r\n updated: function () {\r\n updateTemplateRef(this);\r\n },\r\n });\r\n /**\r\n * Vuex init hook, injected into each instances init hooks list.\r\n */\r\n function functionApiInit() {\r\n var vm = this;\r\n var $options = vm.$options;\r\n var setup = $options.setup, render = $options.render;\r\n if (render) {\r\n // keep currentInstance accessible for createElement\r\n $options.render = function () {\r\n var _this = this;\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 activateCurrentInstance(vm, function () { return render.apply(_this, args); });\r\n };\r\n }\r\n if (!setup) {\r\n return;\r\n }\r\n if (typeof setup !== 'function') {\r\n {\r\n warn('The \"setup\" option should be a function that returns a object in component definitions.', vm);\r\n }\r\n return;\r\n }\r\n var data = $options.data;\r\n // wrapper the data option, so we can invoke setup before data get resolved\r\n $options.data = function wrappedData() {\r\n initSetup(vm, vm.$props);\r\n return typeof data === 'function'\r\n ? data.call(vm, vm)\r\n : data || {};\r\n };\r\n }\r\n function initSetup(vm, props) {\r\n if (props === void 0) { props = {}; }\r\n var setup = vm.$options.setup;\r\n var ctx = createSetupContext(vm);\r\n // mark props as reactive\r\n markReactive(props);\r\n // resolve scopedSlots and slots to functions\r\n resolveScopedSlots(vm, ctx.slots);\r\n var binding;\r\n activateCurrentInstance(vm, function () {\r\n binding = setup(props, ctx);\r\n });\r\n if (!binding)\r\n return;\r\n if (isFunction(binding)) {\r\n // keep typescript happy with the binding type.\r\n var bindingFunc_1 = binding;\r\n // keep currentInstance accessible for createElement\r\n vm.$options.render = function () {\r\n resolveScopedSlots(vm, ctx.slots);\r\n return activateCurrentInstance(vm, function () { return bindingFunc_1(); });\r\n };\r\n return;\r\n }\r\n if (isPlainObject(binding)) {\r\n var bindingObj_1 = binding;\r\n vmStateManager.set(vm, 'rawBindings', binding);\r\n Object.keys(binding).forEach(function (name) {\r\n var bindingValue = bindingObj_1[name];\r\n // only make primitive value reactive\r\n if (!isRef(bindingValue)) {\r\n if (isReactive(bindingValue)) {\r\n bindingValue = ref(bindingValue);\r\n }\r\n else {\r\n // bind function to the vm, this will make `this` = vm\r\n if (isFunction(bindingValue)) {\r\n bindingValue = bindingValue.bind(vm);\r\n }\r\n // unwrap all ref properties\r\n var unwrapped = unwrapRefProxy(bindingValue);\r\n // mark the object as reactive\r\n markReactive(unwrapped);\r\n // a non-reactive should not don't get reactivity\r\n bindingValue = ref(markRaw(unwrapped));\r\n }\r\n }\r\n asVmProperty(vm, name, bindingValue);\r\n });\r\n return;\r\n }\r\n {\r\n assert(false, \"\\\"setup\\\" must return a \\\"Object\\\" or a \\\"Function\\\", got \\\"\" + Object.prototype.toString\r\n .call(binding)\r\n .slice(8, -1) + \"\\\"\");\r\n }\r\n }\r\n function createSetupContext(vm) {\r\n var ctx = {\r\n slots: {},\r\n };\r\n var props = [\r\n 'root',\r\n 'parent',\r\n 'refs',\r\n 'attrs',\r\n 'listeners',\r\n 'isServer',\r\n 'ssrContext',\r\n ];\r\n var methodReturnVoid = ['emit'];\r\n props.forEach(function (key) {\r\n var _a;\r\n var targetKey;\r\n var srcKey;\r\n if (Array.isArray(key)) {\r\n _a = __read(key, 2), targetKey = _a[0], srcKey = _a[1];\r\n }\r\n else {\r\n targetKey = srcKey = key;\r\n }\r\n srcKey = \"$\" + srcKey;\r\n proxy(ctx, targetKey, {\r\n get: function () { return vm[srcKey]; },\r\n set: function () {\r\n warn(\"Cannot assign to '\" + targetKey + \"' because it is a read-only property\", vm);\r\n },\r\n });\r\n });\r\n methodReturnVoid.forEach(function (key) {\r\n var srcKey = \"$\" + key;\r\n proxy(ctx, key, {\r\n get: function () {\r\n return function () {\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 fn = vm[srcKey];\r\n fn.apply(vm, args);\r\n };\r\n },\r\n });\r\n });\r\n return ctx;\r\n }\r\n }\n\n var nextTick = function nextTick() {\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 currentVue === null || currentVue === void 0 ? void 0 : currentVue.nextTick.bind(this, args);\r\n };\n\n var fallbackCreateElement;\r\n var createElement = function createElement() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!currentVM) {\r\n warn('`createElement()` has been called outside of render function.');\r\n if (!fallbackCreateElement) {\r\n fallbackCreateElement = defineComponentInstance(getCurrentVue())\r\n .$createElement;\r\n }\r\n return fallbackCreateElement.apply(fallbackCreateElement, args);\r\n }\r\n return currentVM.$createElement.apply(currentVM, args);\r\n };\n\n // implementation, close to no-op\r\n function defineComponent(options) {\r\n return options;\r\n }\r\n var createComponent = (function (options) {\r\n {\r\n Vue.util.warn('`createComponent` has been renamed to `defineComponent`.');\r\n }\r\n return defineComponent(options);\r\n });\n\n var genName = function (name) { return \"on\" + (name[0].toUpperCase() + name.slice(1)); };\r\n function createLifeCycle(lifeCyclehook) {\r\n return function (callback) {\r\n var vm = currentVMInFn(genName(lifeCyclehook));\r\n if (vm) {\r\n injectHookOption(getCurrentVue(), vm, lifeCyclehook, callback);\r\n }\r\n };\r\n }\r\n function injectHookOption(Vue, vm, hook, val) {\r\n var options = vm.$options;\r\n var mergeFn = Vue.config.optionMergeStrategies[hook];\r\n options[hook] = mergeFn(options[hook], wrapHookCall(vm, val));\r\n }\r\n function wrapHookCall(vm, fn) {\r\n return function () {\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 preVm = getCurrentVM();\r\n setCurrentVM(vm);\r\n try {\r\n return fn.apply(void 0, __spread(args));\r\n }\r\n finally {\r\n setCurrentVM(preVm);\r\n }\r\n };\r\n }\r\n // export const onCreated = createLifeCycle('created');\r\n var onBeforeMount = createLifeCycle('beforeMount');\r\n var onMounted = createLifeCycle('mounted');\r\n var onBeforeUpdate = createLifeCycle('beforeUpdate');\r\n var onUpdated = createLifeCycle('updated');\r\n var onBeforeUnmount = createLifeCycle('beforeDestroy');\r\n var onUnmounted = createLifeCycle('destroyed');\r\n var onErrorCaptured = createLifeCycle('errorCaptured');\r\n var onActivated = createLifeCycle('activated');\r\n var onDeactivated = createLifeCycle('deactivated');\r\n var onServerPrefetch = createLifeCycle('serverPrefetch');\n\n var fallbackVM;\r\n function flushPreQueue() {\r\n flushQueue(this, WatcherPreFlushQueueKey);\r\n }\r\n function flushPostQueue() {\r\n flushQueue(this, WatcherPostFlushQueueKey);\r\n }\r\n function hasWatchEnv(vm) {\r\n return vm[WatcherPreFlushQueueKey] !== undefined;\r\n }\r\n function installWatchEnv(vm) {\r\n vm[WatcherPreFlushQueueKey] = [];\r\n vm[WatcherPostFlushQueueKey] = [];\r\n vm.$on('hook:beforeUpdate', flushPreQueue);\r\n vm.$on('hook:updated', flushPostQueue);\r\n }\r\n function getWatcherOption(options) {\r\n return __assign({\r\n immediate: false,\r\n deep: false,\r\n flush: 'post',\r\n }, options);\r\n }\r\n function getWatchEffectOption(options) {\r\n return __assign({\r\n immediate: true,\r\n deep: false,\r\n flush: 'post',\r\n }, options);\r\n }\r\n function getWatcherVM() {\r\n var vm = getCurrentVM();\r\n if (!vm) {\r\n if (!fallbackVM) {\r\n fallbackVM = defineComponentInstance(getCurrentVue());\r\n }\r\n vm = fallbackVM;\r\n }\r\n else if (!hasWatchEnv(vm)) {\r\n installWatchEnv(vm);\r\n }\r\n return vm;\r\n }\r\n function flushQueue(vm, key) {\r\n var queue = vm[key];\r\n for (var index = 0; index < queue.length; index++) {\r\n queue[index]();\r\n }\r\n queue.length = 0;\r\n }\r\n function queueFlushJob(vm, fn, mode) {\r\n // flush all when beforeUpdate and updated are not fired\r\n var fallbackFlush = function () {\r\n vm.$nextTick(function () {\r\n if (vm[WatcherPreFlushQueueKey].length) {\r\n flushQueue(vm, WatcherPreFlushQueueKey);\r\n }\r\n if (vm[WatcherPostFlushQueueKey].length) {\r\n flushQueue(vm, WatcherPostFlushQueueKey);\r\n }\r\n });\r\n };\r\n switch (mode) {\r\n case 'pre':\r\n fallbackFlush();\r\n vm[WatcherPreFlushQueueKey].push(fn);\r\n break;\r\n case 'post':\r\n fallbackFlush();\r\n vm[WatcherPostFlushQueueKey].push(fn);\r\n break;\r\n default:\r\n assert(false, \"flush must be one of [\\\"post\\\", \\\"pre\\\", \\\"sync\\\"], but got \" + mode);\r\n break;\r\n }\r\n }\r\n function createVueWatcher(vm, getter, callback, options) {\r\n var index = vm._watchers.length;\r\n // @ts-ignore: use undocumented options\r\n vm.$watch(getter, callback, {\r\n immediate: options.immediateInvokeCallback,\r\n deep: options.deep,\r\n lazy: options.noRun,\r\n sync: options.sync,\r\n before: options.before,\r\n });\r\n return vm._watchers[index];\r\n }\r\n // We have to monkeypatch the teardown function so Vue will run\r\n // runCleanup() when it tears down the watcher on unmmount.\r\n function patchWatcherTeardown(watcher, runCleanup) {\r\n var _teardown = watcher.teardown;\r\n watcher.teardown = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n _teardown.apply(watcher, args);\r\n runCleanup();\r\n };\r\n }\r\n function createWatcher(vm, source, cb, options) {\r\n var flushMode = options.flush;\r\n var isSync = flushMode === 'sync';\r\n var cleanup;\r\n var registerCleanup = function (fn) {\r\n cleanup = function () {\r\n try {\r\n fn();\r\n }\r\n catch (error) {\r\n logError(error, vm, 'onCleanup()');\r\n }\r\n };\r\n };\r\n // cleanup before running getter again\r\n var runCleanup = function () {\r\n if (cleanup) {\r\n cleanup();\r\n cleanup = null;\r\n }\r\n };\r\n var createScheduler = function (fn) {\r\n if (isSync ||\r\n /* without a current active instance, ignore pre|post mode */ vm ===\r\n fallbackVM) {\r\n return fn;\r\n }\r\n return (function () {\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 queueFlushJob(vm, function () {\r\n fn.apply(void 0, __spread(args));\r\n }, flushMode);\r\n });\r\n };\r\n // effect watch\r\n if (cb === null) {\r\n var running_1 = false;\r\n var getter_1 = function () {\r\n // preventing the watch callback being call in the same execution\r\n if (running_1) {\r\n return;\r\n }\r\n try {\r\n running_1 = true;\r\n source(registerCleanup);\r\n }\r\n finally {\r\n running_1 = false;\r\n }\r\n };\r\n var watcher_1 = createVueWatcher(vm, getter_1, noopFn, {\r\n deep: options.deep || false,\r\n sync: isSync,\r\n before: runCleanup,\r\n });\r\n patchWatcherTeardown(watcher_1, runCleanup);\r\n // enable the watcher update\r\n watcher_1.lazy = false;\r\n var originGet = watcher_1.get.bind(watcher_1);\r\n // always run watchEffect\r\n watcher_1.get = createScheduler(originGet);\r\n return function () {\r\n watcher_1.teardown();\r\n };\r\n }\r\n var deep = options.deep;\r\n var getter;\r\n if (Array.isArray(source)) {\r\n getter = function () { return source.map(function (s) { return (isRef(s) ? s.value : s()); }); };\r\n }\r\n else if (isRef(source)) {\r\n getter = function () { return source.value; };\r\n }\r\n else if (isReactive(source)) {\r\n getter = function () { return source; };\r\n deep = true;\r\n }\r\n else if (isFunction(source)) {\r\n getter = source;\r\n }\r\n else {\r\n getter = noopFn;\r\n warn(\"Invalid watch source: \" + JSON.stringify(source) + \".\\n A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.\", vm);\r\n }\r\n var applyCb = function (n, o) {\r\n // cleanup before running cb again\r\n runCleanup();\r\n cb(n, o, registerCleanup);\r\n };\r\n var callback = createScheduler(applyCb);\r\n if (options.immediate) {\r\n var originalCallbck_1 = callback;\r\n // `shiftCallback` is used to handle the first sync effect run.\r\n // The subsequent callbacks will redirect to `callback`.\r\n var shiftCallback_1 = function (n, o) {\r\n shiftCallback_1 = originalCallbck_1;\r\n applyCb(n, o);\r\n };\r\n callback = function (n, o) {\r\n shiftCallback_1(n, o);\r\n };\r\n }\r\n // @ts-ignore: use undocumented option \"sync\"\r\n var stop = vm.$watch(getter, callback, {\r\n immediate: options.immediate,\r\n deep: deep,\r\n sync: isSync,\r\n });\r\n // Once again, we have to hack the watcher for proper teardown\r\n var watcher = vm._watchers[vm._watchers.length - 1];\r\n patchWatcherTeardown(watcher, runCleanup);\r\n return function () {\r\n stop();\r\n };\r\n }\r\n function watchEffect(effect, options) {\r\n var opts = getWatchEffectOption(options);\r\n var vm = getWatcherVM();\r\n return createWatcher(vm, effect, null, opts);\r\n }\r\n // implementation\r\n function watch(source, cb, options) {\r\n var callback = null;\r\n if (typeof cb === 'function') {\r\n // source watch\r\n callback = cb;\r\n }\r\n else {\r\n // effect watch\r\n {\r\n warn(\"`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 options = cb;\r\n callback = null;\r\n }\r\n var opts = getWatcherOption(options);\r\n var vm = getWatcherVM();\r\n return createWatcher(vm, source, callback, opts);\r\n }\n\n // implement\r\n function computed(options) {\r\n var vm = getCurrentVM();\r\n var get, set;\r\n if (typeof options === 'function') {\r\n get = options;\r\n }\r\n else {\r\n get = options.get;\r\n set = options.set;\r\n }\r\n var computedHost = defineComponentInstance(getCurrentVue(), {\r\n computed: {\r\n $$state: {\r\n get: get,\r\n set: set,\r\n },\r\n },\r\n });\r\n vm && vm.$on('hook:destroyed', function () { return computedHost.$destroy(); });\r\n return createRef({\r\n get: function () { return computedHost.$$state; },\r\n set: function (v) {\r\n if ( !set) {\r\n warn('Computed property was assigned to but it has no setter.', vm);\r\n return;\r\n }\r\n computedHost.$$state = v;\r\n },\r\n });\r\n }\n\n var NOT_FOUND = {};\r\n function resolveInject(provideKey, vm) {\r\n var source = vm;\r\n while (source) {\r\n // @ts-ignore\r\n if (source._provided && hasOwn(source._provided, provideKey)) {\r\n //@ts-ignore\r\n return source._provided[provideKey];\r\n }\r\n source = source.$parent;\r\n }\r\n return NOT_FOUND;\r\n }\r\n function provide(key, value) {\r\n var vm = currentVMInFn('provide');\r\n if (!vm)\r\n return;\r\n if (!vm._provided) {\r\n var provideCache_1 = {};\r\n Object.defineProperty(vm, '_provided', {\r\n get: function () { return provideCache_1; },\r\n set: function (v) { return Object.assign(provideCache_1, v); },\r\n });\r\n }\r\n vm._provided[key] = value;\r\n }\r\n function inject(key, defaultValue) {\r\n if (!key) {\r\n return defaultValue;\r\n }\r\n var vm = getCurrentVM();\r\n if (vm) {\r\n var val = resolveInject(key, vm);\r\n if (val !== NOT_FOUND) {\r\n return val;\r\n }\r\n else {\r\n if (defaultValue === undefined && \"development\" !== 'production') {\r\n warn(\"Injection \\\"\" + String(key) + \"\\\" not found\", vm);\r\n }\r\n return defaultValue;\r\n }\r\n }\r\n else {\r\n warn(\"inject() can only be used inside setup() or functional components.\");\r\n }\r\n }\n\n var VueCompositionAPI = {\r\n install: function (Vue) { return install(Vue, mixin); },\r\n };\r\n // auto install when using CDN\r\n if (typeof window !== 'undefined' && window.Vue) {\r\n window.Vue.use(VueCompositionAPI);\r\n }\n\n exports.computed = computed;\n exports.createComponent = createComponent;\n exports.createElement = createElement;\n exports.default = VueCompositionAPI;\n exports.defineComponent = defineComponent;\n exports.getCurrentInstance = getCurrentVM;\n exports.inject = inject;\n exports.isReactive = isReactive;\n exports.isRef = isRef;\n exports.markRaw = markRaw;\n exports.nextTick = nextTick;\n exports.onActivated = onActivated;\n exports.onBeforeMount = onBeforeMount;\n exports.onBeforeUnmount = onBeforeUnmount;\n exports.onBeforeUpdate = onBeforeUpdate;\n exports.onDeactivated = onDeactivated;\n exports.onErrorCaptured = onErrorCaptured;\n exports.onMounted = onMounted;\n exports.onServerPrefetch = onServerPrefetch;\n exports.onUnmounted = onUnmounted;\n exports.onUpdated = onUpdated;\n exports.provide = provide;\n exports.reactive = reactive;\n exports.ref = ref;\n exports.set = set;\n exports.shallowReactive = shallowReactive;\n exports.shallowRef = shallowRef;\n exports.toRaw = toRaw;\n exports.toRef = toRef;\n exports.toRefs = toRefs;\n exports.triggerRef = triggerRef;\n exports.unref = unref;\n exports.watch = watch;\n exports.watchEffect = watchEffect;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\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\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 || '';\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 // Listen for ready state\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\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? 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 // 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(timeoutErrorMessage, config, '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 var cookies = require('./../helpers/cookies');\n\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 (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\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 === undefined) {\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\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');\n\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 // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.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(utils.merge(config || {}, {\n method: method,\n url: url\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(utils.merge(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) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\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(\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(\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(\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() {\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', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\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 (!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');\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 /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\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\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\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)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\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\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(/%40/gi, '@').\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 \"://\" 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\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 bind = require('./helpers/bind');\n\n/*global toString:true*/\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 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.replace(/^\\s*/, '').replace(/\\s*$/, '');\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 (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\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 * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\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\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 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 deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if(\"SELECT\"===t.nodeName)t.focus(),e=t.value;else if(\"INPUT\"===t.nodeName||\"TEXTAREA\"===t.nodeName){var n=t.hasAttribute(\"readonly\");n||t.setAttribute(\"readonly\",\"\"),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute(\"readonly\"),e=t.value}else{t.hasAttribute(\"contenteditable\")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n // @ts-ignore\n codePoint = decode_json_1.default[codePoint];\n }\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n Object.keys(inverse).forEach(function (k) {\n return k.length === 1\n ? // Add value to single array\n single.push(\"\\\\\" + k)\n : // Add value to multiple array\n multiple.push(k);\n });\n //TODO add ranges\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /[^\\0-\\x7F]/g;\nvar reAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\nfunction singleCharReplacer(c) {\n return \"&#x\" + c\n .charCodeAt(0)\n .toString(16)\n .toUpperCase() + \";\";\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\nfunction astralReplacer(c, _) {\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n var high = c.charCodeAt(0);\n var low = c.charCodeAt(1);\n var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;\n return \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reAstralSymbols, astralReplacer)\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reAstralSymbols, astralReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nexports.encodeXML = encode_2.encodeXML;\nexports.encodeHTML = encode_2.encodeHTML;\nexports.escape = encode_2.escape;\n// Legacy aliases\nexports.encodeHTML4 = encode_2.encodeHTML;\nexports.encodeHTML5 = encode_2.encodeHTML;\nvar decode_2 = require(\"./decode\");\nexports.decodeXML = decode_2.decodeXML;\nexports.decodeHTML = decode_2.decodeHTML;\nexports.decodeHTMLStrict = decode_2.decodeHTMLStrict;\n// Legacy aliases\nexports.decodeHTML4 = decode_2.decodeHTML;\nexports.decodeHTML5 = decode_2.decodeHTML;\nexports.decodeHTML4Strict = decode_2.decodeHTMLStrict;\nexports.decodeHTML5Strict = decode_2.decodeHTMLStrict;\nexports.decodeXMLStrict = decode_2.decodeXML;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\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\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\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\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\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\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\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\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"';\n }\n return '
';\n }\n\n return videoID === '' ? '' :\n '
';\n }\n\n return tokenizeReturn;\n}\n\nconst defaults = {\n url: videoUrl,\n youtube: { width: 640, height: 390 },\n vimeo: { width: 500, height: 281 },\n vine: { width: 600, height: 600, embed: 'simple' },\n prezi: { width: 550, height: 400 },\n osf: { width: '100%', height: '100%' },\n};\n\nmodule.exports = function videoPlugin(md, options) {\n var theOptions = options;\n var theMd = md;\n if (theOptions) {\n Object.keys(defaults).forEach(function checkForKeys(key) {\n if (typeof theOptions[key] === 'undefined') {\n theOptions[key] = defaults[key];\n }\n });\n } else {\n theOptions = defaults;\n }\n theMd.renderer.rules.video = tokenizeVideo(theMd, theOptions);\n theMd.inline.ruler.before('emphasis', 'video', videoEmbed(theMd, theOptions));\n};\n","'use strict';\n\n\nmodule.exports = require('./lib/');\n","// HTML5 entities map: { name -> utf16string }\n//\n'use strict';\n\n/*eslint quotes:0*/\nmodule.exports = require('entities/lib/maps/entities.json');\n","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\n'use strict';\n\n\nmodule.exports = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n];\n","// Regexps to match html elements\n\n'use strict';\n\nvar attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar single_quoted = \"'[^']*'\";\nvar double_quoted = '\"[^\"]*\"';\n\nvar attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n\nvar attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n\nvar open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n\nvar close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '|';\nvar processing = '<[?][\\\\s\\\\S]*?[?]>';\nvar declaration = ']*>';\nvar cdata = '';\n\nvar HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')');\nvar HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\nmodule.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n","// Utilities\n//\n'use strict';\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n return _hasOwnProperty.call(object, key);\n}\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false; }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false; }\n if (c === 0x0B) { return false; }\n if (c >= 0x0E && c <= 0x1F) { return false; }\n if (c >= 0x7F && c <= 0x9F) { return false; }\n // out of range\n if (c > 0x10FFFF) { return false; }\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n\n return String.fromCharCode(surrogate1, surrogate2);\n }\n return String.fromCharCode(c);\n}\n\n\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ?\n parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n}\n\n/*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) { return str; }\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str; }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped; }\n return replaceEntityPattern(match, entity);\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n return false;\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) { return true; }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n return false;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');\n\n// Currently without astral characters support.\nfunction isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n}\n\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference(str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ');\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß');\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nexports.lib = {};\nexports.lib.mdurl = require('mdurl');\nexports.lib.ucmicro = require('uc.micro');\n\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.unescapeAll = unescapeAll;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint;\n// exports.replaceEntities = replaceEntities;\nexports.escapeHtml = escapeHtml;\nexports.arrayReplaceAt = arrayReplaceAt;\nexports.isSpace = isSpace;\nexports.isWhiteSpace = isWhiteSpace;\nexports.isMdAsciiPunct = isMdAsciiPunct;\nexports.isPunctChar = isPunctChar;\nexports.escapeRE = escapeRE;\nexports.normalizeReference = normalizeReference;\n","// Just a shortcut for bulk export\n'use strict';\n\n\nexports.parseLinkLabel = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle = require('./parse_link_title');\n","// Parse link destination\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkDestination(str, start, max) {\n var code, level,\n pos = start,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++;\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === 0x0A /* \\n */) { return result; }\n if (code === 0x3C /* < */) { return result; }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n // no closing '>'\n return result;\n }\n\n // this should be ... } else { ... branch\n\n level = 0;\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) { break; }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break; }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break; }\n pos += 2;\n continue;\n }\n\n if (code === 0x28 /* ( */) {\n level++;\n if (level > 32) { return result; }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break; }\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) { return result; }\n if (level !== 0) { return result; }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.pos = pos;\n result.ok = true;\n return result;\n};\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n var level, found, marker, prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n if (marker === 0x5D /* ] */) {\n level--;\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n }\n\n // restore old state\n state.pos = oldPos;\n\n return labelEnd;\n};\n","// Parse link title\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkTitle(str, start, max) {\n var code,\n marker,\n lines = 0,\n pos = start,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) { return result; }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; }\n\n pos++;\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29; }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x28 /* ( */ && marker === 0x29 /* ) */) {\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++;\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n};\n","// Main parser class\n\n'use strict';\n\n\nvar utils = require('./common/utils');\nvar helpers = require('./helpers');\nvar Renderer = require('./renderer');\nvar ParserCore = require('./parser_core');\nvar ParserBlock = require('./parser_block');\nvar ParserInline = require('./parser_inline');\nvar LinkifyIt = require('linkify-it');\nvar mdurl = require('mdurl');\nvar punycode = require('punycode');\n\n\nvar config = {\n default: require('./presets/default'),\n zero: require('./presets/zero'),\n commonmark: require('./presets/commonmark')\n};\n\n////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n\n return BAD_PROTO_RE.test(str) ? (GOOD_DATA_RE.test(str) ? true : false) : true;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = [ 'http:', 'https:', 'mailto:' ];\n\nfunction normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%');\n}\n\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with `):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline();\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock();\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore();\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n this.renderer = new Renderer();\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n this.linkify = new LinkifyIt();\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink;\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink;\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText;\n\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n this.utils = utils;\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = utils.assign({}, helpers);\n\n\n this.options = {};\n this.configure(presetName);\n\n if (options) { this.set(options); }\n}\n\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n};\n\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n var self = this, presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name'); }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty'); }\n\n if (presets.options) { self.set(presets.options); }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.enable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.disable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parse(src, env), this.options, env);\n};\n\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n\n state.inlineMode = true;\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\n\nmodule.exports = MarkdownIt;\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n [ 'table', require('./rules_block/table'), [ 'paragraph', 'reference' ] ],\n [ 'code', require('./rules_block/code') ],\n [ 'fence', require('./rules_block/fence'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'list', require('./rules_block/list'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'reference', require('./rules_block/reference') ],\n [ 'html_block', require('./rules_block/html_block'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'lheading', require('./rules_block/lheading') ],\n [ 'paragraph', require('./rules_block/paragraph') ]\n];\n\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() });\n }\n}\n\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok, i, prevLine,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n if (line >= endLine) { break; }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break; }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n prevLine = state.line;\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n if (ok) {\n if (prevLine >= state.line) {\n throw new Error(\"block rule didn't increment state.line\");\n }\n break;\n }\n }\n\n // this can only happen if user disables paragraph rule\n if (!ok) throw new Error('none of the block rules matched');\n\n // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines;\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n};\n\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) { return; }\n\n state = new this.State(src, md, env, outTokens);\n\n this.tokenize(state, state.line, state.lineMax);\n};\n\n\nParserBlock.prototype.State = require('./rules_block/state_block');\n\n\nmodule.exports = ParserBlock;\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n [ 'normalize', require('./rules_core/normalize') ],\n [ 'block', require('./rules_core/block') ],\n [ 'inline', require('./rules_core/inline') ],\n [ 'linkify', require('./rules_core/linkify') ],\n [ 'replacements', require('./rules_core/replacements') ],\n [ 'smartquotes', require('./rules_core/smartquotes') ],\n // `text_join` finds `text_special` tokens (for escape sequences)\n // and joins them with the rest of the text\n [ 'text_join', require('./rules_core/text_join') ]\n];\n\n\n/**\n * new Core()\n **/\nfunction Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n var i, l, rules;\n\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\n\n\nmodule.exports = Core;\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\nvar _rules = [\n [ 'text', require('./rules_inline/text') ],\n [ 'linkify', require('./rules_inline/linkify') ],\n [ 'newline', require('./rules_inline/newline') ],\n [ 'escape', require('./rules_inline/escape') ],\n [ 'backticks', require('./rules_inline/backticks') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').tokenize ],\n [ 'emphasis', require('./rules_inline/emphasis').tokenize ],\n [ 'link', require('./rules_inline/link') ],\n [ 'image', require('./rules_inline/image') ],\n [ 'autolink', require('./rules_inline/autolink') ],\n [ 'html_inline', require('./rules_inline/html_inline') ],\n [ 'entity', require('./rules_inline/entity') ]\n];\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nvar _rules2 = [\n [ 'balance_pairs', require('./rules_inline/balance_pairs') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').postProcess ],\n [ 'emphasis', require('./rules_inline/emphasis').postProcess ],\n // rules for pairs separate '**' into its own text tokens, which may be left unused,\n // rule below merges unused segments back with the rest of the text\n [ 'fragments_join', require('./rules_inline/fragments_join') ]\n];\n\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline() {\n var i;\n\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n}\n\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n var ok, i, pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) {\n if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\"); }\n break;\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) { state.pos++; }\n cache[pos] = state.pos;\n};\n\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n var ok, i, prevPos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n prevPos = state.pos;\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n if (ok) {\n if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\"); }\n break;\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break; }\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n\n this.tokenize(state);\n\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n};\n\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\n\n\nmodule.exports = ParserInline;\n","// Commonmark default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: true, // Enable HTML tags in source\n xhtmlOut: true, // Use '/' to close single tags (
)\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with ' +\n escapeHtml(token.content) +\n '';\n};\n\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n';\n};\n\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n langAttrs = '',\n highlighted, i, arr, tmpAttrs, tmpToken;\n\n if (info) {\n arr = info.split(/(\\s+)/g);\n langName = arr[0];\n langAttrs = arr.slice(2).join('');\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf(''\n + highlighted\n + '\\n';\n }\n\n\n return '

'\n        + highlighted\n        + '
\\n';\n};\n\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env);\n\n return slf.renderToken(tokens, idx, options);\n};\n\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n';\n};\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n';\n};\n\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content);\n};\n\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\n\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer() {\n\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n}\n\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) { return ''; }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n};\n\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx];\n\n // Tight list paragraphs\n if (token.hidden) {\n return '';\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n\n return result;\n};\n\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n};\n\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n } else if (tokens[i].type === 'softbreak') {\n result += '\\n';\n }\n }\n\n return result;\n};\n\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n var i, len, type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n};\n\nmodule.exports = Renderer;\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n'use strict';\n\n\n/**\n * new Ruler()\n **/\nfunction Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = [];\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n return -1;\n};\n\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n var self = this;\n var chains = [ '' ];\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return; }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n};\n\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name); }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName); }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName); }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and enable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false; });\n\n this.enable(list, ignoreInvalid);\n};\n\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and disable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || [];\n};\n\nmodule.exports = Ruler;\n","// Block quotes\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n isOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false; }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true; }\n\n oldBMarks = [];\n oldBSCount = [];\n oldSCount = [];\n oldTShift = [];\n\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n isOutdented = state.sCount[nextLine] < state.blkIndent;\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n initial = state.sCount[nextLine] + 1;\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n offset = initial;\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break; }\n\n // Case 3: another tag found.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [ startLine, 0 ];\n\n state.md.block.tokenize(state, startLine, nextLine);\n\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n state.blkIndent = oldIndent;\n\n return true;\n};\n","// Code block (4 spaces padded)\n\n'use strict';\n\n\nmodule.exports = function code(state, startLine, endLine/*, silent*/) {\n var nextLine, last, token;\n\n if (state.sCount[startLine] - state.blkIndent < 4) { return false; }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n break;\n }\n\n state.line = last;\n\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n';\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","// fences (``` lang, ~~~ lang)\n\n'use strict';\n\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n var marker, len, params, nextLine, mem, token, markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (pos + 3 > max) { return false; }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false;\n }\n\n // scan marker length\n mem = pos;\n pos = state.skipChars(pos, marker);\n\n len = pos - mem;\n\n if (len < 3) { return false; }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (marker === 0x60 /* ` */) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false;\n }\n }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true; }\n\n // search end of block\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker);\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue; }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos);\n\n if (pos < max) { continue; }\n\n haveEndMarker = true;\n // found!\n break;\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine];\n\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","// heading (#, ##, ...)\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch, level, tmp, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n // count heading level\n level = 1;\n ch = state.src.charCodeAt(++pos);\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || (pos < max && !isSpace(ch))) { return false; }\n\n if (silent) { return true; }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n\n return true;\n};\n","// Horizontal rule\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker, cnt, ch, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n marker = state.src.charCodeAt(pos++);\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false;\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n cnt = 1;\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n if (ch !== marker && !isSpace(ch)) { return false; }\n if (ch === marker) { cnt++; }\n }\n\n if (cnt < 3) { return false; }\n\n if (silent) { return true; }\n\n state.line = startLine + 1;\n\n token = state.push('hr', 'hr', 0);\n token.map = [ startLine, state.line ];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n\n return true;\n};\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n [ /^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true ],\n [ /^/, true ],\n [ /^<\\?/, /\\?>/, true ],\n [ /^/, true ],\n [ /^/, true ],\n [ new RegExp('^|$))', 'i'), /^$/, true ],\n [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i, nextLine, token, lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (!state.md.options.html) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n }\n\n if (i === HTML_SEQUENCES.length) { return false; }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++; }\n break;\n }\n }\n }\n\n state.line = nextLine;\n\n token = state.push('html_block', '', 0);\n token.map = [ startLine, nextLine ];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n return true;\n};\n","// lheading (---, ===)\n\n'use strict';\n\n\nmodule.exports = function lheading(state, startLine, endLine/*, silent*/) {\n var content, terminate, i, l, token, pos, max, level, marker,\n nextLine = startLine + 1, oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2);\n break;\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line - 1 ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n\n state.parentType = oldParentType;\n\n return true;\n};\n","// Lists\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n\n marker = state.src.charCodeAt(pos++);\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine];\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1; }\n\n continue;\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break;\n }\n\n return -1;\n }\n\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n}\n\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n offset,\n oldListIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n nextLine = startLine,\n isTerminatingParagraph = false,\n tight = true;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; }\n\n // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n if (state.listIndent >= 0 &&\n state.sCount[nextLine] - state.listIndent >= 4 &&\n state.sCount[nextLine] < state.blkIndent) {\n return false;\n }\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n }\n\n // Detect list type and position after marker\n if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[nextLine] + state.tShift[nextLine];\n markerValue = Number(state.src.slice(start, posAfterMarker - 1));\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false;\n\n } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n isOrdered = false;\n\n } else {\n return false;\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;\n }\n\n // For validation mode we can terminate immediately\n if (silent) { return true; }\n\n // We should terminate list on style change. Remember first one to compare.\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n // Start list\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1);\n if (markerValue !== 1) {\n token.attrs = [ [ 'start', markerValue ] ];\n }\n\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [ nextLine, 0 ];\n token.markup = String.fromCharCode(markerCharCode);\n\n //\n // Iterate list items\n //\n\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n\n oldParentType = state.parentType;\n state.parentType = 'list';\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n indent = initial + indentAfterMarker;\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [ nextLine, 0 ];\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1);\n }\n\n // change current state, then restore it after parser subcall\n oldTight = state.tight;\n oldTShift = state.tShift[nextLine];\n oldSCount = state.sCount[nextLine];\n\n // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n oldListIndent = state.listIndent;\n state.listIndent = state.blkIndent;\n state.blkIndent = indent;\n\n state.tight = true;\n state.tShift[nextLine] = contentStart - state.bMarks[nextLine];\n state.sCount[nextLine] = offset;\n\n if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, nextLine, endLine, true);\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - nextLine) > 1 && state.isEmpty(state.line - 1);\n\n state.blkIndent = state.listIndent;\n state.listIndent = oldListIndent;\n state.tShift[nextLine] = oldTShift;\n state.sCount[nextLine] = oldSCount;\n state.tight = oldTight;\n\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n\n nextLine = state.line;\n itemLines[1] = nextLine;\n\n if (nextLine >= endLine) { break; }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break; }\n\n // fail if terminating block found\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n start = state.bMarks[nextLine] + state.tShift[nextLine];\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n }\n\n // Finalize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n token.markup = String.fromCharCode(markerCharCode);\n\n listLines[1] = nextLine;\n state.line = nextLine;\n\n state.parentType = oldParentType;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","// Paragraph\n\n'use strict';\n\n\nmodule.exports = function paragraph(state, startLine, endLine) {\n var content, terminate, i, l, token, oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph';\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine;\n\n token = state.push('paragraph_open', 'p', 1);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('paragraph_close', 'p', -1);\n\n state.parentType = oldParentType;\n\n return true;\n};\n","'use strict';\n\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false; }\n\n // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D /* ] */ &&\n state.src.charCodeAt(pos - 1) !== 0x5C/* \\ */) {\n if (pos + 1 === max) { return false; }\n if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false; }\n break;\n }\n }\n\n endLine = state.lineMax;\n\n // jump line-by-line until empty one or EOF\n terminatorRules = state.md.block.ruler.getRules('reference');\n\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x5B /* [ */) {\n return false;\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A /* \\n */) {\n lines++;\n } else if (ch === 0x5C /* \\ */) {\n pos++;\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false; }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n if (!res.ok) { return false; }\n\n href = state.md.normalizeLink(res.str);\n if (!state.md.validateLink(href)) { return false; }\n\n pos = res.pos;\n lines += res.lines;\n\n // save cursor state, we could require to rollback later\n destEndPos = pos;\n destEndLineNo = lines;\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n start = pos;\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /*istanbul ignore if*/\n if (silent) { return true; }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title: title, href: href };\n }\n\n state.parentType = oldParentType;\n\n state.line = startLine + lines + 1;\n return true;\n};\n","// Parser state class\n\n'use strict';\n\nvar Token = require('../token');\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n\n this.src = src;\n\n // link to parser instance\n this.md = md;\n\n this.env = env;\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n\n this.bMarks = []; // line begin offsets for fast jumps\n this.eMarks = []; // line end offsets for fast jumps\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n this.sCount = []; // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = [];\n\n // block parser variables\n this.blkIndent = 0; // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n this.line = 0; // line index in src\n this.lineMax = 0; // lines count\n this.tight = false; // loose/tight mode for lists\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n this.listIndent = -1; // indent of the current list block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root';\n\n this.level = 0;\n\n // renderer\n this.result = '';\n\n // Create caches\n // Generate markers.\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++; }\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n\n if (nesting < 0) this.level--; // closing tag\n token.level = this.level;\n if (nesting > 0) this.level++; // opening tag\n\n this.tokens.push(token);\n return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n }\n return pos;\n};\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }\n }\n return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break; }\n }\n return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n }\n return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i, lineIndent, ch, first, last, queue, lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n};\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token;\n\n\nmodule.exports = StateBlock;\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n\n return state.src.slice(pos, max);\n}\n\nfunction escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n isEscaped = false,\n lastPos = 0,\n current = '';\n\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x7c/* | */) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos));\n current = '';\n lastPos = pos + 1;\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1);\n lastPos = pos;\n }\n }\n\n isEscaped = (ch === 0x5c/* \\ */);\n pos++;\n\n ch = str.charCodeAt(pos);\n }\n\n result.push(current + str.substring(lastPos));\n\n return result;\n}\n\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, l, nextLine, columns, columnCount, token,\n aligns, t, tableLines, tbodyLines, oldParentType, terminate,\n terminatorRules, firstCh, secondCh;\n\n // should have at least two lines\n if (startLine + 2 > endLine) { return false; }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) { return false; }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n firstCh = state.src.charCodeAt(pos++);\n if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false; }\n\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n secondCh = state.src.charCodeAt(pos++);\n if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n return false;\n }\n\n // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false; }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false; }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n\n columns = lineText.split('|');\n aligns = [];\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false; }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n if (lineText.indexOf('|') === -1) { return false; }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n columnCount = columns.length;\n if (columnCount === 0 || columnCount !== aligns.length) { return false; }\n\n if (silent) { return true; }\n\n oldParentType = state.parentType;\n state.parentType = 'table';\n\n // use 'blockquote' lists for termination because it's\n // the most similar to tables\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [ startLine, 0 ];\n\n token = state.push('thead_open', 'thead', 1);\n token.map = [ startLine, startLine + 1 ];\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [ startLine, startLine + 1 ];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.children = [];\n\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) { break; }\n lineText = getLine(state, nextLine).trim();\n if (!lineText) { break; }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break; }\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n if (nextLine === startLine + 2) {\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [ startLine + 2, 0 ];\n }\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [ nextLine, nextLine + 1 ];\n\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n\n token = state.push('td_close', 'td', -1);\n }\n token = state.push('tr_close', 'tr', -1);\n }\n\n if (tbodyLines) {\n token = state.push('tbody_close', 'tbody', -1);\n tbodyLines[1] = nextLine;\n }\n\n token = state.push('table_close', 'table', -1);\n tableLines[1] = nextLine;\n\n state.parentType = oldParentType;\n state.line = nextLine;\n return true;\n};\n","'use strict';\n\n\nmodule.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [ 0, 1 ];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n};\n","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens, tok, i, l;\n\n // Parse inlines\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n};\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n\nmodule.exports = function linkify(state) {\n var i, j, l, tokens, token, currentToken, nodes, ln, text, pos, lastPos,\n level, htmlLinkLevel, url, fullUrl, urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) { return; }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n\n htmlLinkLevel = 0;\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i];\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--;\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n continue;\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n if (htmlLinkLevel > 0) { continue; }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n\n text = currentToken.content;\n links = state.md.linkify.match(text);\n\n // Now split string to nodes\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http://example.com/\n if (links.length > 0 &&\n links[0].index === 0 &&\n i > 0 &&\n tokens[i - 1].type === 'text_special') {\n links = links.slice(1);\n }\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { continue; }\n\n urlText = links[ln].text;\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n lastPos = links[ln].lastIndex;\n }\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n};\n","// Normalize input string\n\n'use strict';\n\n\n// https://spec.commonmark.org/0.29/#line-ending\nvar NEWLINES_RE = /\\r\\n?|\\n/g;\nvar NULL_RE = /\\0/g;\n\n\nmodule.exports = function normalize(state) {\n var str;\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n');\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD');\n\n state.src = str;\n};\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n'use strict';\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig;\nvar SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n};\n\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n var i, token, inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nfunction replace_rare(inlineTokens) {\n var i, token, inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013');\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\n\nmodule.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n\n }\n};\n","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = '\\u2019'; /* ’ */\n\n\nfunction replaceAt(str, index, ch) {\n return str.slice(0, index) + ch + str.slice(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar,\n isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace,\n canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break; }\n }\n stack.length = j + 1;\n\n if (token.type !== 'text') { continue; }\n\n text = token.content;\n pos = 0;\n max = text.length;\n\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n if (!t) { break; }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = (t[0] === \"'\");\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n if (stack[j].level < thisLevel) { break; }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote);\n\n pos += closeQuote.length - 1;\n if (item.token === i) { pos += openQuote.length - 1; }\n\n text = token.content;\n max = text.length;\n\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n}\n\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n};\n","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\n\nfunction StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token;\n\n\nmodule.exports = StateCore;\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n'use strict';\n\n\nmodule.exports = function text_join(state) {\n var j, l, tokens, curr, max, last,\n blockTokens = state.tokens;\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue;\n\n tokens = blockTokens[j].children;\n max = tokens.length;\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text';\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) { tokens[last] = tokens[curr]; }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n }\n};\n","// Process autolinks ''\n\n'use strict';\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\nvar AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\n\nmodule.exports = function autolink(state, silent) {\n var url, fullUrl, token, ch, start, max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n start = state.pos;\n max = state.posMax;\n\n for (;;) {\n if (++pos >= max) return false;\n\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x3C /* < */) return false;\n if (ch === 0x3E /* > */) break;\n }\n\n url = state.src.slice(start + 1, pos);\n\n if (AUTOLINK_RE.test(url)) {\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n if (EMAIL_RE.test(url)) {\n fullUrl = state.md.normalizeLink('mailto:' + url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n return false;\n};\n","// Parse backticks\n\n'use strict';\n\n\nmodule.exports = function backtick(state, silent) {\n var start, max, marker, token, matchStart, matchEnd, openerLength, closerLength,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60/* ` */) { return false; }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n // scan marker length\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n marker = state.src.slice(start, pos);\n openerLength = marker.length;\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n }\n\n matchEnd = pos;\n\n // Nothing found in the cache, scan until the end of the line (or until marker is found)\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n // scan marker length\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n closerLength = matchEnd - matchStart;\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart)\n .replace(/\\n/g, ' ')\n .replace(/^ (.+) $/, '$1');\n }\n state.pos = matchEnd;\n return true;\n }\n\n // Some different length found, put it in cache as upper limit of where closer can be found\n state.backticks[closerLength] = matchStart;\n }\n\n // Scanned through the end, didn't find anything\n state.backticksScanned = true;\n\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n};\n","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\n\nfunction processDelimiters(delimiters) {\n var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx,\n isOddMatch, lastJump,\n openersBottom = {},\n max = delimiters.length;\n\n if (!max) return;\n\n // headerIdx is the first delimiter of the current (where closer is) delimiter run\n var headerIdx = 0;\n var lastTokenIdx = -2; // needs any value lower than -1\n var jumps = [];\n\n for (closerIdx = 0; closerIdx < max; closerIdx++) {\n closer = delimiters[closerIdx];\n\n jumps.push(0);\n\n // markers belong to same delimiter run if:\n // - they have adjacent tokens\n // - AND markers are the same\n //\n if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n headerIdx = closerIdx;\n }\n\n lastTokenIdx = closer.token;\n\n // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n closer.length = closer.length || 0;\n\n if (!closer.close) continue;\n\n // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [ -1, -1, -1, -1, -1, -1 ];\n }\n\n minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)];\n\n openerIdx = headerIdx - jumps[headerIdx] - 1;\n\n newMinOpenerIdx = openerIdx;\n\n for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n opener = delimiters[openerIdx];\n\n if (opener.marker !== closer.marker) continue;\n\n if (opener.open && opener.end < 0) {\n\n isOddMatch = false;\n\n // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true;\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ?\n jumps[openerIdx - 1] + 1 :\n 0;\n\n jumps[closerIdx] = closerIdx - openerIdx + lastJump;\n jumps[openerIdx] = lastJump;\n\n closer.open = false;\n opener.end = closerIdx;\n opener.close = false;\n newMinOpenerIdx = -1;\n // treat next token as start of run,\n // it optimizes skips in **<...>**a**<...>** pathological case\n lastTokenIdx = -2;\n break;\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx;\n }\n }\n}\n\n\nmodule.exports = function link_pairs(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n\n processDelimiters(state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(tokens_meta[curr].delimiters);\n }\n }\n};\n","// Process *this* and _that_\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function emphasis(state, silent) {\n var i, scanned, token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\nfunction postProcess(state, delimiters) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n max = delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue;\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1;\n\n ch = String.fromCharCode(startDelim.marker);\n\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = '';\n state.tokens[delimiters[startDelim.end + 1].token].content = '';\n i--;\n }\n }\n}\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function emphasis(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n};\n","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, token, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) return false;\n\n if (pos + 1 >= max) return false;\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n\n token = state.push('text_special', '', 0);\n token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n token.markup = match[0];\n token.info = 'entity';\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) {\n token = state.push('text_special', '', 0);\n token.content = entities[match[1]];\n token.markup = match[0];\n token.info = 'entity';\n }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n\n return false;\n};\n","// Process escaped chars and hardbreaks\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nmodule.exports = function escape(state, silent) {\n var ch1, ch2, origStr, escapedStr, token, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false;\n pos++;\n\n // '\\' at the end of the inline block\n if (pos >= max) return false;\n\n ch1 = state.src.charCodeAt(pos);\n\n if (ch1 === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++;\n // skip leading whitespaces from next line\n while (pos < max) {\n ch1 = state.src.charCodeAt(pos);\n if (!isSpace(ch1)) break;\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n\n escapedStr = state.src[pos];\n\n if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n ch2 = state.src.charCodeAt(pos + 1);\n\n if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n escapedStr += state.src[pos + 1];\n pos++;\n }\n }\n\n origStr = '\\\\' + escapedStr;\n\n if (!silent) {\n token = state.push('text_special', '', 0);\n\n if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n token.content = escapedStr;\n } else {\n token.content = origStr;\n }\n\n token.markup = origStr;\n token.info = 'escape';\n }\n\n state.pos = pos + 1;\n return true;\n};\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n'use strict';\n\n\nmodule.exports = function fragments_join(state) {\n var curr, last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level--; // closing tag\n tokens[curr].level = level;\n if (tokens[curr].nesting > 0) level++; // opening tag\n\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) { tokens[last] = tokens[curr]; }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n};\n","// Process html tags\n\n'use strict';\n\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nmodule.exports = function html_inline(state, silent) {\n var ch, match, max, token,\n pos = state.pos;\n\n if (!state.md.options.html) { return false; }\n\n // Check start\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false;\n }\n\n // Quick fail on second char\n ch = state.src.charCodeAt(pos + 1);\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n if (!match) { return false; }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = match[0];\n\n if (isLinkOpen(token.content)) state.linkLevel++;\n if (isLinkClose(token.content)) state.linkLevel--;\n }\n state.pos += match[0].length;\n return true;\n};\n","// Process ![image]( \"title\")\n\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos;\n return false;\n }\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens = []\n );\n\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push([ 'title', title ]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process [link]( \"stuff\")\n\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n token,\n href = '',\n title = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [ [ 'href', href ] ];\n if (title) {\n attrs.push([ 'title', title ]);\n }\n\n state.linkLevel++;\n state.md.inline.tokenize(state);\n state.linkLevel--;\n\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process links like https://example.org/\n\n'use strict';\n\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nvar SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;\n\n\nmodule.exports = function linkify(state, silent) {\n var pos, max, match, proto, link, url, fullUrl, token;\n\n if (!state.md.options.linkify) return false;\n if (state.linkLevel > 0) return false;\n\n pos = state.pos;\n max = state.posMax;\n\n if (pos + 3 > max) return false;\n if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false;\n if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false;\n if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false;\n\n match = state.pending.match(SCHEME_RE);\n if (!match) return false;\n\n proto = match[1];\n\n link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));\n if (!link) return false;\n\n url = link.url;\n\n // invalid link, but still detected by linkify somehow;\n // need to check to prevent infinite loop below\n if (url.length <= proto.length) return false;\n\n // disallow '*' at the end of the link (conflicts with emphasis)\n url = url.replace(/\\*+$/, '');\n\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) return false;\n\n if (!silent) {\n state.pending = state.pending.slice(0, -proto.length);\n\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'linkify';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'linkify';\n token.info = 'auto';\n }\n\n state.pos += url.length - proto.length;\n return true;\n};\n","// Proceess '\\n'\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function newline(state, silent) {\n var pmax, max, ws, pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n pmax = state.pending.length - 1;\n max = state.posMax;\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Find whitespaces tail of pending chars.\n ws = pmax - 1;\n while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--;\n\n state.pending = state.pending.slice(0, ws);\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++;\n\n // skip heading spaces for next line\n while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; }\n\n state.pos = pos;\n return true;\n};\n","// Inline parser state\n\n'use strict';\n\n\nvar Token = require('../token');\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\n\nfunction StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.tokens_meta = Array(outTokens.length);\n\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0;\n\n // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n this.cache = {};\n\n // List of emphasis-like delimiters for current tag\n this.delimiters = [];\n\n // Stack of delimiter lists for upper level tags\n this._prev_delimiters = [];\n\n // backtick length => last seen position\n this.backticks = {};\n this.backticksScanned = false;\n\n // Counter used to disable inline linkify-it execution\n // inside and markdown links\n this.linkLevel = 0;\n}\n\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n};\n\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n var token_meta = null;\n\n if (nesting < 0) {\n // closing tag\n this.level--;\n this.delimiters = this._prev_delimiters.pop();\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n // opening tag\n this.level++;\n this._prev_delimiters.push(this.delimiters);\n this.delimiters = [];\n token_meta = { delimiters: this.delimiters };\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n this.tokens_meta.push(token_meta);\n return token;\n};\n\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start, lastChar, nextChar, count, can_open, can_close,\n isLastWhiteSpace, isLastPunctChar,\n isNextWhiteSpace, isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start);\n\n // treat beginning of the line as a whitespace\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }\n\n count = pos - start;\n\n // treat end of the line as a whitespace\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n};\n\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token;\n\n\nmodule.exports = StateInline;\n","// ~~strike through~~\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function strikethrough(state, silent) {\n var i, scanned, token, len, ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x7E/* ~ */) { return false; }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) { return false; }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n\n state.delimiters.push({\n marker: marker,\n length: 0, // disable \"rule of 3\" length checks meant for emphasis\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\nfunction postProcess(state, delimiters) {\n var i, j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n max = delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n}\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function strikethrough(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n};\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n'use strict';\n\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) { return false; }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n state.pos = pos;\n\n return true;\n};\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n};*/\n","// Token class\n\n'use strict';\n\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag;\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null;\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null;\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting;\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0;\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null;\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = '';\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = '';\n\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n this.info = '';\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null;\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false;\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false;\n}\n\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) { return -1; }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i; }\n }\n return -1;\n};\n\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [ attrData ];\n }\n};\n\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [ name, value ];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n};\n\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name), value = null;\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n return value;\n};\n\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([ name, value ]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n};\n\n\nmodule.exports = Token;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\nmodule.exports = function format(url) {\n var result = '';\n\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n\n return result;\n};\n","'use strict';\n\n\nmodule.exports.encode = require('./encode');\nmodule.exports.decode = require('./decode');\nmodule.exports.format = require('./format');\nmodule.exports.parse = require('./parse');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = [ '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t' ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [ '{', '}', '|', '\\\\', '^', '`' ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = [ '\\'' ].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = [ '%', '/', '?', ';', '#' ].concat(autoEscape),\n hostEndingChars = [ '/', '?', '#' ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n /* eslint-disable no-script-url */\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n /* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, slashesDenoteHost) {\n var i, l, lowerProto, hec, slashes,\n rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd--; }\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost(host);\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n};\n\nUrl.prototype.parseHost = function(host) {\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nmodule.exports = urlParse;\n","'use strict';\nmodule.exports = (promise, onFinally) => {\n\tonFinally = onFinally || (() => {});\n\n\treturn promise.then(\n\t\tval => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => val),\n\t\terr => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => {\n\t\t\tthrow err;\n\t\t})\n\t);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst EventEmitter = require(\"eventemitter3\");\nconst p_timeout_1 = require(\"p-timeout\");\nconst priority_queue_1 = require(\"./priority-queue\");\nconst empty = () => { };\nconst timeoutError = new p_timeout_1.TimeoutError();\n/**\nPromise queue with concurrency control.\n*/\nclass PQueue extends EventEmitter {\n constructor(options) {\n super();\n Object.defineProperty(this, \"_carryoverConcurrencyCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_isIntervalIgnored\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_intervalCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_intervalCap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_interval\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_intervalEnd\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_intervalId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_timeoutId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_queueClass\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pendingCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n Object.defineProperty(this, \"_concurrency\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_isPaused\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_resolveEmpty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: empty\n });\n Object.defineProperty(this, \"_resolveIdle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: empty\n });\n Object.defineProperty(this, \"_timeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_throwOnTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n options = Object.assign({ carryoverConcurrencyCount: false, intervalCap: Infinity, interval: 0, concurrency: Infinity, autoStart: true, queueClass: priority_queue_1.default }, options\n // TODO: Remove this `as`.\n );\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval}\\` (${typeof options.interval})`);\n }\n this._carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this._isIntervalIgnored = options.intervalCap === Infinity || options.interval === 0;\n this._intervalCap = options.intervalCap;\n this._interval = options.interval;\n this._queue = new options.queueClass();\n this._queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this._timeout = options.timeout;\n this._throwOnTimeout = options.throwOnTimeout === true;\n this._isPaused = options.autoStart === false;\n }\n get _doesIntervalAllowAnother() {\n return this._isIntervalIgnored || this._intervalCount < this._intervalCap;\n }\n get _doesConcurrentAllowAnother() {\n return this._pendingCount < this._concurrency;\n }\n _next() {\n this._pendingCount--;\n this._tryToStartAnother();\n }\n _resolvePromises() {\n this._resolveEmpty();\n this._resolveEmpty = empty;\n if (this._pendingCount === 0) {\n this._resolveIdle();\n this._resolveIdle = empty;\n }\n }\n _onResumeInterval() {\n this._onInterval();\n this._initializeIntervalIfNeeded();\n this._timeoutId = undefined;\n }\n _isIntervalPaused() {\n const now = Date.now();\n if (this._intervalId === undefined) {\n const delay = this._intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this._intervalCount = (this._carryoverConcurrencyCount) ? this._pendingCount : 0;\n }\n else {\n // Act as the interval is pending\n if (this._timeoutId === undefined) {\n this._timeoutId = setTimeout(() => {\n this._onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n _tryToStartAnother() {\n if (this._queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this._intervalId) {\n clearInterval(this._intervalId);\n }\n this._intervalId = undefined;\n this._resolvePromises();\n return false;\n }\n if (!this._isPaused) {\n const canInitializeInterval = !this._isIntervalPaused();\n if (this._doesIntervalAllowAnother && this._doesConcurrentAllowAnother) {\n this.emit('active');\n this._queue.dequeue()();\n if (canInitializeInterval) {\n this._initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n _initializeIntervalIfNeeded() {\n if (this._isIntervalIgnored || this._intervalId !== undefined) {\n return;\n }\n this._intervalId = setInterval(() => {\n this._onInterval();\n }, this._interval);\n this._intervalEnd = Date.now() + this._interval;\n }\n _onInterval() {\n if (this._intervalCount === 0 && this._pendingCount === 0 && this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = undefined;\n }\n this._intervalCount = this._carryoverConcurrencyCount ? this._pendingCount : 0;\n this._processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n _processQueue() {\n // eslint-disable-next-line no-empty\n while (this._tryToStartAnother()) { }\n }\n get concurrency() {\n return this._concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this._concurrency = newConcurrency;\n this._processQueue();\n }\n /**\n Adds a sync or async task to the queue. Always returns a promise.\n */\n async add(fn, options = {}) {\n return new Promise((resolve, reject) => {\n const run = async () => {\n this._pendingCount++;\n this._intervalCount++;\n try {\n const operation = (this._timeout === undefined && options.timeout === undefined) ? fn() : p_timeout_1.default(Promise.resolve(fn()), (options.timeout === undefined ? this._timeout : options.timeout), () => {\n if (options.throwOnTimeout === undefined ? this._throwOnTimeout : options.throwOnTimeout) {\n reject(timeoutError);\n }\n return undefined;\n });\n resolve(await operation);\n }\n catch (error) {\n reject(error);\n }\n this._next();\n };\n this._queue.enqueue(run, options);\n this._tryToStartAnother();\n });\n }\n /**\n Same as `.add()`, but accepts an array of sync or async functions.\n\n @returns A promise that resolves when all functions are resolved.\n */\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this._isPaused) {\n return this;\n }\n this._isPaused = false;\n this._processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this._isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this._queue = new this._queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this._queue.size === 0) {\n return;\n }\n return new Promise(resolve => {\n const existingResolve = this._resolveEmpty;\n this._resolveEmpty = () => {\n existingResolve();\n resolve();\n };\n });\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this._pendingCount === 0 && this._queue.size === 0) {\n return;\n }\n return new Promise(resolve => {\n const existingResolve = this._resolveIdle;\n this._resolveIdle = () => {\n existingResolve();\n resolve();\n };\n });\n }\n /**\n Size of the queue.\n */\n get size() {\n return this._queue.size;\n }\n /**\n Number of pending promises.\n */\n get pending() {\n return this._pendingCount;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this._isPaused;\n }\n /**\n Set the timeout for future operations.\n */\n set timeout(milliseconds) {\n this._timeout = milliseconds;\n }\n get timeout() {\n return this._timeout;\n }\n}\nexports.default = PQueue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Port of lower_bound from http://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nfunction lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = (count / 2) | 0;\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\nexports.default = lowerBound;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst lower_bound_1 = require(\"./lower-bound\");\nclass PriorityQueue {\n constructor() {\n Object.defineProperty(this, \"_queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n enqueue(run, options) {\n options = Object.assign({ priority: 0 }, options);\n const element = {\n priority: options.priority,\n run\n };\n if (this.size && this._queue[this.size - 1].priority >= options.priority) {\n this._queue.push(element);\n return;\n }\n const index = lower_bound_1.default(this._queue, element, (a, b) => b.priority - a.priority);\n this._queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this._queue.shift();\n return item && item.run;\n }\n get size() {\n return this._queue.length;\n }\n}\nexports.default = PriorityQueue;\n","'use strict';\n\nconst pFinally = require('p-finally');\n\nclass TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\nconst pTimeout = (promise, milliseconds, fallback) => new Promise((resolve, reject) => {\n\tif (typeof milliseconds !== 'number' || milliseconds < 0) {\n\t\tthrow new TypeError('Expected `milliseconds` to be a positive number');\n\t}\n\n\tif (milliseconds === Infinity) {\n\t\tresolve(promise);\n\t\treturn;\n\t}\n\n\tconst timer = setTimeout(() => {\n\t\tif (typeof fallback === 'function') {\n\t\t\ttry {\n\t\t\t\tresolve(fallback());\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\tif (typeof promise.cancel === 'function') {\n\t\t\tpromise.cancel();\n\t\t}\n\n\t\treject(timeoutError);\n\t}, milliseconds);\n\n\t// TODO: Use native `finally` keyword when targeting Node.js 10\n\tpFinally(\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tpromise.then(resolve, reject),\n\t\t() => {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t);\n});\n\nmodule.exports = pTimeout;\n// TODO: Remove this for the next major release\nmodule.exports.default = pTimeout;\n\nmodule.exports.TimeoutError = TimeoutError;\n","/**\n * Srcset Parser\n *\n * By Alex Bell | MIT License\n *\n * JS Parser for the string value that appears in markup \n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.parseSrcset = factory();\n\t}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\"); // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t// of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\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 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