{"version":3,"sources":["../src/shared/campaign-detail-overlay.ts","../src/web-component.ts"],"names":["_a","_b"],"mappings":";AAqCA,IAAM,YAAA,GAAe,gCAAA;AACrB,IAAM,aAAA,GAAgB,iCAAA;AAEtB,IAAM,KAAA,uBAAY,GAAA,EAAiB;AACnC,IAAI,gBAAA,GAAmB,KAAA;AACvB,IAAI,MAAA,GAA+B,IAAA;AAEnC,SAAS,SAAS,GAAA,EAA4B;AAC5C,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,GAAA,CAAI,GAAG,CAAA,CAAE,MAAA;AAAA,EACtB,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEA,SAAS,iBACP,MAAA,EACoB;AACpB,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,MAAA,GAAS,KAAK,cAAA,EAAe;AACnC,IAAA,IAAI,MAAA,IAAU,MAAA,CAAO,aAAA,KAAkB,MAAA,EAAQ,OAAO,IAAA;AAAA,EACxD;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,IAAA,CAAK,MAAmB,EAAA,EAAkB;AA/DnD,EAAA,IAAA,EAAA,EAAA,EAAA;AAgEE,EAAA,KAAA,EAAM;AAEN,EAAA,MAAM,OAAA,GAAU,KAAK,OAAA,EAAQ;AAC7B,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,aAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAA0B,OAAA;AAExC,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC9C,EAAA,SAAA,CAAU,YAAA,CAAa,uBAAuB,iBAAiB,CAAA;AAC/D,EAAA,MAAA,CAAO,MAAA,CAAO,UAAU,KAAA,EAAO;AAAA,IAC7B,QAAA,EAAU,OAAA;AAAA,IACV,KAAA,EAAO,GAAA;AAAA,IACP,UAAA,EAAY,iBAAA;AAAA,IACZ,cAAA,EAAgB,WAAA;AAAA,IAChB,oBAAA,EAAsB,WAAA;AAAA,IACtB,MAAA,EAAQ,YAAA;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACa,CAAA;AAExB,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC9C,EAAA,MAAA,CAAO,MAAA,CAAO,UAAU,KAAA,EAAO;AAAA,IAC7B,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,SAAA,EAAW,MAAA;AAAA,IACX,UAAA,EAAY,aAAA;AAAA,IACZ,YAAA,EAAc,MAAA;AAAA,IACd,QAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACW,CAAA;AAExB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAChD,EAAA,MAAM,MAAM,IAAI,GAAA;AAAA,IACd,CAAA,wBAAA,EAA2B,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAA;AAAA,IACjD;AAAA,GACF;AACA,EAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AACnC,EAAA,QAAA,CAAS,GAAA,GAAM,IAAI,QAAA,EAAS;AAC5B,EAAA,QAAA,CAAS,KAAA,GAAQ,iBAAA;AACjB,EAAA,QAAA,CAAS,WAAA,GAAc,GAAA;AACvB,EAAA,QAAA,CAAS,SAAA,GAAY,MAAA;AACrB,EAAA,MAAA,CAAO,MAAA,CAAO,SAAS,KAAA,EAAO;AAAA,IAC5B,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,MAAA;AAAA,IACR,UAAA,EAAY,aAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACa,CAAA;AAExB,EAAA,QAAA,CAAS,gBAAA,CAAiB,QAAQ,MAAM;AAlH1C,IAAA,IAAAA,GAAAA,EAAAC,GAAAA;AAmHI,IAAA,MAAM,KAAA,GAAA,CAAQA,OAAAD,GAAAA,GAAA,IAAA,CAAK,kBAAL,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,sBAAAC,GAAAA,GAA0B,IAAA;AACxC,IAAA,IAAI,CAAC,SAAS,aAAA,EAAe;AAC7B,IAAA,IAAI;AACF,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,QAAA,CAAS,aAAA,CAAc,WAAA;AAAA,UACrB,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,OAAO,KAAA,EAAM;AAAA,UACvC;AAAA,SACF;AACA,QAAA,QAAA,CAAS,aAAA,CAAc,WAAA;AAAA,UACrB,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAM;AAAA,UAC5B;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA,CAAA,OAAQ,CAAA,EAAA;AAAA,IAER;AAAA,EACF,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,YAAY,QAAQ,CAAA;AAC9B,EAAA,SAAA,CAAU,YAAY,SAAS,CAAA;AAC/B,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,SAAS,CAAA;AAEnC,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA;AACzC,EAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAE/B,EAAA,SAAA,CAAU,gBAAA,CAAiB,OAAA,EAAS,CAAC,CAAA,KAAM;AACzC,IAAA,IAAI,CAAA,CAAE,MAAA,KAAW,SAAA,EAAW,KAAA,EAAM;AAAA,EACpC,CAAC,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAqB;AAClC,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,KAAA,EAAM;AAAA,EAChC,CAAA;AACA,EAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,KAAK,CAAA;AAE1C,EAAA,MAAA,GAAS;AAAA,IACP,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,KAAA,GAAc;AAC5B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACb,EAAA,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,MAAA,CAAO,KAAK,CAAA;AACpD,EAAA,IAAI,MAAA,CAAO,UAAU,UAAA,EAAY;AAC/B,IAAA,MAAA,CAAO,SAAA,CAAU,UAAA,CAAW,WAAA,CAAY,MAAA,CAAO,SAAS,CAAA;AAAA,EAC1D;AACA,EAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,MAAA,CAAO,YAAA;AACtC,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,MAAA,GAAS,IAAA;AACT,EAAA,MAAA,CAAO,KAAK,OAAA,CAAQ,aAAA;AAAA,IAClB,IAAI,YAAY,uBAAA,EAAyB;AAAA,MACvC,MAAA,EAAQ,EAAE,EAAA,EAAI,MAAA,CAAO,EAAA,EAAG;AAAA,MACxB,OAAA,EAAS,IAAA;AAAA,MACT,QAAA,EAAU;AAAA,KACX;AAAA,GACH;AACF;AAEA,SAAS,UAAU,KAAA,EAA2B;AAC5C,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AAGvC,EAAA,IAAI,IAAA,CAAK,SAAS,YAAA,IAAgB,OAAO,KAAK,EAAA,KAAO,QAAA,IAAY,KAAK,EAAA,EAAI;AACxE,IAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,KAAA,CAAM,MAAM,CAAA;AAC1C,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,OAAA,EAAS,CAAA;AACxC,IAAA,IAAI,QAAA,IAAY,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AAC3C,IAAA,IAAA,CAAK,IAAA,EAAM,KAAK,EAAE,CAAA;AAClB,IAAA,IAAI;AACF,MAAC,MAAM,MAAA,CAAkB,WAAA;AAAA,QACvB,EAAE,IAAA,EAAM,aAAA,EAAe,EAAA,EAAI,KAAK,EAAA,EAAG;AAAA,QACnC,KAAA,CAAM;AAAA,OACR;AAAA,IACF,CAAA,CAAA,OAAQ,CAAA,EAAA;AAAA,IAER;AACA,IAAA;AAAA,EACF;AAGA,EAAA,IAAI,MAAA,IAAU,KAAA,CAAM,MAAA,KAAW,MAAA,CAAO,SAAS,aAAA,EAAe;AAC5D,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AACxC,IAAA,IAAI,QAAA,IAAY,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AAC3C,IAAA,IAAI,IAAA,CAAK,SAAS,uBAAA,EAAyB;AACzC,MAAA,KAAA,EAAM;AAAA,IACR,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,yBAAA,EAA2B;AAClD,MAAA,MAAA,CAAO,KAAK,OAAA,CAAQ,aAAA;AAAA,QAClB,IAAI,YAAY,uBAAA,EAAyB;AAAA,UACvC,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA,GAAI,IAAA,EAAK;AAAA,UAC/C,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,SACX;AAAA,OACH;AAAA,IACF,WACE,IAAA,CAAK,IAAA,KAAS,+BAAA,IACd,IAAA,CAAK,SAAS,eAAA,EACd;AACA,MAAA,MAAA,CAAO,KAAK,OAAA,CAAQ,aAAA;AAAA,QAClB,IAAI,YAAY,8BAAA,EAAgC;AAAA,UAC9C,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA,GAAI,IAAA,EAAK;AAAA,UAC/C,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,SACX;AAAA,OACH;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,SAAS,IAAA,EAA+B;AACtD,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC5C,IAAA,gBAAA,GAAmB,IAAA;AAAA,EACrB;AACA,EAAA,OAAO,MAAM;AACX,IAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AACjB,IAAA,IAAI,MAAA,IAAU,MAAA,CAAO,IAAA,KAAS,IAAA,EAAM,KAAA,EAAM;AAC1C,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,CAAA,IAAK,gBAAA,EAAkB;AACxC,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,SAAS,CAAA;AAC/C,MAAA,gBAAA,GAAmB,KAAA;AAAA,IACrB;AAAA,EACF,CAAA;AACF;;;ACjOA,IAAM,kBAAA,GAAqB;AAAA,EACzB,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAgB;AAAA,EAClD,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,aAAA,EAAc;AAAA,EAC9C,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,aAAA,EAAc;AAAA,EAC9C,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAgB;AAAA,EAClD,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACpD,EAAE,IAAA,EAAM,gBAAA,EAAkB,KAAA,EAAO,cAAA,EAAe;AAAA,EAChD,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACpD,EAAE,IAAA,EAAM,mBAAA,EAAqB,KAAA,EAAO,iBAAA,EAAkB;AAAA,EACtD,EAAE,IAAA,EAAM,qBAAA,EAAuB,KAAA,EAAO,kBAAA,EAAmB;AAAA,EACzD,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAgB;AAAA,EAClD,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAgB;AAAA,EAClD,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAgB;AAAA,EAClD,EAAE,IAAA,EAAM,qBAAA,EAAuB,KAAA,EAAO,kBAAA,EAAmB;AAAA,EACzD,EAAE,IAAA,EAAM,gBAAA,EAAkB,KAAA,EAAO,cAAA,EAAe;AAAA,EAChD,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAgB;AAAA,EAClD,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACpD,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACpD,EAAE,IAAA,EAAM,uBAAA,EAAyB,KAAA,EAAO,oBAAA,EAAqB;AAAA,EAC7D,EAAE,IAAA,EAAM,0BAAA,EAA4B,KAAA,EAAO,uBAAA,EAAwB;AAAA,EACnE,EAAE,IAAA,EAAM,sBAAA,EAAwB,KAAA,EAAO,oBAAA,EAAqB;AAAA,EAC5D,EAAE,IAAA,EAAM,uBAAA,EAAyB,KAAA,EAAO,qBAAA,EAAsB;AAAA,EAC9D,EAAE,IAAA,EAAM,wBAAA,EAA0B,KAAA,EAAO,sBAAA,EAAuB;AAAA,EAChE,EAAE,IAAA,EAAM,6BAAA,EAA+B,KAAA,EAAO,0BAAA,EAA2B;AAAA,EACzE,EAAE,IAAA,EAAM,6BAAA,EAA+B,KAAA,EAAO,0BAAA,EAA2B;AAAA,EACzE,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACpD,EAAE,IAAA,EAAM,mBAAA,EAAqB,KAAA,EAAO,iBAAA,EAAkB;AAAA,EACtD,EAAE,IAAA,EAAM,oBAAA,EAAsB,KAAA,EAAO,kBAAA,EAAmB;AAAA,EACxD,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,aAAA,EAAc;AAAA,EAC9C,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACpD,EAAE,IAAA,EAAM,mBAAA,EAAqB,KAAA,EAAO,iBAAA,EAAkB;AAAA,EACtD,EAAE,IAAA,EAAM,mBAAA,EAAqB,KAAA,EAAO,iBAAA,EAAkB;AAAA,EACtD,EAAE,IAAA,EAAM,yBAAA,EAA2B,KAAA,EAAO,uBAAA,EAAwB;AAAA,EAClE,EAAE,IAAA,EAAM,qBAAA,EAAuB,KAAA,EAAO,mBAAA;AACxC,CAAA;AAEA,IAAM,0BAAA,GAAN,cAAyC,WAAA,CAAY;AAAA,EAArD,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACE,IAAA,IAAA,CAAO,MAAA,GAAmC,IAAA;AAC1C,IAAA,IAAA,CAAQ,aAAA,GAAqC,IAAA;AAAA,EAAA;AAAA,EAE7C,WAAW,kBAAA,GAA+B;AACxC,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG,kBAAA,CAAmB,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI;AAAA,KACzC;AAAA,EACF;AAAA,EAEA,iBAAA,GAA0B;AACxB,IAAA,IAAA,CAAK,gBAAgB,QAAA,CAAoB;AAAA,MACvC,OAAA,EAAS,IAAA;AAAA,MACT,cAAA,EAAgB,MAAM,IAAA,CAAK,MAAA;AAAA,MAC3B,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA;AAAA;AAAA;AAAA,MAGpB,eAAe,MACb,IAAA,CAAK,aAAa,YAAY,CAAA,IAAK,KAAK,MAAA,IAAU,IAAA;AAAA,MACpD,aAAA,EAAe,MAAM,IAAA,CAAK;AAAA,KAC3B,CAAA;AACD,IAAA,IAAA,CAAK,MAAA,EAAO;AAAA,EACd;AAAA,EAEA,oBAAA,GAA6B;AAC3B,IAAA,IAAI,KAAK,aAAA,EAAe;AACtB,MAAA,IAAA,CAAK,aAAA,EAAc;AACnB,MAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,wBAAA,CACE,KAAA,EACA,QAAA,EACA,QAAA,EACM;AACN,IAAA,IAAI,aAAa,QAAA,EAAU;AACzB,MAAA,IAAA,CAAK,MAAA,EAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,IAAY,KAAA,GAAgB;AAC1B,IAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,CAAK,aAAa,OAAO,CAAA,IAAK,KAAK,EAAE,CAAA;AAC5D,IAAA,OAAO,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,CAAC,GAAG,EAAE,CAAA;AAAA,EACxC;AAAA,EAEA,IAAY,MAAA,GAAiB;AAC3B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,IAAK,YAAA;AAC9C,IAAA,OAAO,MAAA,KAAW,aAAa,UAAA,GAAa,YAAA;AAAA,EAC9C;AAAA,EAEA,IAAY,IAAA,GAAe;AACzB,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,IAAK,EAAA;AAAA,EACtC;AAAA,EAEA,IAAY,KAAA,GAAgB;AAC1B,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA,IAAK,OAAA;AAAA,EACvC;AAAA,EAEA,IAAY,YAAA,GAAuB;AACjC,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,IAAK,MAAA;AAAA,EACxC;AAAA,EAEA,IAAY,OAAA,GAAkB;AAC5B,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,UAAU,CAAA,IAAK,OAAO,QAAA,CAAS,MAAA;AAAA,EAC1D;AAAA,EAEA,IAAY,MAAA,GAAiB;AAC3B,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,SAAS,CAAA,IAAK,EAAA;AAAA,EACzC;AAAA,EAEA,MAAA,GAAe;AACb,IAAA,IAAA,CAAK,SAAA,GAAY,EAAA;AAEjB,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,uBAAA,EAAyB,KAAK,OAAO,CAAA;AACzD,IAAA,GAAA,CAAI,aAAa,GAAA,CAAI,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AACnD,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAC1C,IAAA,IAAI,KAAK,IAAA,EAAM,GAAA,CAAI,aAAa,GAAA,CAAI,MAAA,EAAQ,KAAK,IAAI,CAAA;AACrD,IAAA,IAAI,KAAK,KAAA,EAAO,GAAA,CAAI,aAAa,GAAA,CAAI,OAAA,EAAS,KAAK,KAAK,CAAA;AAExD,IAAA,kBAAA,CAAmB,OAAA,CAAQ,CAAC,EAAE,IAAA,EAAM,OAAM,KAAM;AAC9C,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,CAAa,IAAI,CAAA;AAClC,MAAA,IAAI,GAAA,KAAQ,QAAQ,GAAA,KAAQ,MAAA,IAAa,OAAO,GAAG,CAAA,CAAE,SAAS,CAAA,EAAG;AAC/D,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAAA,MACjC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAA,CAAO,GAAA,GAAM,IAAI,QAAA,EAAS;AAC1B,IAAA,MAAA,CAAO,KAAA,GAAQ,MAAA;AACf,IAAA,MAAM,YAAA,GACJ,IAAA,CAAK,YAAA,KAAiB,MAAA,IAAU,KAAK,YAAA,KAAiB,MAAA;AACxD,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAA,CAAO,MAAM,MAAA,GAAS,MAAA;AACtB,MAAA,MAAA,CAAO,KAAA,CAAM,SAAA,GAAY,IAAA,CAAK,MAAA,KAAW,aAAa,OAAA,GAAU,OAAA;AAAA,IAClE,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,SAAS,IAAA,CAAK,YAAA;AAAA,IACvB;AAEA,IAAA,MAAA,CAAO,WAAA,GAAc,GAAA;AACrB,IAAA,MAAA,CAAO,SAAA,GAAY,IAAA;AACnB,IAAA,MAAA,CAAO,KAAA,GAAQ,sBAAA;AACf,IAAA,MAAA,CAAO,MAAM,MAAA,GAAS,MAAA;AACtB,IAAA,MAAA,CAAO,MAAM,YAAA,GAAe,KAAA;AAC5B,IAAA,MAAA,CAAO,MAAM,QAAA,GAAW,QAAA;AAExB,IAAA,IAAA,CAAK,MAAM,OAAA,GAAU,OAAA;AACrB,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,MAAA;AACnB,IAAA,IAAA,CAAK,MAAM,eAAA,GAAkB,aAAA;AAC7B,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAA,CAAK,MAAM,MAAA,GAAS,MAAA;AACpB,MAAA,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,IAAA,CAAK,MAAA,KAAW,aAAa,OAAA,GAAU,OAAA;AAAA,IAChE,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B;AAEA,IAAA,MAAA,CAAO,SAAS,MAAM;AACpB,MAAA,IAAI,MAAA,CAAO,aAAA,IAAiB,IAAA,CAAK,MAAA,EAAQ;AACvC,QAAA,MAAA,CAAO,aAAA,CAAc,WAAA;AAAA,UACnB,EAAE,MAAM,QAAA,EAAU,MAAA,EAAQ,KAAK,MAAA,EAAQ,KAAA,EAAO,KAAK,KAAA,EAAM;AAAA,UACzD,IAAA,CAAK;AAAA,SACP;AAAA,MACF;AACA,MAAA,IAAA,CAAK,aAAA;AAAA,QACH,IAAI,YAAY,MAAA,EAAQ;AAAA,UACtB,MAAA,EAAQ;AAAA,YACN,MAAA,EAAQ,eAAA;AAAA,YACR,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,MAAM,IAAA,CAAK;AAAA;AACb,SACD;AAAA,OACH;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,UAAU,MAAM;AACrB,MAAA,IAAA,CAAK,SAAA,GAAY,CAAA,oJAAA,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AACvB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AACF;AAGA,IACE,OAAO,cAAA,KAAmB,WAAA,IAC1B,CAAC,cAAA,CAAe,GAAA,CAAI,sBAAsB,CAAA,EAC1C;AACA,EAAA,cAAA,CAAe,MAAA,CAAO,wBAAwB,0BAA0B,CAAA;AAC1E","file":"web-component.mjs","sourcesContent":["/**\n * Host-level Campaign Detail overlay manager.\n *\n * Bridges the gap between the embedded opportunities iframe and the host page:\n * when a card click would normally open the in-iframe modal (clipped to the\n * iframe rect), the iframe instead posts `LEGION_REQUEST_CAMPAIGN_DETAIL` and\n * this manager mounts a viewport-filling overlay on the host page that loads\n * `/widget/campaign-detail/<id>` directly. The overlay is dismissed on ESC,\n * backdrop click, or a `CAMPAIGN_DETAIL_CLOSE` message from the detail iframe.\n *\n * The manager is a singleton: only one detail overlay can be open at a time,\n * and multiple `<legion-opportunities>` hosts on the same page share it.\n */\n\nexport interface OverlayHost {\n  /** The custom element / wrapper that mounted the opportunities iframe. */\n  element: HTMLElement;\n  /** Returns the opportunities iframe currently rendered by this host. */\n  iframeAccessor: () => HTMLIFrameElement | null;\n  /** Base URL of the Legion instance serving the widgets. */\n  baseUrl: () => string;\n  /** Resolves the current auth token (attribute or auth bridge). */\n  tokenAccessor?: () => string | null;\n  /** Returns the active theme (passed through to the detail iframe URL). */\n  themeAccessor?: () => string;\n}\n\ninterface ActiveOverlay {\n  overlayEl: HTMLDivElement;\n  iframeEl: HTMLIFrameElement;\n  host: OverlayHost;\n  baseUrl: string;\n  prevOverflow: string;\n  onKey: (e: KeyboardEvent) => void;\n  id: string;\n}\n\nconst REQUEST_TYPE = \"LEGION_REQUEST_CAMPAIGN_DETAIL\";\nconst ACCEPTED_TYPE = \"LEGION_CAMPAIGN_DETAIL_ACCEPTED\";\n\nconst hosts = new Set<OverlayHost>();\nlet listenerAttached = false;\nlet active: ActiveOverlay | null = null;\n\nfunction originOf(url: string): string | null {\n  try {\n    return new URL(url).origin;\n  } catch {\n    return null;\n  }\n}\n\nfunction findHostBySource(\n  source: MessageEventSource | null\n): OverlayHost | null {\n  if (!source) return null;\n  for (const host of hosts) {\n    const iframe = host.iframeAccessor();\n    if (iframe && iframe.contentWindow === source) return host;\n  }\n  return null;\n}\n\nfunction open(host: OverlayHost, id: string): void {\n  close();\n\n  const baseUrl = host.baseUrl();\n  const theme = host.themeAccessor?.() ?? \"light\";\n\n  const overlayEl = document.createElement(\"div\");\n  overlayEl.setAttribute(\"data-legion-overlay\", \"campaign-detail\");\n  Object.assign(overlayEl.style, {\n    position: \"fixed\",\n    inset: \"0\",\n    background: \"rgba(0,0,0,0.6)\",\n    backdropFilter: \"blur(4px)\",\n    WebkitBackdropFilter: \"blur(4px)\",\n    zIndex: \"2147483000\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    padding: \"16px\",\n  } as CSSStyleDeclaration);\n\n  const container = document.createElement(\"div\");\n  Object.assign(container.style, {\n    position: \"relative\",\n    width: \"100%\",\n    maxWidth: \"640px\",\n    maxHeight: \"90vh\",\n    background: \"transparent\",\n    borderRadius: \"16px\",\n    overflow: \"hidden\",\n    boxShadow: \"0 24px 64px rgba(0,0,0,0.35)\",\n  } as CSSStyleDeclaration);\n\n  const iframeEl = document.createElement(\"iframe\");\n  const url = new URL(\n    `/widget/campaign-detail/${encodeURIComponent(id)}`,\n    baseUrl\n  );\n  url.searchParams.set(\"theme\", theme);\n  iframeEl.src = url.toString();\n  iframeEl.title = \"Campaign Detail\";\n  iframeEl.frameBorder = \"0\";\n  iframeEl.scrolling = \"auto\";\n  Object.assign(iframeEl.style, {\n    width: \"100%\",\n    height: \"90vh\",\n    border: \"none\",\n    background: \"transparent\",\n    display: \"block\",\n  } as CSSStyleDeclaration);\n\n  iframeEl.addEventListener(\"load\", () => {\n    const token = host.tokenAccessor?.() ?? null;\n    if (!iframeEl.contentWindow) return;\n    try {\n      if (token) {\n        iframeEl.contentWindow.postMessage(\n          { type: \"CONFIG\", apiKey: token, theme },\n          baseUrl\n        );\n        iframeEl.contentWindow.postMessage(\n          { type: \"AUTH_TOKEN\", token },\n          baseUrl\n        );\n      }\n    } catch {\n      // ignore postMessage failures\n    }\n  });\n\n  container.appendChild(iframeEl);\n  overlayEl.appendChild(container);\n  document.body.appendChild(overlayEl);\n\n  const prevOverflow = document.body.style.overflow;\n  document.body.style.overflow = \"hidden\";\n\n  overlayEl.addEventListener(\"click\", (e) => {\n    if (e.target === overlayEl) close();\n  });\n\n  const onKey = (e: KeyboardEvent) => {\n    if (e.key === \"Escape\") close();\n  };\n  document.addEventListener(\"keydown\", onKey);\n\n  active = {\n    overlayEl,\n    iframeEl,\n    host,\n    baseUrl,\n    prevOverflow,\n    onKey,\n    id,\n  };\n}\n\nexport function close(): void {\n  if (!active) return;\n  document.removeEventListener(\"keydown\", active.onKey);\n  if (active.overlayEl.parentNode) {\n    active.overlayEl.parentNode.removeChild(active.overlayEl);\n  }\n  document.body.style.overflow = active.prevOverflow;\n  const closed = active;\n  active = null;\n  closed.host.element.dispatchEvent(\n    new CustomEvent(\"campaign-detail-close\", {\n      detail: { id: closed.id },\n      bubbles: true,\n      composed: true,\n    })\n  );\n}\n\nfunction onMessage(event: MessageEvent): void {\n  const data = event.data;\n  if (!data || typeof data !== \"object\") return;\n\n  // Detail-overlay request from an opportunities iframe.\n  if (data.type === REQUEST_TYPE && typeof data.id === \"string\" && data.id) {\n    const host = findHostBySource(event.source);\n    if (!host) return;\n    const expected = originOf(host.baseUrl());\n    if (expected && event.origin !== expected) return;\n    open(host, data.id);\n    try {\n      (event.source as Window).postMessage(\n        { type: ACCEPTED_TYPE, id: data.id },\n        event.origin\n      );\n    } catch {\n      // ignore\n    }\n    return;\n  }\n\n  // Messages from the detail iframe living inside our overlay.\n  if (active && event.source === active.iframeEl.contentWindow) {\n    const expected = originOf(active.baseUrl);\n    if (expected && event.origin !== expected) return;\n    if (data.type === \"CAMPAIGN_DETAIL_CLOSE\") {\n      close();\n    } else if (data.type === \"CAMPAIGN_DETAIL_CLAIMED\") {\n      active.host.element.dispatchEvent(\n        new CustomEvent(\"campaign-detail-claim\", {\n          detail: { id: data.id ? String(data.id) : null },\n          bubbles: true,\n          composed: true,\n        })\n      );\n    } else if (\n      data.type === \"CAMPAIGN_DETAIL_REQUEST_LOGIN\" ||\n      data.type === \"REQUEST_LOGIN\"\n    ) {\n      active.host.element.dispatchEvent(\n        new CustomEvent(\"campaign-detail-requestlogin\", {\n          detail: { id: data.id ? String(data.id) : null },\n          bubbles: true,\n          composed: true,\n        })\n      );\n    }\n  }\n}\n\nexport function register(host: OverlayHost): () => void {\n  hosts.add(host);\n  if (!listenerAttached) {\n    window.addEventListener(\"message\", onMessage);\n    listenerAttached = true;\n  }\n  return () => {\n    hosts.delete(host);\n    if (active && active.host === host) close();\n    if (hosts.size === 0 && listenerAttached) {\n      window.removeEventListener(\"message\", onMessage);\n      listenerAttached = false;\n    }\n  };\n}\n","/**\n * Web Component entry point.\n *\n * Importing this module registers the <legion-opportunities> custom element\n * so it can be used in any HTML page or framework that supports web components.\n *\n * @example\n * ```ts\n * // Register the web component\n * import '@legionhandtech/lht-react-widgets/web-component';\n *\n * // Then use in HTML:\n * // <legion-opportunities base-url=\"https://your-domain.com\" count=\"5\" />\n * ```\n */\n\nimport { register as registerOverlayHost } from \"./shared/campaign-detail-overlay\";\n\nconst THEMING_ATTRIBUTES = [\n  { attr: \"opp-panel-start\", param: \"oppPanelStart\" },\n  { attr: \"opp-panel-mid\", param: \"oppPanelMid\" },\n  { attr: \"opp-panel-end\", param: \"oppPanelEnd\" },\n  { attr: \"opp-panel-color\", param: \"oppPanelColor\" },\n  { attr: \"opp-panel-shadow\", param: \"oppPanelShadow\" },\n  { attr: \"opp-panel-blur\", param: \"oppPanelBlur\" },\n  { attr: \"opp-panel-radius\", param: \"oppPanelRadius\" },\n  { attr: \"opp-panel-padding\", param: \"oppPanelPadding\" },\n  { attr: \"opp-panel-max-width\", param: \"oppPanelMaxWidth\" },\n  { attr: \"opp-card-radius\", param: \"oppCardRadius\" },\n  { attr: \"opp-card-shadow\", param: \"oppCardShadow\" },\n  { attr: \"opp-card-border\", param: \"oppCardBorder\" },\n  { attr: \"opp-card-min-height\", param: \"oppCardMinHeight\" },\n  { attr: \"opp-title-size\", param: \"oppTitleSize\" },\n  { attr: \"opp-title-color\", param: \"oppTitleColor\" },\n  { attr: \"opp-title-weight\", param: \"oppTitleWeight\" },\n  { attr: \"opp-title-shadow\", param: \"oppTitleShadow\" },\n  { attr: \"opp-title-font-family\", param: \"oppTitleFontFamily\" },\n  { attr: \"opp-title-letter-spacing\", param: \"oppTitleLetterSpacing\" },\n  { attr: \"opp-description-size\", param: \"oppDescriptionSize\" },\n  { attr: \"opp-description-color\", param: \"oppDescriptionColor\" },\n  { attr: \"opp-description-shadow\", param: \"oppDescriptionShadow\" },\n  { attr: \"opp-description-font-family\", param: \"oppDescriptionFontFamily\" },\n  { attr: \"opp-description-line-height\", param: \"oppDescriptionLineHeight\" },\n  { attr: \"opp-expires-size\", param: \"oppExpiresSize\" },\n  { attr: \"opp-expires-color\", param: \"oppExpiresColor\" },\n  { attr: \"opp-expires-shadow\", param: \"oppExpiresShadow\" },\n  { attr: \"opp-button-bg\", param: \"oppButtonBg\" },\n  { attr: \"opp-button-color\", param: \"oppButtonColor\" },\n  { attr: \"opp-button-radius\", param: \"oppButtonRadius\" },\n  { attr: \"opp-button-shadow\", param: \"oppButtonShadow\" },\n  { attr: \"opp-transition-duration\", param: \"oppTransitionDuration\" },\n  { attr: \"opp-animation-scale\", param: \"oppAnimationScale\" },\n] as const;\n\nclass LegionOpportunitiesElement extends HTMLElement {\n  public iframe: HTMLIFrameElement | null = null;\n  private detachOverlay: (() => void) | null = null;\n\n  static get observedAttributes(): string[] {\n    return [\n      \"count\",\n      \"layout\",\n      \"tags\",\n      \"theme\",\n      \"base-url\",\n      \"api-key\",\n      \"auth-token\",\n      \"height\",\n      ...THEMING_ATTRIBUTES.map((t) => t.attr),\n    ];\n  }\n\n  connectedCallback(): void {\n    this.detachOverlay = registerOverlayHost({\n      element: this,\n      iframeAccessor: () => this.iframe,\n      baseUrl: () => this.baseUrl,\n      // Prefer JWT auth-token (forwarded to the detail overlay iframe) over\n      // the legacy api-key so both auth mechanisms work correctly.\n      tokenAccessor: () =>\n        this.getAttribute(\"auth-token\") || this.apiKey || null,\n      themeAccessor: () => this.theme,\n    });\n    this.render();\n  }\n\n  disconnectedCallback(): void {\n    if (this.detachOverlay) {\n      this.detachOverlay();\n      this.detachOverlay = null;\n    }\n  }\n\n  attributeChangedCallback(\n    _name: string,\n    oldValue: string | null,\n    newValue: string | null\n  ): void {\n    if (oldValue !== newValue) {\n      this.render();\n    }\n  }\n\n  private get count(): number {\n    const count = parseInt(this.getAttribute(\"count\") || \"5\", 10);\n    return Math.min(Math.max(count, 1), 20);\n  }\n\n  private get layout(): string {\n    const layout = this.getAttribute(\"layout\") || \"horizontal\";\n    return layout === \"vertical\" ? \"vertical\" : \"horizontal\";\n  }\n\n  private get tags(): string {\n    return this.getAttribute(\"tags\") || \"\";\n  }\n\n  private get theme(): string {\n    return this.getAttribute(\"theme\") || \"light\";\n  }\n\n  private get widgetHeight(): string {\n    return this.getAttribute(\"height\") || \"auto\";\n  }\n\n  private get baseUrl(): string {\n    return this.getAttribute(\"base-url\") || window.location.origin;\n  }\n\n  private get apiKey(): string {\n    return this.getAttribute(\"api-key\") || \"\";\n  }\n\n  render(): void {\n    this.innerHTML = \"\";\n\n    const iframe = document.createElement(\"iframe\");\n    const url = new URL(\"/widget/opportunities\", this.baseUrl);\n    url.searchParams.set(\"count\", this.count.toString());\n    url.searchParams.set(\"layout\", this.layout);\n    if (this.tags) url.searchParams.set(\"tags\", this.tags);\n    if (this.theme) url.searchParams.set(\"theme\", this.theme);\n\n    THEMING_ATTRIBUTES.forEach(({ attr, param }) => {\n      const val = this.getAttribute(attr);\n      if (val !== null && val !== undefined && String(val).length > 0) {\n        url.searchParams.set(param, val);\n      }\n    });\n\n    iframe.src = url.toString();\n    iframe.width = \"100%\";\n    const isFullHeight =\n      this.widgetHeight === \"auto\" || this.widgetHeight === \"100%\";\n    if (isFullHeight) {\n      iframe.style.height = \"100%\";\n      iframe.style.minHeight = this.layout === \"vertical\" ? \"600px\" : \"320px\";\n    } else {\n      iframe.height = this.widgetHeight;\n    }\n\n    iframe.frameBorder = \"0\";\n    iframe.scrolling = \"no\";\n    iframe.title = \"Opportunities Widget\";\n    iframe.style.border = \"none\";\n    iframe.style.borderRadius = \"8px\";\n    iframe.style.overflow = \"hidden\";\n\n    this.style.display = \"block\";\n    this.style.width = \"100%\";\n    this.style.backgroundColor = \"transparent\";\n    if (isFullHeight) {\n      this.style.height = \"100%\";\n      this.style.minHeight = this.layout === \"vertical\" ? \"600px\" : \"320px\";\n    } else {\n      this.style.height = this.widgetHeight;\n    }\n\n    iframe.onload = () => {\n      if (iframe.contentWindow && this.apiKey) {\n        iframe.contentWindow.postMessage(\n          { type: \"CONFIG\", apiKey: this.apiKey, theme: this.theme },\n          this.baseUrl\n        );\n      }\n      this.dispatchEvent(\n        new CustomEvent(\"load\", {\n          detail: {\n            widget: \"opportunities\",\n            count: this.count,\n            layout: this.layout,\n            tags: this.tags,\n          },\n        })\n      );\n    };\n\n    iframe.onerror = () => {\n      this.innerHTML = `<div style=\"padding:32px;text-align:center;color:#856404;background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;\">Failed to load widget</div>`;\n    };\n\n    this.appendChild(iframe);\n    this.iframe = iframe;\n  }\n}\n\n// Only register if not already registered\nif (\n  typeof customElements !== \"undefined\" &&\n  !customElements.get(\"legion-opportunities\")\n) {\n  customElements.define(\"legion-opportunities\", LegionOpportunitiesElement);\n}\n\nexport { LegionOpportunitiesElement };\n"]}