{"version":3,"file":"discourse-bbcode-color.js","names":["define","_exports","Object","defineProperty","value","setup","helper","allowList","custom","tag","name","exec","registerOptions","opts","features","markdownIt","registerPlugin","md","ruler","inline","bbcode","push","wrap","token","endToken","tagInfo","type","attrs","_default","trim","content","nesting","addPreProcessor","text","previousText","replace","_","p1","p2","replaceFontColor","replaceFontBgColor"],"sources":["discourse/plugins/discourse-bbcode-color/lib/discourse-markdown/bbcode-color.js"],"sourcesContent":["define(\"discourse/plugins/discourse-bbcode-color/lib/discourse-markdown/bbcode-color\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  function replaceFontColor(text) {\n    text ||= \"\";\n    let previousText;\n    do {\n      previousText = text;\n      text = text.replace(/\\[color=([^\\]]+)\\]((?:(?!\\[color=[^\\]]+\\]|\\[\\/color\\])[\\S\\s])*)\\[\\/color\\]/gi, (_, p1, p2) => `<span style='color:${p1}'>${p2}</span>`);\n    } while (text !== previousText);\n    return text;\n  }\n  function replaceFontBgColor(text) {\n    text ||= \"\";\n    let previousText;\n    do {\n      previousText = text;\n      text = text.replace(/\\[bgcolor=([^\\]]+)\\]((?:(?!\\[bgcolor=[^\\]]+\\]|\\[\\/bgcolor\\])[\\S\\s])*)\\[\\/bgcolor\\]/gi, (_, p1, p2) => `<span style='background-color:${p1}'>${p2}</span>`);\n    } while (text !== previousText);\n    return text;\n  }\n  function setup(helper) {\n    helper.allowList({\n      custom(tag, name, value) {\n        if (tag === \"span\" && name === \"style\") {\n          return /^(background-)?color:#?[a-zA-Z0-9]+$/.exec(value);\n        }\n      }\n    });\n    helper.registerOptions(opts => {\n      opts.features[\"bbcode-color\"] = true;\n    });\n    if (helper.markdownIt) {\n      helper.registerPlugin(md => {\n        const ruler = md.inline.bbcode.ruler;\n        ruler.push(\"bgcolor\", {\n          tag: \"bgcolor\",\n          wrap: function (token, endToken, tagInfo) {\n            token.type = \"span_open\";\n            token.tag = \"span\";\n            token.attrs = [[\"style\", \"background-color:\" + tagInfo.attrs._default.trim()]];\n            token.content = \"\";\n            token.nesting = 1;\n            endToken.type = \"span_close\";\n            endToken.tag = \"span\";\n            endToken.nesting = -1;\n            endToken.content = \"\";\n          }\n        });\n        ruler.push(\"color\", {\n          tag: \"color\",\n          wrap: function (token, endToken, tagInfo) {\n            token.type = \"span_open\";\n            token.tag = \"span\";\n            token.attrs = [[\"style\", \"color:\" + tagInfo.attrs._default.trim()]];\n            token.content = \"\";\n            token.nesting = 1;\n            endToken.type = \"span_close\";\n            endToken.tag = \"span\";\n            endToken.nesting = -1;\n            endToken.content = \"\";\n          }\n        });\n      });\n    } else {\n      helper.addPreProcessor(text => replaceFontColor(text));\n      helper.addPreProcessor(text => replaceFontBgColor(text));\n    }\n  }\n});"],"mappings":"AAAAA,OAAA,oGAAAC,GACA;AAEAC,OAAAC,eAAAF,EAAA,cACAG,OAAA,IAEAH,EAAAI,MAmBA,SAAAC,GACAA,EAAAC,UAAA,CACA,MAAAC,CAAAC,EAAAC,EAAAN,GACA,YAAAK,GAAA,UAAAC,EACA,6CAAAC,KAAAP,EAEA,IAEAE,EAAAM,gBAAAC,IACAA,EAAAC,SAAA,qBAEAR,EAAAS,WACAT,EAAAU,eAAAC,IACA,MAAAC,EAAAD,EAAAE,OAAAC,OAAAF;AACAA,EAAAG,KAAA,WACAZ,IAAA,UACAa,KAAA,SAAAC,EAAAC,EAAAC,GACAF,EAAAG,KAAA,YACAH,EAAAd,IAAA,OACAc,EAAAI,MAAA,8BAAAF,EAAAE,MAAAC,SAAAC,SACAN,EAAAO,QAAA,GACAP,EAAAQ,QAAA,EACAP,EAAAE,KAAA,aACAF,EAAAf,IAAA,OACAe,EAAAO,SAAA,EACAP,EAAAM,QAAA,EACA,IAEAZ,EAAAG,KAAA,SACAZ,IAAA,QACAa,KAAA,SAAAC,EAAAC,EAAAC,GACAF,EAAAG,KAAA,YACAH,EAAAd,IAAA,OACAc,EAAAI,MAAA,mBAAAF,EAAAE,MAAAC,SAAAC,SACAN,EAAAO,QAAA,GACAP,EAAAQ,QAAA,EACAP,EAAAE,KAAA,aACAF,EAAAf,IAAA,OACAe,EAAAO,SAAA,EACAP,EAAAM,QAAA,EACA,OAIAxB,EAAA0B,gBAAAC,GA9DA,SAAAA,GAEA,IAAAC;AADAD,IAAA;AAEA,GACAC,EAAAD,EACAA,IAAAE,QAAA,gFAAAC,EAAAC,EAAAC,IAAA,sBAAAD,MAAAC,kBACAL,IAAAC;AACA,OAAAD,CACA,CAsDAM,CAAAN,IACA3B,EAAA0B,gBAAAC,GAtDA,SAAAA,GAEA,IAAAC;AADAD,IAAA;AAEA,GACAC,EAAAD,EACAA,IAAAE,QAAA,wFAAAC,EAAAC,EAAAC,IAAA,iCAAAD,MAAAC,kBACAL,IAAAC;AACA,OAAAD,CACA,CA8CAO,CAAAP,IAEA,C","ignoreList":[]}