{"version":3,"file":"scripts/chunks/plugins-15f32a72.4a5893fada89ba2d1164.js","mappings":";uHA6Ee,SAASA,EAAQC,GAE9BA,EAAWA,GAAY,CAAC,EAExBC,OAAOC,KAAKC,YAAYC,MAAMC,KAAMC,WAIpCD,KAAKE,SAAWP,EAASQ,SAAW,GACpCH,KAAKI,gBAAkBT,EAASU,iBAAkB,EAClDL,KAAKM,UAAYX,EAASY,UAAY,EACtCP,KAAKQ,aAAeb,EAASc,aAAe,IAAIb,OAAOC,KAAKa,KAAK,EAAG,GACpEV,KAAKW,UAAYhB,EAASiB,UAAY,IAAIhB,OAAOC,KAAKgB,OAAO,EAAG,GAChEb,KAAKc,QAAUnB,EAASoB,QAAU,KAIlCf,KAAKgB,UAAYrB,EAASsB,UAAY,UACtCjB,KAAKkB,UAAYvB,EAASwB,UAAY,CAAC,EACvCnB,KAAKoB,gBAAkBzB,EAAS0B,gBAAkB,MAClDrB,KAAKsB,aAAe3B,EAAS4B,aAAe,iDACf,KAAzB5B,EAAS4B,cACXvB,KAAKsB,aAAe,IAEtBtB,KAAKwB,eAAiB7B,EAAS8B,eAAiB,UAChDzB,KAAK0B,kBAAoB/B,EAASgC,kBAAoB,IAAI/B,OAAOC,KAAKa,KAAK,EAAG,QAE9C,IAArBf,EAASiC,eACe,IAAtBjC,EAASkC,SAClBlC,EAASiC,SAAU,EAEnBjC,EAASiC,SAAWjC,EAASkC,UAGjC7B,KAAK8B,WAAanC,EAASiC,QAE3B5B,KAAK+B,aAAepC,EAASqC,cAAe,EAC5ChC,KAAKiC,MAAQtC,EAASuC,MAAQ,YAC9BlC,KAAKmC,wBAA0BxC,EAASyC,yBAA0B,EAElEpC,KAAKqC,KAAO,KACZrC,KAAKsC,eAAiB,KACtBtC,KAAKuC,cAAgB,KACrBvC,KAAKwC,iBAAmB,KACxBxC,KAAKyC,gBAAkB,KACvBzC,KAAK0C,eAAiB,IACxB,uCAIAhD,EAAQiD,UAAY,IAAI/C,OAAOC,KAAKC,YAMpCJ,EAAQiD,UAAUC,kBAAoB,WAEpC,IAAIC,EACAC,EACAC,EACAC,EAAKhD,KAILiD,EAAgB,SAAUC,GAC5BA,EAAEC,cAAe,EACbD,EAAEE,iBACJF,EAAEE,iBAEN,EAoBA,IAAKpD,KAAKqC,KAAM,CAyCd,GAvCArC,KAAKqC,KAAOgB,SAASC,cAAc,OAEnCtD,KAAKuD,oBAEiC,IAA3BvD,KAAKE,SAASsD,SACvBxD,KAAKqC,KAAKoB,UAAYzD,KAAK0D,kBAAoB1D,KAAKE,UAEpDF,KAAKqC,KAAKoB,UAAYzD,KAAK0D,kBAC3B1D,KAAKqC,KAAKsB,YAAY3D,KAAKE,WAI7BF,KAAK4D,WAAW5D,KAAKiC,OAAO0B,YAAY3D,KAAKqC,MAE7CrC,KAAK6D,mBAED7D,KAAKqC,KAAKyB,MAAMC,MAElB/D,KAAK0C,gBAAiB,EAIC,IAAnB1C,KAAKM,WAAmBN,KAAKqC,KAAK2B,YAAchE,KAAKM,WAEvDN,KAAKqC,KAAKyB,MAAMC,MAAQ/D,KAAKM,UAC7BN,KAAKqC,KAAKyB,MAAMG,SAAW,OAC3BjE,KAAK0C,gBAAiB,IAItBK,EAAK/C,KAAKkE,gBAEVlE,KAAKqC,KAAKyB,MAAMC,MAAS/D,KAAKqC,KAAK2B,YAAcjB,EAAGoB,KAAOpB,EAAGqB,MAAS,KACvEpE,KAAK0C,gBAAiB,GAI1B1C,KAAKqE,QAAQrE,KAAKI,kBAEbJ,KAAKmC,wBAAyB,CAUjC,IARAnC,KAAKyC,gBAAkB,GAKvBK,EAAS,CAAC,YAAa,YAAa,WAAY,UAC9C,QAAS,WAAY,aAAc,WAAY,aAE5CD,EAAI,EAAGA,EAAIC,EAAOwB,OAAQzB,IAE7B7C,KAAKyC,gBAAgB8B,KAAK3E,OAAOC,KAAK2E,MAAMC,eAAezE,KAAKqC,KAAMS,EAAOD,GAAII,IAKnFjD,KAAKyC,gBAAgB8B,KAAK3E,OAAOC,KAAK2E,MAAMC,eAAezE,KAAKqC,KAAM,aAAa,SAAUa,GAC3FlD,KAAK8D,MAAMY,OAAS,SACtB,IACF,CAEA1E,KAAKwC,iBAAmB5C,OAAOC,KAAK2E,MAAMC,eAAezE,KAAKqC,KAAM,eA9ElD,SAAUa,GAE5BA,EAAEyB,aAAc,EAEZzB,EAAE0B,gBAEJ1B,EAAE0B,iBAGC5B,EAAGb,yBAENc,EAAcC,EAElB,IAwEEtD,OAAOC,KAAK2E,MAAMK,QAAQ7E,KAAM,WAClC,CACF,EAMAN,EAAQiD,UAAUe,gBAAkB,WAElC,IAAIoB,EAAM,GAeV,MAb0B,KAAtB9E,KAAKsB,eAEPwD,EAAO,OACPA,GAAO,SAAW9E,KAAKsB,aAAe,IACtCwD,GAAO,eACPA,GAAO,WAAa9E,KAAKwB,eAAiB,IAC1CsD,GAAO,WACPA,GAAO,uBACPA,GAAO,oBACPA,GAAO,YAAc9E,KAAKoB,gBAAkB,IAC5C0D,GAAO,MAGFA,CACT,EAMApF,EAAQiD,UAAUkB,iBAAmB,WAEnC,IAAIkB,EAEsB,KAAtB/E,KAAKsB,cAEPyD,EAAW/E,KAAKqC,KAAK2C,WACrBhF,KAAKsC,eAAiB1C,OAAOC,KAAK2E,MAAMC,eAAeM,EAAU,QAAS/E,KAAKiF,0BAI/EjF,KAAKsC,eAAiB,IAE1B,EAMA5C,EAAQiD,UAAUsC,sBAAwB,WAExC,IAAIjC,EAAKhD,KAET,OAAO,SAAUkD,GAGfA,EAAEC,cAAe,EAEbD,EAAEE,iBAEJF,EAAEE,kBAQJxD,OAAOC,KAAK2E,MAAMK,QAAQ7B,EAAI,cAE9BA,EAAGkC,OACL,CACF,EAMAxF,EAAQiD,UAAU0B,QAAU,SAAUc,GAEpC,IAAIC,EAEAC,EAAU,EAAGC,EAAU,EAE3B,IAAKH,IAEHC,EAAMpF,KAAKuF,oBAEQ3F,OAAOC,KAAK2F,IAAK,CAE7BJ,EAAIK,YAAYC,SAAS1F,KAAKW,YAGjCyE,EAAIO,UAAU3F,KAAKW,WAGrB,IAAIiF,EAAY5F,KAAKQ,aAAauD,MAC9B8B,EAAY7F,KAAKQ,aAAasF,OAC9BC,EAAU/F,KAAKqC,KAAK2B,YACpBgC,EAAWhG,KAAKqC,KAAK4D,aACrBC,EAAOlG,KAAK0B,kBAAkBqC,MAC9BoC,EAAOnG,KAAK0B,kBAAkBoE,OAElC,GAA8B,GAA1BV,EAAIgB,YAAY9B,OAAa,CAM/B,IAAI+B,EAAU,CAAClC,KAAM,EAAGC,MAAO,EAAGkC,IAAK,EAAGC,OAAQ,GAClDF,EAAQlC,MAAQyB,EAAYM,EAC5BG,EAAQjC,MAAQwB,EAAYG,EAAUG,EAClClG,KAAK+B,cACPsE,EAAQC,KAAOT,EAAYM,EAAOH,EAClCK,EAAQE,OAASV,EAAYM,IAE7BE,EAAQC,KAAOT,EAAYM,EAC3BE,EAAQE,OAASV,EAAYG,EAAWG,GAE1Cf,EAAIgB,YAAY,IAAIxG,OAAOC,KAAK2G,aAAaxG,KAAKW,WAAY0F,EAChE,KAAO,CACL,IAAII,EAASrB,EAAIsB,SACbC,EAAWF,EAAOzC,YAClB4C,EAAYH,EAAOR,aACnBY,EAAc7G,KAAK8G,gBAAgBC,2BAA2B/G,KAAKW,WAqBvE,GAnBIkG,EAAYG,GAAMpB,EAAYM,EAChCb,EAAUwB,EAAYG,EAAIpB,EAAYM,EAC5BW,EAAYG,EAAIjB,EAAUH,EAAYM,EAAQS,IACxDtB,EAAUwB,EAAYG,EAAIjB,EAAUH,EAAYM,EAAOS,GAErD3G,KAAK+B,aACH8E,EAAYI,GAAMpB,EAAYM,EAAOH,EACvCV,EAAUuB,EAAYI,EAAIpB,EAAYM,EAAOH,EACnCa,EAAYI,EAAIpB,EAAYM,EAAQS,IAC9CtB,EAAUuB,EAAYI,EAAIpB,EAAYM,EAAOS,GAG3CC,EAAYI,GAAMpB,EAAYM,EAChCb,EAAUuB,EAAYI,EAAIpB,EAAYM,EAC5BU,EAAYI,EAAIjB,EAAWH,EAAYM,EAAQS,IACzDtB,EAAUuB,EAAYI,EAAIjB,EAAWH,EAAYM,EAAOS,GAI1C,IAAZvB,GAA6B,IAAZC,EAAgB,CAI7BF,EAAI8B,YACZ9B,EAAI+B,MAAM9B,EAASC,EACrB,CACF,CACF,CAEJ,EAOA5F,EAAQiD,UAAUY,aAAe,WAE/B,IAAIV,EAAG1B,EAEP,GAAInB,KAAKqC,KAAM,CAUb,IAAKQ,KAPL7C,KAAKqC,KAAK+E,UAAYpH,KAAKgB,UAG3BhB,KAAKqC,KAAKyB,MAAMuD,QAAU,GAG1BlG,EAAWnB,KAAKkB,UAGVC,EAASmG,eAAezE,KAE1B7C,KAAKqC,KAAKyB,MAAMjB,GAAK1B,EAAS0B,UAOc,IAApC7C,KAAKqC,KAAKyB,MAAMyD,kBAAgG,IAA3DvH,KAAKqC,KAAKyB,MAAMyD,gBAAgBC,QAAQ,gBAA+E,IAAvDxH,KAAKqC,KAAKyB,MAAMyD,gBAAgBC,QAAQ,aAEvKxH,KAAKqC,KAAKyB,MAAMyD,gBAAkB,sBAKG,IAA5BvH,KAAKqC,KAAKyB,MAAM2D,SAAuD,KAA5BzH,KAAKqC,KAAKyB,MAAM2D,UAEpEzH,KAAKqC,KAAKyB,MAAM4D,SAAW,oDAAkF,IAA1B1H,KAAKqC,KAAKyB,MAAM2D,QAAiB,KACpHzH,KAAKqC,KAAKyB,MAAM6D,OAAS,iBAA8C,IAA1B3H,KAAKqC,KAAKyB,MAAM2D,QAAiB,KAKhFzH,KAAKqC,KAAKyB,MAAMlD,SAAW,WAC3BZ,KAAKqC,KAAKyB,MAAM8D,WAAa,SACR,OAAjB5H,KAAKc,UAEPd,KAAKqC,KAAKyB,MAAM/C,OAASf,KAAKc,QAElC,CACF,EAOApB,EAAQiD,UAAUuB,cAAgB,WAEhC,IAAI2D,EACA9E,EAAK,CAACuD,IAAK,EAAGC,OAAQ,EAAGpC,KAAM,EAAGC,MAAO,GACzC0D,EAAM9H,KAAKqC,KA2Bf,OAzBIgB,SAAS0E,aAAe1E,SAAS0E,YAAYC,kBAE/CH,EAAgBC,EAAIG,cAAcF,YAAYC,iBAAiBF,EAAK,OAKlE/E,EAAGuD,IAAM4B,SAASL,EAAcM,eAAgB,KAAO,EACvDpF,EAAGwD,OAAS2B,SAASL,EAAcO,kBAAmB,KAAO,EAC7DrF,EAAGoB,KAAO+D,SAASL,EAAcQ,gBAAiB,KAAO,EACzDtF,EAAGqB,MAAQ8D,SAASL,EAAcS,iBAAkB,KAAO,GAGpDjF,SAASkF,gBAAgBC,cAE9BV,EAAIU,eAGNzF,EAAGuD,IAAM4B,SAASJ,EAAIU,aAAaL,eAAgB,KAAO,EAC1DpF,EAAGwD,OAAS2B,SAASJ,EAAIU,aAAaJ,kBAAmB,KAAO,EAChErF,EAAGoB,KAAO+D,SAASJ,EAAIU,aAAaH,gBAAiB,KAAO,EAC5DtF,EAAGqB,MAAQ8D,SAASJ,EAAIU,aAAaF,iBAAkB,KAAO,GAI3DvF,CACT,EAKArD,EAAQiD,UAAU8F,SAAW,WAEvBzI,KAAKqC,OAEPrC,KAAKqC,KAAKqG,WAAWC,YAAY3I,KAAKqC,MACtCrC,KAAKqC,KAAO,KAEhB,EAKA3C,EAAQiD,UAAUiG,KAAO,WAEvB5I,KAAK4C,oBAEL,IAAIiE,EAAc7G,KAAK8G,gBAAgB+B,qBAAqB7I,KAAKW,WAEjEX,KAAKqC,KAAKyB,MAAMK,KAAQ0C,EAAYG,EAAIhH,KAAKQ,aAAauD,MAAS,KAE/D/D,KAAK+B,aACP/B,KAAKqC,KAAKyB,MAAMyC,SAAWM,EAAYI,EAAIjH,KAAKQ,aAAasF,QAAU,KAEvE9F,KAAKqC,KAAKyB,MAAMwC,IAAOO,EAAYI,EAAIjH,KAAKQ,aAAasF,OAAU,KAGjE9F,KAAK8B,UAEP9B,KAAKqC,KAAKyB,MAAM8D,WAAa,SAI7B5H,KAAKqC,KAAKyB,MAAM8D,WAAa,SAEjC,EASAlI,EAAQiD,UAAUmG,WAAa,SAAUnJ,QACN,IAAtBA,EAASsB,WAElBjB,KAAKgB,UAAYrB,EAASsB,SAC1BjB,KAAKuD,qBAE0B,IAAtB5D,EAASwB,WAElBnB,KAAKkB,UAAYvB,EAASwB,SAC1BnB,KAAKuD,qBAEyB,IAArB5D,EAASQ,SAElBH,KAAK+I,WAAWpJ,EAASQ,cAEY,IAA5BR,EAASU,iBAElBL,KAAKI,gBAAkBT,EAASU,qBAED,IAAtBV,EAASY,WAElBP,KAAKM,UAAYX,EAASY,eAEQ,IAAzBZ,EAASc,cAElBT,KAAKQ,aAAeb,EAASc,kBAEK,IAAzBd,EAASqC,cAElBhC,KAAK+B,aAAepC,EAASqC,kBAEE,IAAtBrC,EAASiB,UAElBZ,KAAKgJ,YAAYrJ,EAASiB,eAEG,IAApBjB,EAASoB,QAElBf,KAAKiJ,UAAUtJ,EAASoB,aAEa,IAA5BpB,EAAS0B,iBAElBrB,KAAKoB,gBAAkBzB,EAAS0B,qBAEE,IAAzB1B,EAAS4B,cAElBvB,KAAKsB,aAAe3B,EAAS4B,kBAEO,IAA3B5B,EAAS8B,gBAElBzB,KAAKwB,eAAiB7B,EAAS8B,oBAEQ,IAA9B9B,EAASgC,mBAElB3B,KAAK0B,kBAAoB/B,EAASgC,uBAEH,IAAtBhC,EAASkC,WAElB7B,KAAK8B,UAAYnC,EAASkC,eAEI,IAArBlC,EAASiC,UAElB5B,KAAK8B,WAAanC,EAASiC,cAEkB,IAApCjC,EAASyC,yBAElBpC,KAAKmC,wBAA0BxC,EAASyC,wBAGtCpC,KAAKqC,MAEPrC,KAAK4I,MAET,EAOAlJ,EAAQiD,UAAUoG,WAAa,SAAU5I,GACvCH,KAAKE,SAAWC,EAEZH,KAAKqC,OAEHrC,KAAKsC,iBAEP1C,OAAOC,KAAK2E,MAAM0E,eAAelJ,KAAKsC,gBACtCtC,KAAKsC,eAAiB,MAKnBtC,KAAK0C,iBAER1C,KAAKqC,KAAKyB,MAAMC,MAAQ,SAGM,IAArB5D,EAAQqD,SACjBxD,KAAKqC,KAAKoB,UAAYzD,KAAK0D,kBAAoBvD,GAE/CH,KAAKqC,KAAKoB,UAAYzD,KAAK0D,kBAC3B1D,KAAKqC,KAAKsB,YAAYxD,IAMnBH,KAAK0C,iBACR1C,KAAKqC,KAAKyB,MAAMC,MAAQ/D,KAAKqC,KAAK2B,YAAc,UAChB,IAArB7D,EAAQqD,SACjBxD,KAAKqC,KAAKoB,UAAYzD,KAAK0D,kBAAoBvD,GAE/CH,KAAKqC,KAAKoB,UAAYzD,KAAK0D,kBAC3B1D,KAAKqC,KAAKsB,YAAYxD,KAI1BH,KAAK6D,oBAQPjE,OAAOC,KAAK2E,MAAMK,QAAQ7E,KAAM,kBAClC,EAMAN,EAAQiD,UAAUqG,YAAc,SAAUG,GAExCnJ,KAAKW,UAAYwI,EAEbnJ,KAAKqC,MAEPrC,KAAK4I,OAQPhJ,OAAOC,KAAK2E,MAAMK,QAAQ7E,KAAM,mBAClC,EAMAN,EAAQiD,UAAUsG,UAAY,SAAUG,GAEtCpJ,KAAKc,QAAUsI,EAEXpJ,KAAKqC,OAEPrC,KAAKqC,KAAKyB,MAAM/C,OAASqI,GAQ3BxJ,OAAOC,KAAK2E,MAAMK,QAAQ7E,KAAM,iBAClC,EAMAN,EAAQiD,UAAU0G,WAAa,SAAUC,GAEvCtJ,KAAK8B,WAAawH,EACdtJ,KAAKqC,OACPrC,KAAKqC,KAAKyB,MAAM8D,WAAc5H,KAAK8B,UAAY,SAAW,UAE9D,EAMApC,EAAQiD,UAAU4G,WAAa,WAE7B,OAAOvJ,KAAKE,QACd,EAMAR,EAAQiD,UAAU6G,YAAc,WAE9B,OAAOxJ,KAAKW,SACd,EAMAjB,EAAQiD,UAAU8G,UAAY,WAE5B,OAAOzJ,KAAKc,OACd,EAMApB,EAAQiD,UAAU+G,WAAa,WAS7B,YAL8B,IAAlB1J,KAAKuF,UAAgD,OAAlBvF,KAAKuF,WAGrCvF,KAAK8B,SAGtB,EAMApC,EAAQiD,UAAUgH,SAAW,WAC3B,IAAI5F,EAAQ,KAMZ,OAJI/D,KAAKqC,OACP0B,EAAQ/D,KAAKqC,KAAK2B,aAGbD,CACT,EAMArE,EAAQiD,UAAUiH,UAAY,WAC5B,IAAI9D,EAAS,KAMb,OAJI9F,KAAKqC,OACPyD,EAAS9F,KAAKqC,KAAK4D,cAGdH,CACT,EAKApG,EAAQiD,UAAUkH,KAAO,WAEvB7J,KAAK8B,WAAY,EACb9B,KAAKqC,OACPrC,KAAKqC,KAAKyB,MAAM8D,WAAa,UAEjC,EAKAlI,EAAQiD,UAAUmH,KAAO,WAEvB9J,KAAK8B,WAAY,EACb9B,KAAKqC,OACPrC,KAAKqC,KAAKyB,MAAM8D,WAAa,SAEjC,EAUAlI,EAAQiD,UAAUoH,KAAO,SAAU3E,EAAK4E,GAEtC,IAAIhH,EAAKhD,KAELgK,IAEFhK,KAAKgJ,YAAYgB,EAAOR,eACxBxJ,KAAKuC,cAAgB3C,OAAOC,KAAK2E,MAAMyF,YAAYD,EAAQ,oBAAoB,WAC7EhH,EAAGgG,YAAYhJ,KAAKwJ,cACtB,KAGFxJ,KAAKkK,OAAO9E,GAERpF,KAAKqC,MAEPrC,KAAKqE,QAAQrE,KAAKI,gBAEtB,EAKAV,EAAQiD,UAAUuC,MAAQ,WAExB,IAAIrC,EAQJ,GANI7C,KAAKsC,iBAEP1C,OAAOC,KAAK2E,MAAM0E,eAAelJ,KAAKsC,gBACtCtC,KAAKsC,eAAiB,MAGpBtC,KAAKyC,gBAAiB,CAExB,IAAKI,EAAI,EAAGA,EAAI7C,KAAKyC,gBAAgB6B,OAAQzB,IAE3CjD,OAAOC,KAAK2E,MAAM0E,eAAelJ,KAAKyC,gBAAgBI,IAExD7C,KAAKyC,gBAAkB,IACzB,CAEIzC,KAAKuC,gBAEP3C,OAAOC,KAAK2E,MAAM0E,eAAelJ,KAAKuC,eACtCvC,KAAKuC,cAAgB,MAGnBvC,KAAKwC,mBAEP5C,OAAOC,KAAK2E,MAAM0E,eAAelJ,KAAKwC,kBACtCxC,KAAKwC,iBAAmB,MAG1BxC,KAAKkK,OAAO,KACd","sources":["webpack://disp0001/./src/plugins/infobox/infobox.js"],"sourcesContent":["/**\r\n * @name InfoBox\r\n * @version 1.1.19 [April 6, 2018]\r\n * @author Gary Little (inspired by proof-of-concept code from Pamela Fox of Google)\r\n * @copyright Copyright 2010 Gary Little [gary at luxcentral.com]\r\n * @fileoverview InfoBox extends the Google Maps JavaScript API V3 <tt>OverlayView</tt> class.\r\n *  <p>\r\n *  An InfoBox behaves like a <tt>google.maps.InfoWindow</tt>, but it supports several\r\n *  additional properties for advanced styling. An InfoBox can also be used as a map label.\r\n *  <p>\r\n *  An InfoBox also fires the same events as a <tt>google.maps.InfoWindow</tt>.\r\n */\r\n\r\n/*!\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *       http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*jslint browser:true */\r\n/*global google */\r\n\r\n/**\r\n * @name InfoBoxOptions\r\n * @class This class represents the optional parameter passed to the {@link InfoBox} constructor.\r\n * @property {string|Node} content The content of the InfoBox (plain text or an HTML DOM node).\r\n * @property {boolean} [disableAutoPan=false] Disable auto-pan on <tt>open</tt>.\r\n * @property {number} maxWidth The maximum width (in pixels) of the InfoBox. Set to 0 if no maximum.\r\n * @property {Size} pixelOffset The offset (in pixels) from the top left corner of the InfoBox\r\n *  (or the bottom left corner if the <code>alignBottom</code> property is <code>true</code>)\r\n *  to the map pixel corresponding to <tt>position</tt>.\r\n * @property {LatLng} position The geographic location at which to display the InfoBox.\r\n * @property {number} zIndex The CSS z-index style value for the InfoBox.\r\n *  Note: This value overrides a zIndex setting specified in the <tt>boxStyle</tt> property.\r\n * @property {string} [boxClass=\"infoBox\"] The name of the CSS class defining the styles for the InfoBox container.\r\n * @property {Object} [boxStyle] An object literal whose properties define specific CSS\r\n *  style values to be applied to the InfoBox. Style values defined here override those that may\r\n *  be defined in the <code>boxClass</code> style sheet. If this property is changed after the\r\n *  InfoBox has been created, all previously set styles (except those defined in the style sheet)\r\n *  are removed from the InfoBox before the new style values are applied.\r\n * @property {string} closeBoxMargin The CSS margin style value for the close box.\r\n *  The default is \"2px\" (a 2-pixel margin on all sides).\r\n * @property {string} closeBoxTitle The tool tip for the close box. The default is \" Close \".\r\n * @property {string} closeBoxURL The URL of the image representing the close box.\r\n *  Note: The default is the URL for Google's standard close box.\r\n *  Set this property to \"\" if no close box is required.\r\n * @property {Size} infoBoxClearance Minimum offset (in pixels) from the InfoBox to the\r\n *  map edge after an auto-pan.\r\n * @property {boolean} [isHidden=false] Hide the InfoBox on <tt>open</tt>.\r\n *  [Deprecated in favor of the <tt>visible</tt> property.]\r\n * @property {boolean} [visible=true] Show the InfoBox on <tt>open</tt>.\r\n * @property {boolean} alignBottom Align the bottom left corner of the InfoBox to the <code>position</code>\r\n *  location (default is <tt>false</tt> which means that the top left corner of the InfoBox is aligned).\r\n * @property {string} pane The pane where the InfoBox is to appear (default is \"floatPane\").\r\n *  Set the pane to \"mapPane\" if the InfoBox is being used as a map label.\r\n *  Valid pane names are the property names for the <tt>google.maps.MapPanes</tt> object.\r\n * @property {boolean} enableEventPropagation Propagate mousedown, mousemove, mouseover, mouseout,\r\n *  mouseup, click, dblclick, touchstart, touchend, touchmove, and contextmenu events in the InfoBox\r\n *  (default is <tt>false</tt> to mimic the behavior of a <tt>google.maps.InfoWindow</tt>). Set\r\n *  this property to <tt>true</tt> if the InfoBox is being used as a map label.\r\n */\r\n\r\n/**\r\n * Creates an InfoBox with the options specified in {@link InfoBoxOptions}.\r\n *  Call <tt>InfoBox.open</tt> to add the box to the map.\r\n * @constructor\r\n * @param {InfoBoxOptions} [opt_opts]\r\n */\r\nexport default function InfoBox(opt_opts) {\r\n\r\n  opt_opts = opt_opts || {};\r\n\r\n  google.maps.OverlayView.apply(this, arguments);\r\n\r\n  // Standard options (in common with google.maps.InfoWindow):\r\n  //\r\n  this.content_ = opt_opts.content || \"\";\r\n  this.disableAutoPan_ = opt_opts.disableAutoPan || false;\r\n  this.maxWidth_ = opt_opts.maxWidth || 0;\r\n  this.pixelOffset_ = opt_opts.pixelOffset || new google.maps.Size(0, 0);\r\n  this.position_ = opt_opts.position || new google.maps.LatLng(0, 0);\r\n  this.zIndex_ = opt_opts.zIndex || null;\r\n\r\n  // Additional options (unique to InfoBox):\r\n  //\r\n  this.boxClass_ = opt_opts.boxClass || \"infoBox\";\r\n  this.boxStyle_ = opt_opts.boxStyle || {};\r\n  this.closeBoxMargin_ = opt_opts.closeBoxMargin || \"2px\";\r\n  this.closeBoxURL_ = opt_opts.closeBoxURL || \"//www.google.com/intl/en_us/mapfiles/close.gif\";\r\n  if (opt_opts.closeBoxURL === \"\") {\r\n    this.closeBoxURL_ = \"\";\r\n  }\r\n  this.closeBoxTitle_ = opt_opts.closeBoxTitle || \" Close \";\r\n  this.infoBoxClearance_ = opt_opts.infoBoxClearance || new google.maps.Size(1, 1);\r\n\r\n  if (typeof opt_opts.visible === \"undefined\") {\r\n    if (typeof opt_opts.isHidden === \"undefined\") {\r\n      opt_opts.visible = true;\r\n    } else {\r\n      opt_opts.visible = !opt_opts.isHidden;\r\n    }\r\n  }\r\n  this.isHidden_ = !opt_opts.visible;\r\n\r\n  this.alignBottom_ = opt_opts.alignBottom || false;\r\n  this.pane_ = opt_opts.pane || \"floatPane\";\r\n  this.enableEventPropagation_ = opt_opts.enableEventPropagation || false;\r\n\r\n  this.div_ = null;\r\n  this.closeListener_ = null;\r\n  this.moveListener_ = null;\r\n  this.contextListener_ = null;\r\n  this.eventListeners_ = null;\r\n  this.fixedWidthSet_ = null;\r\n}\r\n\r\n/* InfoBox extends OverlayView in the Google Maps API v3.\r\n */\r\nInfoBox.prototype = new google.maps.OverlayView();\r\n\r\n/**\r\n * Creates the DIV representing the InfoBox.\r\n * @private\r\n */\r\nInfoBox.prototype.createInfoBoxDiv_ = function () {\r\n\r\n  var i;\r\n  var events;\r\n  var bw;\r\n  var me = this;\r\n\r\n  // This handler prevents an event in the InfoBox from being passed on to the map.\r\n  //\r\n  var cancelHandler = function (e) {\r\n    e.cancelBubble = true;\r\n    if (e.stopPropagation) {\r\n      e.stopPropagation();\r\n    }\r\n  };\r\n\r\n  // This handler ignores the current event in the InfoBox and conditionally prevents\r\n  // the event from being passed on to the map. It is used for the contextmenu event.\r\n  //\r\n  var ignoreHandler = function (e) {\r\n\r\n    e.returnValue = false;\r\n\r\n    if (e.preventDefault) {\r\n\r\n      e.preventDefault();\r\n    }\r\n\r\n    if (!me.enableEventPropagation_) {\r\n\r\n      cancelHandler(e);\r\n    }\r\n  };\r\n\r\n  if (!this.div_) {\r\n\r\n    this.div_ = document.createElement(\"div\");\r\n\r\n    this.setBoxStyle_();\r\n\r\n    if (typeof this.content_.nodeType === \"undefined\") {\r\n      this.div_.innerHTML = this.getCloseBoxImg_() + this.content_;\r\n    } else {\r\n      this.div_.innerHTML = this.getCloseBoxImg_();\r\n      this.div_.appendChild(this.content_);\r\n    }\r\n\r\n    // Add the InfoBox DIV to the DOM\r\n    this.getPanes()[this.pane_].appendChild(this.div_);\r\n\r\n    this.addClickHandler_();\r\n\r\n    if (this.div_.style.width) {\r\n\r\n      this.fixedWidthSet_ = true;\r\n\r\n    } else {\r\n\r\n      if (this.maxWidth_ !== 0 && this.div_.offsetWidth > this.maxWidth_) {\r\n\r\n        this.div_.style.width = this.maxWidth_;\r\n        this.div_.style.overflow = \"auto\";\r\n        this.fixedWidthSet_ = true;\r\n\r\n      } else { // The following code is needed to overcome problems with MSIE\r\n\r\n        bw = this.getBoxWidths_();\r\n\r\n        this.div_.style.width = (this.div_.offsetWidth - bw.left - bw.right) + \"px\";\r\n        this.fixedWidthSet_ = false;\r\n      }\r\n    }\r\n\r\n    this.panBox_(this.disableAutoPan_);\r\n\r\n    if (!this.enableEventPropagation_) {\r\n\r\n      this.eventListeners_ = [];\r\n\r\n      // Cancel event propagation.\r\n      //\r\n      // Note: mousemove not included (to resolve Issue 152)\r\n      events = [\"mousedown\", \"mouseover\", \"mouseout\", \"mouseup\",\r\n        \"click\", \"dblclick\", \"touchstart\", \"touchend\", \"touchmove\"];\r\n\r\n      for (i = 0; i < events.length; i++) {\r\n\r\n        this.eventListeners_.push(google.maps.event.addDomListener(this.div_, events[i], cancelHandler));\r\n      }\r\n\r\n      // Workaround for Google bug that causes the cursor to change to a pointer\r\n      // when the mouse moves over a marker underneath InfoBox.\r\n      this.eventListeners_.push(google.maps.event.addDomListener(this.div_, \"mouseover\", function (e) {\r\n        this.style.cursor = \"default\";\r\n      }));\r\n    }\r\n\r\n    this.contextListener_ = google.maps.event.addDomListener(this.div_, \"contextmenu\", ignoreHandler);\r\n\r\n    /**\r\n     * This event is fired when the DIV containing the InfoBox's content is attached to the DOM.\r\n     * @name InfoBox#domready\r\n     * @event\r\n     */\r\n    google.maps.event.trigger(this, \"domready\");\r\n  }\r\n};\r\n\r\n/**\r\n * Returns the HTML <IMG> tag for the close box.\r\n * @private\r\n */\r\nInfoBox.prototype.getCloseBoxImg_ = function () {\r\n\r\n  var img = \"\";\r\n\r\n  if (this.closeBoxURL_ !== \"\") {\r\n\r\n    img  = \"<img\";\r\n    img += \" src='\" + this.closeBoxURL_ + \"'\";\r\n    img += \" align=right\"; // Do this because Opera chokes on style='float: right;'\r\n    img += \" title='\" + this.closeBoxTitle_ + \"'\";\r\n    img += \" style='\";\r\n    img += \" position: relative;\"; // Required by MSIE\r\n    img += \" cursor: pointer;\";\r\n    img += \" margin: \" + this.closeBoxMargin_ + \";\";\r\n    img += \"'>\";\r\n  }\r\n\r\n  return img;\r\n};\r\n\r\n/**\r\n * Adds the click handler to the InfoBox close box.\r\n * @private\r\n */\r\nInfoBox.prototype.addClickHandler_ = function () {\r\n\r\n  var closeBox;\r\n\r\n  if (this.closeBoxURL_ !== \"\") {\r\n\r\n    closeBox = this.div_.firstChild;\r\n    this.closeListener_ = google.maps.event.addDomListener(closeBox, \"click\", this.getCloseClickHandler_());\r\n\r\n  } else {\r\n\r\n    this.closeListener_ = null;\r\n  }\r\n};\r\n\r\n/**\r\n * Returns the function to call when the user clicks the close box of an InfoBox.\r\n * @private\r\n */\r\nInfoBox.prototype.getCloseClickHandler_ = function () {\r\n\r\n  var me = this;\r\n\r\n  return function (e) {\r\n\r\n    // 1.0.3 fix: Always prevent propagation of a close box click to the map:\r\n    e.cancelBubble = true;\r\n\r\n    if (e.stopPropagation) {\r\n\r\n      e.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * This event is fired when the InfoBox's close box is clicked.\r\n     * @name InfoBox#closeclick\r\n     * @event\r\n     */\r\n    google.maps.event.trigger(me, \"closeclick\");\r\n\r\n    me.close();\r\n  };\r\n};\r\n\r\n/**\r\n * Pans the map so that the InfoBox appears entirely within the map's visible area.\r\n * @private\r\n */\r\nInfoBox.prototype.panBox_ = function (disablePan) {\r\n\r\n  var map;\r\n  var bounds;\r\n  var xOffset = 0, yOffset = 0;\r\n\r\n  if (!disablePan) {\r\n\r\n    map = this.getMap();\r\n\r\n    if (map instanceof google.maps.Map) { // Only pan if attached to map, not panorama\r\n\r\n      if (!map.getBounds().contains(this.position_)) {\r\n        // Marker not in visible area of map, so set center\r\n        // of map to the marker position first.\r\n        map.setCenter(this.position_);\r\n      }\r\n\r\n      var iwOffsetX = this.pixelOffset_.width;\r\n      var iwOffsetY = this.pixelOffset_.height;\r\n      var iwWidth = this.div_.offsetWidth;\r\n      var iwHeight = this.div_.offsetHeight;\r\n      var padX = this.infoBoxClearance_.width;\r\n      var padY = this.infoBoxClearance_.height;\r\n\r\n      if (map.panToBounds.length == 2) {\r\n        // Using projection.fromLatLngToContainerPixel to compute the infowindow position\r\n        // does not work correctly anymore for JS Maps API v3.32 and above if there is a\r\n        // previous synchronous call that causes the map to animate (e.g. setCenter when\r\n        // the position is not within bounds). Hence, we are using panToBounds with\r\n        // padding instead, which works synchronously.\r\n        var padding = {left: 0, right: 0, top: 0, bottom: 0};\r\n        padding.left = -iwOffsetX + padX;\r\n        padding.right = iwOffsetX + iwWidth + padX;\r\n        if (this.alignBottom_) {\r\n          padding.top = -iwOffsetY + padY + iwHeight;\r\n          padding.bottom = iwOffsetY + padY;\r\n        } else {\r\n          padding.top = -iwOffsetY + padY;\r\n          padding.bottom = iwOffsetY + iwHeight + padY;\r\n        }\r\n        map.panToBounds(new google.maps.LatLngBounds(this.position_), padding);\r\n      } else {\r\n        var mapDiv = map.getDiv();\r\n        var mapWidth = mapDiv.offsetWidth;\r\n        var mapHeight = mapDiv.offsetHeight;\r\n        var pixPosition = this.getProjection().fromLatLngToContainerPixel(this.position_);\r\n\r\n        if (pixPosition.x < (-iwOffsetX + padX)) {\r\n          xOffset = pixPosition.x + iwOffsetX - padX;\r\n        } else if ((pixPosition.x + iwWidth + iwOffsetX + padX) > mapWidth) {\r\n          xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth;\r\n        }\r\n        if (this.alignBottom_) {\r\n          if (pixPosition.y < (-iwOffsetY + padY + iwHeight)) {\r\n            yOffset = pixPosition.y + iwOffsetY - padY - iwHeight;\r\n          } else if ((pixPosition.y + iwOffsetY + padY) > mapHeight) {\r\n            yOffset = pixPosition.y + iwOffsetY + padY - mapHeight;\r\n          }\r\n        } else {\r\n          if (pixPosition.y < (-iwOffsetY + padY)) {\r\n            yOffset = pixPosition.y + iwOffsetY - padY;\r\n          } else if ((pixPosition.y + iwHeight + iwOffsetY + padY) > mapHeight) {\r\n            yOffset = pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight;\r\n          }\r\n        }\r\n\r\n        if (!(xOffset === 0 && yOffset === 0)) {\r\n\r\n          // Move the map to the shifted center.\r\n          //\r\n          var c = map.getCenter();\r\n          map.panBy(xOffset, yOffset);\r\n        }\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * Sets the style of the InfoBox by setting the style sheet and applying\r\n * other specific styles requested.\r\n * @private\r\n */\r\nInfoBox.prototype.setBoxStyle_ = function () {\r\n\r\n  var i, boxStyle;\r\n\r\n  if (this.div_) {\r\n\r\n    // Apply style values from the style sheet defined in the boxClass parameter:\r\n    this.div_.className = this.boxClass_;\r\n\r\n    // Clear existing inline style values:\r\n    this.div_.style.cssText = \"\";\r\n\r\n    // Apply style values defined in the boxStyle parameter:\r\n    boxStyle = this.boxStyle_;\r\n    for (i in boxStyle) {\r\n\r\n      if (boxStyle.hasOwnProperty(i)) {\r\n\r\n        this.div_.style[i] = boxStyle[i];\r\n      }\r\n    }\r\n\r\n    // Fix for iOS disappearing InfoBox problem.\r\n    // See http://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad\r\n    // Required: use \"matrix\" technique to specify transforms in order to avoid this bug.\r\n    if ((typeof this.div_.style.WebkitTransform === \"undefined\") || (this.div_.style.WebkitTransform.indexOf(\"translateZ\") === -1 && this.div_.style.WebkitTransform.indexOf(\"matrix\") === -1)) {\r\n\r\n      this.div_.style.WebkitTransform = \"translateZ(0)\";\r\n    }\r\n\r\n    // Fix up opacity style for benefit of MSIE:\r\n    //\r\n    if (typeof this.div_.style.opacity !== \"undefined\" && this.div_.style.opacity !== \"\") {\r\n      // See http://www.quirksmode.org/css/opacity.html\r\n      this.div_.style.MsFilter = \"\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=\" + (this.div_.style.opacity * 100) + \")\\\"\";\r\n      this.div_.style.filter = \"alpha(opacity=\" + (this.div_.style.opacity * 100) + \")\";\r\n    }\r\n\r\n    // Apply required styles:\r\n    //\r\n    this.div_.style.position = \"absolute\";\r\n    this.div_.style.visibility = 'hidden';\r\n    if (this.zIndex_ !== null) {\r\n\r\n      this.div_.style.zIndex = this.zIndex_;\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * Get the widths of the borders of the InfoBox.\r\n * @private\r\n * @return {Object} widths object (top, bottom left, right)\r\n */\r\nInfoBox.prototype.getBoxWidths_ = function () {\r\n\r\n  var computedStyle;\r\n  var bw = {top: 0, bottom: 0, left: 0, right: 0};\r\n  var box = this.div_;\r\n\r\n  if (document.defaultView && document.defaultView.getComputedStyle) {\r\n\r\n    computedStyle = box.ownerDocument.defaultView.getComputedStyle(box, \"\");\r\n\r\n    if (computedStyle) {\r\n\r\n      // The computed styles are always in pixel units (good!)\r\n      bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0;\r\n      bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\r\n      bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0;\r\n      bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0;\r\n    }\r\n\r\n  } else if (document.documentElement.currentStyle) { // MSIE\r\n\r\n    if (box.currentStyle) {\r\n\r\n      // The current styles may not be in pixel units, but assume they are (bad!)\r\n      bw.top = parseInt(box.currentStyle.borderTopWidth, 10) || 0;\r\n      bw.bottom = parseInt(box.currentStyle.borderBottomWidth, 10) || 0;\r\n      bw.left = parseInt(box.currentStyle.borderLeftWidth, 10) || 0;\r\n      bw.right = parseInt(box.currentStyle.borderRightWidth, 10) || 0;\r\n    }\r\n  }\r\n\r\n  return bw;\r\n};\r\n\r\n/**\r\n * Invoked when <tt>close</tt> is called. Do not call it directly.\r\n */\r\nInfoBox.prototype.onRemove = function () {\r\n\r\n  if (this.div_) {\r\n\r\n    this.div_.parentNode.removeChild(this.div_);\r\n    this.div_ = null;\r\n  }\r\n};\r\n\r\n/**\r\n * Draws the InfoBox based on the current map projection and zoom level.\r\n */\r\nInfoBox.prototype.draw = function () {\r\n\r\n  this.createInfoBoxDiv_();\r\n\r\n  var pixPosition = this.getProjection().fromLatLngToDivPixel(this.position_);\r\n\r\n  this.div_.style.left = (pixPosition.x + this.pixelOffset_.width) + \"px\";\r\n\r\n  if (this.alignBottom_) {\r\n    this.div_.style.bottom = -(pixPosition.y + this.pixelOffset_.height) + \"px\";\r\n  } else {\r\n    this.div_.style.top = (pixPosition.y + this.pixelOffset_.height) + \"px\";\r\n  }\r\n\r\n  if (this.isHidden_) {\r\n\r\n    this.div_.style.visibility = \"hidden\";\r\n\r\n  } else {\r\n\r\n    this.div_.style.visibility = \"visible\";\r\n  }\r\n};\r\n\r\n/**\r\n * Sets the options for the InfoBox. Note that changes to the <tt>maxWidth</tt>,\r\n *  <tt>closeBoxMargin</tt>, <tt>closeBoxTitle</tt>, <tt>closeBoxURL</tt>, and\r\n *  <tt>enableEventPropagation</tt> properties have no affect until the current\r\n *  InfoBox is <tt>close</tt>d and a new one is <tt>open</tt>ed.\r\n * @param {InfoBoxOptions} opt_opts\r\n */\r\nInfoBox.prototype.setOptions = function (opt_opts) {\r\n  if (typeof opt_opts.boxClass !== \"undefined\") { // Must be first\r\n\r\n    this.boxClass_ = opt_opts.boxClass;\r\n    this.setBoxStyle_();\r\n  }\r\n  if (typeof opt_opts.boxStyle !== \"undefined\") { // Must be second\r\n\r\n    this.boxStyle_ = opt_opts.boxStyle;\r\n    this.setBoxStyle_();\r\n  }\r\n  if (typeof opt_opts.content !== \"undefined\") {\r\n\r\n    this.setContent(opt_opts.content);\r\n  }\r\n  if (typeof opt_opts.disableAutoPan !== \"undefined\") {\r\n\r\n    this.disableAutoPan_ = opt_opts.disableAutoPan;\r\n  }\r\n  if (typeof opt_opts.maxWidth !== \"undefined\") {\r\n\r\n    this.maxWidth_ = opt_opts.maxWidth;\r\n  }\r\n  if (typeof opt_opts.pixelOffset !== \"undefined\") {\r\n\r\n    this.pixelOffset_ = opt_opts.pixelOffset;\r\n  }\r\n  if (typeof opt_opts.alignBottom !== \"undefined\") {\r\n\r\n    this.alignBottom_ = opt_opts.alignBottom;\r\n  }\r\n  if (typeof opt_opts.position !== \"undefined\") {\r\n\r\n    this.setPosition(opt_opts.position);\r\n  }\r\n  if (typeof opt_opts.zIndex !== \"undefined\") {\r\n\r\n    this.setZIndex(opt_opts.zIndex);\r\n  }\r\n  if (typeof opt_opts.closeBoxMargin !== \"undefined\") {\r\n\r\n    this.closeBoxMargin_ = opt_opts.closeBoxMargin;\r\n  }\r\n  if (typeof opt_opts.closeBoxURL !== \"undefined\") {\r\n\r\n    this.closeBoxURL_ = opt_opts.closeBoxURL;\r\n  }\r\n  if (typeof opt_opts.closeBoxTitle !== \"undefined\") {\r\n\r\n    this.closeBoxTitle_ = opt_opts.closeBoxTitle;\r\n  }\r\n  if (typeof opt_opts.infoBoxClearance !== \"undefined\") {\r\n\r\n    this.infoBoxClearance_ = opt_opts.infoBoxClearance;\r\n  }\r\n  if (typeof opt_opts.isHidden !== \"undefined\") {\r\n\r\n    this.isHidden_ = opt_opts.isHidden;\r\n  }\r\n  if (typeof opt_opts.visible !== \"undefined\") {\r\n\r\n    this.isHidden_ = !opt_opts.visible;\r\n  }\r\n  if (typeof opt_opts.enableEventPropagation !== \"undefined\") {\r\n\r\n    this.enableEventPropagation_ = opt_opts.enableEventPropagation;\r\n  }\r\n\r\n  if (this.div_) {\r\n\r\n    this.draw();\r\n  }\r\n};\r\n\r\n/**\r\n * Sets the content of the InfoBox.\r\n *  The content can be plain text or an HTML DOM node.\r\n * @param {string|Node} content\r\n */\r\nInfoBox.prototype.setContent = function (content) {\r\n  this.content_ = content;\r\n\r\n  if (this.div_) {\r\n\r\n    if (this.closeListener_) {\r\n\r\n      google.maps.event.removeListener(this.closeListener_);\r\n      this.closeListener_ = null;\r\n    }\r\n\r\n    // Odd code required to make things work with MSIE.\r\n    //\r\n    if (!this.fixedWidthSet_) {\r\n\r\n      this.div_.style.width = \"\";\r\n    }\r\n\r\n    if (typeof content.nodeType === \"undefined\") {\r\n      this.div_.innerHTML = this.getCloseBoxImg_() + content;\r\n    } else {\r\n      this.div_.innerHTML = this.getCloseBoxImg_();\r\n      this.div_.appendChild(content);\r\n    }\r\n\r\n    // Perverse code required to make things work with MSIE.\r\n    // (Ensures the close box does, in fact, float to the right.)\r\n    //\r\n    if (!this.fixedWidthSet_) {\r\n      this.div_.style.width = this.div_.offsetWidth + \"px\";\r\n      if (typeof content.nodeType === \"undefined\") {\r\n        this.div_.innerHTML = this.getCloseBoxImg_() + content;\r\n      } else {\r\n        this.div_.innerHTML = this.getCloseBoxImg_();\r\n        this.div_.appendChild(content);\r\n      }\r\n    }\r\n\r\n    this.addClickHandler_();\r\n  }\r\n\r\n  /**\r\n   * This event is fired when the content of the InfoBox changes.\r\n   * @name InfoBox#content_changed\r\n   * @event\r\n   */\r\n  google.maps.event.trigger(this, \"content_changed\");\r\n};\r\n\r\n/**\r\n * Sets the geographic location of the InfoBox.\r\n * @param {LatLng} latlng\r\n */\r\nInfoBox.prototype.setPosition = function (latlng) {\r\n\r\n  this.position_ = latlng;\r\n\r\n  if (this.div_) {\r\n\r\n    this.draw();\r\n  }\r\n\r\n  /**\r\n   * This event is fired when the position of the InfoBox changes.\r\n   * @name InfoBox#position_changed\r\n   * @event\r\n   */\r\n  google.maps.event.trigger(this, \"position_changed\");\r\n};\r\n\r\n/**\r\n * Sets the zIndex style for the InfoBox.\r\n * @param {number} index\r\n */\r\nInfoBox.prototype.setZIndex = function (index) {\r\n\r\n  this.zIndex_ = index;\r\n\r\n  if (this.div_) {\r\n\r\n    this.div_.style.zIndex = index;\r\n  }\r\n\r\n  /**\r\n   * This event is fired when the zIndex of the InfoBox changes.\r\n   * @name InfoBox#zindex_changed\r\n   * @event\r\n   */\r\n  google.maps.event.trigger(this, \"zindex_changed\");\r\n};\r\n\r\n/**\r\n * Sets the visibility of the InfoBox.\r\n * @param {boolean} isVisible\r\n */\r\nInfoBox.prototype.setVisible = function (isVisible) {\r\n\r\n  this.isHidden_ = !isVisible;\r\n  if (this.div_) {\r\n    this.div_.style.visibility = (this.isHidden_ ? \"hidden\" : \"visible\");\r\n  }\r\n};\r\n\r\n/**\r\n * Returns the content of the InfoBox.\r\n * @returns {string}\r\n */\r\nInfoBox.prototype.getContent = function () {\r\n\r\n  return this.content_;\r\n};\r\n\r\n/**\r\n * Returns the geographic location of the InfoBox.\r\n * @returns {LatLng}\r\n */\r\nInfoBox.prototype.getPosition = function () {\r\n\r\n  return this.position_;\r\n};\r\n\r\n/**\r\n * Returns the zIndex for the InfoBox.\r\n * @returns {number}\r\n */\r\nInfoBox.prototype.getZIndex = function () {\r\n\r\n  return this.zIndex_;\r\n};\r\n\r\n/**\r\n * Returns a flag indicating whether the InfoBox is visible.\r\n * @returns {boolean}\r\n */\r\nInfoBox.prototype.getVisible = function () {\r\n\r\n  var isVisible;\r\n\r\n  if ((typeof this.getMap() === \"undefined\") || (this.getMap() === null)) {\r\n    isVisible = false;\r\n  } else {\r\n    isVisible = !this.isHidden_;\r\n  }\r\n  return isVisible;\r\n};\r\n\r\n/**\r\n * Returns the width of the InfoBox in pixels.\r\n * @returns {number}\r\n */\r\nInfoBox.prototype.getWidth = function () {\r\n  var width = null;\r\n\r\n  if (this.div_) {\r\n    width = this.div_.offsetWidth;\r\n  }\r\n\r\n  return width;\r\n};\r\n\r\n/**\r\n * Returns the height of the InfoBox in pixels.\r\n * @returns {number}\r\n */\r\nInfoBox.prototype.getHeight = function () {\r\n  var height = null;\r\n\r\n  if (this.div_) {\r\n    height = this.div_.offsetHeight;\r\n  }\r\n\r\n  return height;\r\n};\r\n\r\n/**\r\n * Shows the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.]\r\n */\r\nInfoBox.prototype.show = function () {\r\n\r\n  this.isHidden_ = false;\r\n  if (this.div_) {\r\n    this.div_.style.visibility = \"visible\";\r\n  }\r\n};\r\n\r\n/**\r\n * Hides the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.]\r\n */\r\nInfoBox.prototype.hide = function () {\r\n\r\n  this.isHidden_ = true;\r\n  if (this.div_) {\r\n    this.div_.style.visibility = \"hidden\";\r\n  }\r\n};\r\n\r\n/**\r\n * Adds the InfoBox to the specified map or Street View panorama. If <tt>anchor</tt>\r\n *  (usually a <tt>google.maps.Marker</tt>) is specified, the position\r\n *  of the InfoBox is set to the position of the <tt>anchor</tt>. If the\r\n *  anchor is dragged to a new location, the InfoBox moves as well.\r\n * @param {Map|StreetViewPanorama} map\r\n * @param {MVCObject} [anchor]\r\n */\r\nInfoBox.prototype.open = function (map, anchor) {\r\n\r\n  var me = this;\r\n\r\n  if (anchor) {\r\n\r\n    this.setPosition(anchor.getPosition()); // BUG FIX 2/17/2018: needed for v3.32\r\n    this.moveListener_ = google.maps.event.addListener(anchor, \"position_changed\", function () {\r\n      me.setPosition(this.getPosition());\r\n    });\r\n  }\r\n\r\n  this.setMap(map);\r\n\r\n  if (this.div_) {\r\n\r\n    this.panBox_(this.disableAutoPan_); // BUG FIX 2/17/2018: add missing parameter\r\n  }\r\n};\r\n\r\n/**\r\n * Removes the InfoBox from the map.\r\n */\r\nInfoBox.prototype.close = function () {\r\n\r\n  var i;\r\n\r\n  if (this.closeListener_) {\r\n\r\n    google.maps.event.removeListener(this.closeListener_);\r\n    this.closeListener_ = null;\r\n  }\r\n\r\n  if (this.eventListeners_) {\r\n\r\n    for (i = 0; i < this.eventListeners_.length; i++) {\r\n\r\n      google.maps.event.removeListener(this.eventListeners_[i]);\r\n    }\r\n    this.eventListeners_ = null;\r\n  }\r\n\r\n  if (this.moveListener_) {\r\n\r\n    google.maps.event.removeListener(this.moveListener_);\r\n    this.moveListener_ = null;\r\n  }\r\n\r\n  if (this.contextListener_) {\r\n\r\n    google.maps.event.removeListener(this.contextListener_);\r\n    this.contextListener_ = null;\r\n  }\r\n\r\n  this.setMap(null);\r\n};\r\n"],"names":["InfoBox","opt_opts","google","maps","OverlayView","apply","this","arguments","content_","content","disableAutoPan_","disableAutoPan","maxWidth_","maxWidth","pixelOffset_","pixelOffset","Size","position_","position","LatLng","zIndex_","zIndex","boxClass_","boxClass","boxStyle_","boxStyle","closeBoxMargin_","closeBoxMargin","closeBoxURL_","closeBoxURL","closeBoxTitle_","closeBoxTitle","infoBoxClearance_","infoBoxClearance","visible","isHidden","isHidden_","alignBottom_","alignBottom","pane_","pane","enableEventPropagation_","enableEventPropagation","div_","closeListener_","moveListener_","contextListener_","eventListeners_","fixedWidthSet_","prototype","createInfoBoxDiv_","i","events","bw","me","cancelHandler","e","cancelBubble","stopPropagation","document","createElement","setBoxStyle_","nodeType","innerHTML","getCloseBoxImg_","appendChild","getPanes","addClickHandler_","style","width","offsetWidth","overflow","getBoxWidths_","left","right","panBox_","length","push","event","addDomListener","cursor","returnValue","preventDefault","trigger","img","closeBox","firstChild","getCloseClickHandler_","close","disablePan","map","xOffset","yOffset","getMap","Map","getBounds","contains","setCenter","iwOffsetX","iwOffsetY","height","iwWidth","iwHeight","offsetHeight","padX","padY","panToBounds","padding","top","bottom","LatLngBounds","mapDiv","getDiv","mapWidth","mapHeight","pixPosition","getProjection","fromLatLngToContainerPixel","x","y","getCenter","panBy","className","cssText","hasOwnProperty","WebkitTransform","indexOf","opacity","MsFilter","filter","visibility","computedStyle","box","defaultView","getComputedStyle","ownerDocument","parseInt","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","documentElement","currentStyle","onRemove","parentNode","removeChild","draw","fromLatLngToDivPixel","setOptions","setContent","setPosition","setZIndex","removeListener","latlng","index","setVisible","isVisible","getContent","getPosition","getZIndex","getVisible","getWidth","getHeight","show","hide","open","anchor","addListener","setMap"],"sourceRoot":""}