escape-html.js (8798B)
1 this["wp"] = this["wp"] || {}; this["wp"]["escapeHtml"] = 2 /******/ (function(modules) { // webpackBootstrap 3 /******/ // The module cache 4 /******/ var installedModules = {}; 5 /******/ 6 /******/ // The require function 7 /******/ function __webpack_require__(moduleId) { 8 /******/ 9 /******/ // Check if module is in cache 10 /******/ if(installedModules[moduleId]) { 11 /******/ return installedModules[moduleId].exports; 12 /******/ } 13 /******/ // Create a new module (and put it into the cache) 14 /******/ var module = installedModules[moduleId] = { 15 /******/ i: moduleId, 16 /******/ l: false, 17 /******/ exports: {} 18 /******/ }; 19 /******/ 20 /******/ // Execute the module function 21 /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 22 /******/ 23 /******/ // Flag the module as loaded 24 /******/ module.l = true; 25 /******/ 26 /******/ // Return the exports of the module 27 /******/ return module.exports; 28 /******/ } 29 /******/ 30 /******/ 31 /******/ // expose the modules object (__webpack_modules__) 32 /******/ __webpack_require__.m = modules; 33 /******/ 34 /******/ // expose the module cache 35 /******/ __webpack_require__.c = installedModules; 36 /******/ 37 /******/ // define getter function for harmony exports 38 /******/ __webpack_require__.d = function(exports, name, getter) { 39 /******/ if(!__webpack_require__.o(exports, name)) { 40 /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 41 /******/ } 42 /******/ }; 43 /******/ 44 /******/ // define __esModule on exports 45 /******/ __webpack_require__.r = function(exports) { 46 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 47 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 48 /******/ } 49 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 50 /******/ }; 51 /******/ 52 /******/ // create a fake namespace object 53 /******/ // mode & 1: value is a module id, require it 54 /******/ // mode & 2: merge all properties of value into the ns 55 /******/ // mode & 4: return value when already ns object 56 /******/ // mode & 8|1: behave like require 57 /******/ __webpack_require__.t = function(value, mode) { 58 /******/ if(mode & 1) value = __webpack_require__(value); 59 /******/ if(mode & 8) return value; 60 /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 61 /******/ var ns = Object.create(null); 62 /******/ __webpack_require__.r(ns); 63 /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 64 /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 65 /******/ return ns; 66 /******/ }; 67 /******/ 68 /******/ // getDefaultExport function for compatibility with non-harmony modules 69 /******/ __webpack_require__.n = function(module) { 70 /******/ var getter = module && module.__esModule ? 71 /******/ function getDefault() { return module['default']; } : 72 /******/ function getModuleExports() { return module; }; 73 /******/ __webpack_require__.d(getter, 'a', getter); 74 /******/ return getter; 75 /******/ }; 76 /******/ 77 /******/ // Object.prototype.hasOwnProperty.call 78 /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 79 /******/ 80 /******/ // __webpack_public_path__ 81 /******/ __webpack_require__.p = ""; 82 /******/ 83 /******/ 84 /******/ // Load entry module and return exports 85 /******/ return __webpack_require__(__webpack_require__.s = "IsfW"); 86 /******/ }) 87 /************************************************************************/ 88 /******/ ({ 89 90 /***/ "IsfW": 91 /***/ (function(module, __webpack_exports__, __webpack_require__) { 92 93 "use strict"; 94 // ESM COMPAT FLAG 95 __webpack_require__.r(__webpack_exports__); 96 97 // EXPORTS 98 __webpack_require__.d(__webpack_exports__, "escapeAmpersand", function() { return /* binding */ escapeAmpersand; }); 99 __webpack_require__.d(__webpack_exports__, "escapeQuotationMark", function() { return /* binding */ escapeQuotationMark; }); 100 __webpack_require__.d(__webpack_exports__, "escapeLessThan", function() { return /* binding */ escapeLessThan; }); 101 __webpack_require__.d(__webpack_exports__, "escapeAttribute", function() { return /* binding */ escapeAttribute; }); 102 __webpack_require__.d(__webpack_exports__, "escapeHTML", function() { return /* binding */ escapeHTML; }); 103 __webpack_require__.d(__webpack_exports__, "escapeEditableHTML", function() { return /* binding */ escapeEditableHTML; }); 104 __webpack_require__.d(__webpack_exports__, "isValidAttributeName", function() { return /* binding */ isValidAttributeName; }); 105 106 // CONCATENATED MODULE: ./node_modules/@wordpress/escape-html/build-module/escape-greater.js 107 /** 108 * Returns a string with greater-than sign replaced. 109 * 110 * Note that if a resolution for Trac#45387 comes to fruition, it is no longer 111 * necessary for `__unstableEscapeGreaterThan` to exist. 112 * 113 * See: https://core.trac.wordpress.org/ticket/45387 114 * 115 * @param {string} value Original string. 116 * 117 * @return {string} Escaped string. 118 */ 119 function __unstableEscapeGreaterThan(value) { 120 return value.replace(/>/g, '>'); 121 } 122 123 // CONCATENATED MODULE: ./node_modules/@wordpress/escape-html/build-module/index.js 124 /** 125 * Internal dependencies 126 */ 127 128 /** 129 * Regular expression matching invalid attribute names. 130 * 131 * "Attribute names must consist of one or more characters other than controls, 132 * U+0020 SPACE, U+0022 ("), U+0027 ('), U+003E (>), U+002F (/), U+003D (=), 133 * and noncharacters." 134 * 135 * @see https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 136 * 137 * @type {RegExp} 138 */ 139 140 const REGEXP_INVALID_ATTRIBUTE_NAME = /[\u007F-\u009F "'>/="\uFDD0-\uFDEF]/; 141 /** 142 * Returns a string with ampersands escaped. Note that this is an imperfect 143 * implementation, where only ampersands which do not appear as a pattern of 144 * named, decimal, or hexadecimal character references are escaped. Invalid 145 * named references (i.e. ambiguous ampersand) are are still permitted. 146 * 147 * @see https://w3c.github.io/html/syntax.html#character-references 148 * @see https://w3c.github.io/html/syntax.html#ambiguous-ampersand 149 * @see https://w3c.github.io/html/syntax.html#named-character-references 150 * 151 * @param {string} value Original string. 152 * 153 * @return {string} Escaped string. 154 */ 155 156 function escapeAmpersand(value) { 157 return value.replace(/&(?!([a-z0-9]+|#[0-9]+|#x[a-f0-9]+);)/gi, '&'); 158 } 159 /** 160 * Returns a string with quotation marks replaced. 161 * 162 * @param {string} value Original string. 163 * 164 * @return {string} Escaped string. 165 */ 166 167 function escapeQuotationMark(value) { 168 return value.replace(/"/g, '"'); 169 } 170 /** 171 * Returns a string with less-than sign replaced. 172 * 173 * @param {string} value Original string. 174 * 175 * @return {string} Escaped string. 176 */ 177 178 function escapeLessThan(value) { 179 return value.replace(/</g, '<'); 180 } 181 /** 182 * Returns an escaped attribute value. 183 * 184 * @see https://w3c.github.io/html/syntax.html#elements-attributes 185 * 186 * "[...] the text cannot contain an ambiguous ampersand [...] must not contain 187 * any literal U+0022 QUOTATION MARK characters (")" 188 * 189 * Note we also escape the greater than symbol, as this is used by wptexturize to 190 * split HTML strings. This is a WordPress specific fix 191 * 192 * Note that if a resolution for Trac#45387 comes to fruition, it is no longer 193 * necessary for `__unstableEscapeGreaterThan` to be used. 194 * 195 * See: https://core.trac.wordpress.org/ticket/45387 196 * 197 * @param {string} value Attribute value. 198 * 199 * @return {string} Escaped attribute value. 200 */ 201 202 function escapeAttribute(value) { 203 return __unstableEscapeGreaterThan(escapeQuotationMark(escapeAmpersand(value))); 204 } 205 /** 206 * Returns an escaped HTML element value. 207 * 208 * @see https://w3c.github.io/html/syntax.html#writing-html-documents-elements 209 * 210 * "the text must not contain the character U+003C LESS-THAN SIGN (<) or an 211 * ambiguous ampersand." 212 * 213 * @param {string} value Element value. 214 * 215 * @return {string} Escaped HTML element value. 216 */ 217 218 function escapeHTML(value) { 219 return escapeLessThan(escapeAmpersand(value)); 220 } 221 /** 222 * Returns an escaped Editable HTML element value. This is different from 223 * `escapeHTML`, because for editable HTML, ALL ampersands must be escaped in 224 * order to render the content correctly on the page. 225 * 226 * @param {string} value Element value. 227 * 228 * @return {string} Escaped HTML element value. 229 */ 230 231 function escapeEditableHTML(value) { 232 return escapeLessThan(value.replace(/&/g, '&')); 233 } 234 /** 235 * Returns true if the given attribute name is valid, or false otherwise. 236 * 237 * @param {string} name Attribute name to test. 238 * 239 * @return {boolean} Whether attribute is valid. 240 */ 241 242 function isValidAttributeName(name) { 243 return !REGEXP_INVALID_ATTRIBUTE_NAME.test(name); 244 } 245 246 247 /***/ }) 248 249 /******/ });