{"version":3,"file":"ng-whatsapp-format.mjs","sources":["../../../projects/ng-whatsapp-format/src/lib/ng.whatsapp-format.pipe.ts","../../../projects/ng-whatsapp-format/src/public-api.ts","../../../projects/ng-whatsapp-format/src/ng-whatsapp-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'ngWhatsappFormat',\r\n    standalone: true,\r\n})\r\nexport class NgWhatsappFormatPipe implements PipeTransform {\r\n\r\n    private styleElement: HTMLStyleElement | null = null;\r\n\r\n    constructor() {\r\n        this.injectStyles();\r\n    }\r\n\r\n    private injectStyles() {\r\n        if (typeof document !== 'undefined' && !this.styleElement) {\r\n            this.styleElement = document.createElement('style');\r\n            this.styleElement.innerHTML = `\r\n                .whatsapp-bold {\r\n                    font-weight: bold;\r\n                }\r\n\r\n                .whatsapp-italic {\r\n                    font-style: italic;\r\n                }\r\n\r\n                .whatsapp-strike {\r\n                    text-decoration: line-through;\r\n                }\r\n\r\n                .whatsapp-monospace {\r\n                    font-family: monospace;\r\n                    background-color: #f5f5f5;\r\n                    padding: 2px 4px;\r\n                    border-radius: 3px;\r\n                }\r\n\r\n                .whatsapp-inline-code {\r\n                    font-family: monospace;\r\n                    background-color: #f5f5f5;\r\n                    padding: 2px 4px;\r\n                    border-radius: 3px;\r\n                }\r\n\r\n                .whatsapp-quote {\r\n                    border-left: 4px solid #ccc;\r\n                    padding-left: 10px;\r\n                    margin-left: 5px;\r\n                    color: #555;\r\n                }\r\n\r\n                .whatsapp-list {\r\n                    padding-left: 20px;\r\n                    margin: 0;\r\n                }\r\n\r\n                .whatsapp-bullet,\r\n                .whatsapp-numbered {\r\n                    list-style-type: none;\r\n                }\r\n            `;\r\n            document.head.appendChild(this.styleElement);\r\n        }\r\n    }\r\n\r\n    transform(value: string): string {\r\n        if (!value) {\r\n            return value;\r\n        }\r\n\r\n        // Bold text starting and ending with *\r\n        value = value.replace(\r\n            /\\*(\\S(?:.*?\\S)?)\\*/g,\r\n            '<span class=\"whatsapp-bold\">$1</span>'\r\n        );\r\n\r\n        // Italic text starting and ending with _\r\n        value = value.replace(\r\n            /_(\\S(?:.*?\\S)?)_/g,\r\n            '<span class=\"whatsapp-italic\">$1</span>'\r\n        );\r\n\r\n        // Strike-through text starting and ending with ~\r\n        value = value.replace(\r\n            /~(\\S(?:.*?\\S)?)~/g,\r\n            '<span class=\"whatsapp-strike\">$1</span>'\r\n        );\r\n\r\n        // // Monospace with ``` (triple backticks)\r\n        // value = value.replace(\r\n        //   /```(.+?)```/gs,\r\n        //   '<span class=\"whatsapp-monospace\">$1</span>'\r\n        // );\r\n\r\n        // Inline code with ` (single backtick)\r\n        value = value.replace(\r\n            /`(\\S(?:.*?\\S)?)`/g,\r\n            '<span class=\"whatsapp-inline-code\">$1</span>'\r\n        );\r\n\r\n        // Quote with >\r\n        value = value.replace(\r\n            /^> (.+)$/gm,\r\n            '<blockquote class=\"whatsapp-quote\">$1</blockquote>'\r\n        );\r\n\r\n        // ✅ Parse URLs, including plain domains like google.com\r\n        value = value.replace(\r\n            /\\b((https?:\\/\\/)?(www\\.)?[a-zA-Z0-9-]+\\.[a-zA-Z]{2,}([^\\s<]*)?)/gi,\r\n            (match, p1) => {\r\n                let url = match;\r\n                if (!/^https?:\\/\\//i.test(match)) {\r\n                    url = `https://${match}`;\r\n                }\r\n                return `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${match}</a>`;\r\n            }\r\n        );\r\n\r\n        // // Bullet list (using * or -)\r\n        // value = value.replace(\r\n        //   /(^|\\n)([*-]) (.+)/g,\r\n        //   '$1<li class=\"whatsapp-bullet\">$3</li>'\r\n        // );\r\n        // value = value.replace(\r\n        //   /(<li(.+)<\\/li>)/g,\r\n        //   '<ul class=\"whatsapp-list\">$1</ul>'\r\n        // );\r\n\r\n        // // Numbered list\r\n        // value = value.replace(\r\n        //   /(^|\\n)(\\d+)\\. (.+)/g,\r\n        //   '$1<li class=\"whatsapp-numbered\">$2. $3</li>'\r\n        // );\r\n        // value = value.replace(\r\n        //   /(<li(.+)<\\/li>)/g,\r\n        //   '<ol class=\"whatsapp-list\">$1</ol>'\r\n        // );\r\n\r\n        return value;\r\n    }\r\n\r\n}\r\n","/*\r\n * Public API Surface of ng-whatsapp-format\r\n */\r\n\r\nexport * from './lib/ng.whatsapp-format.pipe'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAMa,oBAAoB,CAAA;IAErB,YAAY,GAA4B,IAAI;AAEpD,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,YAAY,EAAE;;IAGf,YAAY,GAAA;QAChB,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACnD,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2C7B;YACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;;;AAIpD,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,KAAK;;;QAIhB,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,qBAAqB,EACrB,uCAAuC,CAC1C;;QAGD,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,mBAAmB,EACnB,yCAAyC,CAC5C;;QAGD,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,mBAAmB,EACnB,yCAAyC,CAC5C;;;;;;;QASD,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,mBAAmB,EACnB,8CAA8C,CACjD;;QAGD,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,YAAY,EACZ,oDAAoD,CACvD;;AAGD,QAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,mEAAmE,EACnE,CAAC,KAAK,EAAE,EAAE,KAAI;YACV,IAAI,GAAG,GAAG,KAAK;YACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,GAAG,GAAG,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;;AAE5B,YAAA,OAAO,CAAY,SAAA,EAAA,GAAG,CAA+C,4CAAA,EAAA,KAAK,MAAM;AACpF,SAAC,CACJ;;;;;;;;;;;;;;;;;;;AAsBD,QAAA,OAAO,KAAK;;wGApIP,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACLD;;AAEG;;ACFH;;AAEG;;;;"}