Server IP : 15.235.198.142 / Your IP : 216.73.216.206 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/bootstrap-html/js/util/ |
Upload File : |
{"version":3,"file":"template-factory.js","sources":["../../src/util/template-factory.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n"],"names":["NAME","Default","allowList","DefaultAllowlist","content","extraClass","html","sanitize","sanitizeFn","template","DefaultType","DefaultContentType","entry","selector","TemplateFactory","config","_config","_getConfig","getContent","Object","values","map","_resolvePossibleFunction","filter","Boolean","hasContent","length","changeContent","_checkContent","toHtml","templateWrapper","document","createElement","innerHTML","_maybeSanitize","entries","text","_setContent","children","classList","add","split","_typeCheckConfig","arg","templateElement","SelectorEngine","findOne","remove","isElement","_putElementInTemplate","getElement","textContent","sanitizeHtml","execute","element","append","Config"],"mappings":"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"}