{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import Plugin from '@swup/plugin';\n\nexport default abstract class Theme extends Plugin {\n\t_originalAnimationSelectorOption: string = '';\n\t_addedStyleElements: Element[] = [];\n\t_addedHTMLContent: Element[] = [];\n\t_classNameAddedToElements: ({ selector: string, name: string })[] = [];\n\n\t_beforeMount() {\n\t\t// Store original animationSelector option, then replace it\n\t\tthis._originalAnimationSelectorOption = String(this.swup.options.animationSelector);\n\t\tthis.swup.options.animationSelector = '[class*=\"swup-transition-\"]';\n\n\t\t// Add classes after each content replace\n\t\tthis.swup.hooks.on('content:replace', this._addClassNameToElement);\n\t}\n\n\t_afterUnmount() {\n\t\t// Restore original animationSelector option\n\t\tthis.swup.options.animationSelector = this._originalAnimationSelectorOption;\n\n\t\t// Remove added styles\n\t\tthis._addedStyleElements.forEach((element) => {\n\t\t\telement.outerHTML = '';\n\t\t});\n\t\tthis._addedStyleElements = [];\n\n\t\t// Remove added HTML\n\t\tthis._addedHTMLContent.forEach((element) => {\n\t\t\telement.outerHTML = '';\n\t\t});\n\t\tthis._addedHTMLContent = [];\n\n\t\t// Remove added classnames\n\t\tthis._classNameAddedToElements.forEach((item) => {\n\t\t\tconst elements = Array.from(document.querySelectorAll(item.selector));\n\t\t\telements.forEach((element) => {\n\t\t\t\telement.className.split(' ').forEach((classItem) => {\n\t\t\t\t\tif (new RegExp('^swup-transition-').test(classItem)) {\n\t\t\t\t\t\telement.classList.remove(classItem);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tthis.swup.hooks.off('content:replace', this._addClassNameToElement);\n\t}\n\n\tapplyStyles(styles: string) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.setAttribute('data-swup-theme', '');\n\t\tstyle.appendChild(document.createTextNode(styles));\n\t\tdocument.head.prepend(style);\n\n\t\tthis._addedStyleElements.push(style);\n\t}\n\n\tapplyHTML(content: string) {\n\t\tconst element = document.createElement('div');\n\t\telement.innerHTML = content;\n\t\tdocument.body.appendChild(element);\n\n\t\tthis._addedHTMLContent.push(element);\n\t}\n\n\taddClassName(selector: string, name: string) {\n\t\t// save so it can be later removed\n\t\tthis._classNameAddedToElements.push({ selector, name });\n\n\t\t// add class the first time\n\t\tthis._addClassNameToElement();\n\t}\n\n\t_addClassNameToElement = () => {\n\t\tthis._classNameAddedToElements.forEach((item) => {\n\t\t\tconst elements = Array.from(document.querySelectorAll(item.selector));\n\t\t\telements.forEach((element) => {\n\t\t\t\telement.classList.add(`swup-transition-${item.name}`);\n\t\t\t});\n\t\t});\n\t};\n}\n"],"names":["Plugin","constructor","arguments","_originalAnimationSelectorOption","this","_addedStyleElements","_addedHTMLContent","_classNameAddedToElements","_addClassNameToElement","forEach","item","Array","from","document","querySelectorAll","selector","element","classList","add","name","_beforeMount","String","swup","options","animationSelector","hooks","on","_afterUnmount","outerHTML","className","split","classItem","RegExp","test","remove","off","applyStyles","styles","style","createElement","setAttribute","appendChild","createTextNode","head","prepend","push","applyHTML","content","innerHTML","body","addClassName"],"mappings":"qIAE8B,cAAcA,EAAM,QAAAC,WAAAA,GAAAC,SAAAA,gBACjDC,iCAA2C,GAAEC,KAC7CC,oBAAiC,GACjCC,KAAAA,kBAA+B,GAAEF,KACjCG,0BAAoE,GAmEpEC,KAAAA,uBAAyB,KACxBJ,KAAKG,0BAA0BE,QAASC,IACtBC,MAAMC,KAAKC,SAASC,iBAAiBJ,EAAKK,WAClDN,QAASO,IACjBA,EAAQC,UAAUC,IAAuB,mBAAAR,EAAKS,OAAM,EAEtD,GACA,CAxEDC,YAAAA,GAEChB,KAAKD,iCAAmCkB,OAAOjB,KAAKkB,KAAKC,QAAQC,mBACjEpB,KAAKkB,KAAKC,QAAQC,kBAAoB,8BAGtCpB,KAAKkB,KAAKG,MAAMC,GAAG,kBAAmBtB,KAAKI,uBAC5C,CAEAmB,aAAAA,GAECvB,KAAKkB,KAAKC,QAAQC,kBAAoBpB,KAAKD,iCAG3CC,KAAKC,oBAAoBI,QAASO,IACjCA,EAAQY,UAAY,KAErBxB,KAAKC,oBAAsB,GAG3BD,KAAKE,kBAAkBG,QAASO,IAC/BA,EAAQY,UAAY,KAErBxB,KAAKE,kBAAoB,GAGzBF,KAAKG,0BAA0BE,QAASC,IACtBC,MAAMC,KAAKC,SAASC,iBAAiBJ,EAAKK,WAClDN,QAASO,IACjBA,EAAQa,UAAUC,MAAM,KAAKrB,QAASsB,IACjC,IAAIC,OAAO,qBAAqBC,KAAKF,IACxCf,EAAQC,UAAUiB,OAAOH,EACzB,IAEF,GAGF3B,KAAKkB,KAAKG,MAAMU,IAAI,kBAAmB/B,KAAKI,uBAC7C,CAEA4B,WAAAA,CAAYC,GACX,MAAMC,EAAQzB,SAAS0B,cAAc,SACrCD,EAAME,aAAa,kBAAmB,IACtCF,EAAMG,YAAY5B,SAAS6B,eAAeL,IAC1CxB,SAAS8B,KAAKC,QAAQN,GAEtBlC,KAAKC,oBAAoBwC,KAAKP,EAC/B,CAEAQ,SAAAA,CAAUC,GACT,MAAM/B,EAAUH,SAAS0B,cAAc,OACvCvB,EAAQgC,UAAYD,EACpBlC,SAASoC,KAAKR,YAAYzB,GAE1BZ,KAAKE,kBAAkBuC,KAAK7B,EAC7B,CAEAkC,YAAAA,CAAanC,EAAkBI,GAE9Bf,KAAKG,0BAA0BsC,KAAK,CAAE9B,WAAUI,SAGhDf,KAAKI,wBACN"}