{"version":3,"sources":["/w/extensions/Popups/webpack/bootstrap","/w/extensions/Popups/./node_modules/@babel/runtime/helpers/defineProperty.js","/w/extensions/Popups/./node_modules/redux-thunk/dist/redux-thunk.min.js","/w/extensions/Popups/./node_modules/redux/dist/redux.min.js","/w/extensions/Popups/(webpack)/buildin/global.js","/w/extensions/Popups/(webpack)/buildin/module.js","/w/extensions/Popups/./src/constants.js","/w/extensions/Popups/./src/bracketedPixelRatio.js","/w/extensions/Popups/./src/preview/model.js","/w/extensions/Popups/./src/formatter.js","/w/extensions/Popups/./src/gateway/mediawiki.js","/w/extensions/Popups/./src/gateway/rest.js","/w/extensions/Popups/./src/gateway/restFormatters.js","/w/extensions/Popups/./src/gateway/page.js","/w/extensions/Popups/./src/gateway/reference.js","/w/extensions/Popups/./src/ui/templates/templateUtil.js","/w/extensions/Popups/./src/ui/templates/settingsDialog/settingsDialog.js","/w/extensions/Popups/./src/ui/settingsDialogRenderer.js","/w/extensions/Popups/./src/ui/settingsDialog.js","/w/extensions/Popups/./src/changeListener.js","/w/extensions/Popups/./src/title.js","/w/extensions/Popups/./src/wait.js","/w/extensions/Popups/./src/ui/thumbnail.js","/w/extensions/Popups/./src/ui/templates/popup/popup.js","/w/extensions/Popups/./src/ui/templates/preview/preview.js","/w/extensions/Popups/./src/ui/templates/referencePreview/referencePreview.js","/w/extensions/Popups/./src/ui/templates/pagePreview/pagePreview.js","/w/extensions/Popups/./src/ui/renderer.js","/w/extensions/Popups/./src/changeListeners/syncUserSettings.js","/w/extensions/Popups/./src/changeListeners/index.js","/w/extensions/Popups/./src/changeListeners/footerLink.js","/w/extensions/Popups/./src/changeListeners/linkTitle.js","/w/extensions/Popups/./src/changeListeners/pageviews.js","/w/extensions/Popups/./src/changeListeners/render.js","/w/extensions/Popups/./src/changeListeners/settings.js","/w/extensions/Popups/./src/changeListeners/statsv.js","/w/extensions/Popups/./src/actionTypes.js","/w/extensions/Popups/./src/actions.js","/w/extensions/Popups/./src/reducers/nextState.js","/w/extensions/Popups/./src/reducers/index.js","/w/extensions/Popups/./src/reducers/pageviews.js","/w/extensions/Popups/./src/reducers/preview.js","/w/extensions/Popups/./src/reducers/settings.js","/w/extensions/Popups/./src/reducers/statsv.js","/w/extensions/Popups/./src/index.js","/w/extensions/Popups/./src/setUserConfigFlags.js","/w/extensions/Popups/./src/experiments.js","/w/extensions/Popups/./src/userSettings.js","/w/extensions/Popups/./src/isReferencePreviewsEnabled.js","/w/extensions/Popups/./src/instrumentation/statsv.js","/w/extensions/Popups/./src/isPagePreviewsEnabled.js","/w/extensions/Popups/./src/previewBehavior.js","/w/extensions/Popups/./src/integrations/mwpopups.js","/w/extensions/Popups/./src/ui/pointer-mask.svg"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","obj","configurable","writable","e","id","loaded","dispatch","getState","withExtraArgument","default","observable","self","window","global","Math","random","toString","substring","split","join","INIT","REPLACE","PROBE_UNKNOWN_ACTION","type","apply","this","arguments","u","a","length","Array","reduce","createStore","Error","f","slice","h","push","indexOf","splice","y","getPrototypeOf","subscribe","replaceReducer","TypeError","next","unsubscribe","combineReducers","keys","forEach","bindActionCreators","applyMiddleware","map","getOwnPropertySymbols","concat","filter","getOwnPropertyDescriptor","compose","__DO_NOT_USE__ActionTypes","g","Function","webpackPolyfill","deprecate","paths","children","bpr","dpr","devicePixelRatio","bracketedPixelRatio","BRACKETED_DEVICE_PIXEL_RATIO","THUMBNAIL_SIZE","max","EXTRACT_LENGTH","previewTypes","TYPE_GENERIC","TYPE_PAGE","TYPE_DISAMBIGUATION","TYPE_REFERENCE","createModel","title","url","languageCode","languageDirection","extract","thumbnail","pageId","processedExtract","processExtract","undefined","getPagePreviewType","createNullModel","getPreviewType","el","config","getNamespaceId","getMainText","isSelfLink","getFragment","$","parent","hasClass","formatPlainTextExtract","plainTextExtract","elements","boldIdentifier","snip","replace","trim","escapedTitle","mw","util","escapeRegExp","regExp","RegExp","part","text","document","createTextNode","makeTitleInExtractBold","extractPageFromResponse","data","query","pages","result","extend","formatter","convertPageToModel","page","canonicalurl","pagelanguagehtmlcode","pagelanguagedir","pageid","createRESTBaseGateway","ajax","extractParser","fetch","endpoint","encodeURIComponent","headers","Accept","acceptLanguage","fetchPreviewForTitle","titleText","getPrefixedDb","xhr","then","catch","jqXHR","textStatus","errorThrown","Deferred","reject","exception","promise","abort","generateThumbnailData","original","thumbSize","parts","source","lastPart","originalIsSafe","filename","test","isSafeImgFormat","filenamePxIndex","width","height","substr","floor","Title","getUrl","lang","dir","originalimage","parseHTMLResponse","extract_html","parseHTML","parsePlainTextResponse","createPagePreviewGateway","gatewayConfig","constants","restConfig","api","action","prop","formatversion","redirects","exintro","exchars","explaintext","exsectionformat","piprop","pithumbsize","pilicense","rvprop","inprop","titles","smaxage","maxage","uselang","createMediaWikiApiGateway","Api","formatters","createReferenceGateway","scrapeReferenceType","$referenceText","KNOWN_TYPES","find","each","index","element","classNames","className","idSelector","escapeSelector","scrapeReferenceText","readyState","model","html","referenceType","sourceElementId","parentNode","resolve","escapeHTML","str","escape","templates","createNodeFromTemplate","div","createElement","innerHTML","firstElementChild","cloneNode","renderSettingsDialog","heading","saveLabel","closeLabel","helpText","okLabel","choices","description","isChecked","escapeChoices","createSettingsDialogRenderer","referencePreviewsAvaliable","$dialog","$overlay","boundActions","msg","createSettingsDialog","addClass","on","enabled","is","saveSettings","hideSettings","appendTo","show","hide","toggleHelp","visible","$el","setEnabled","registerChangeListener","store","callback","previousState","state","fromElement","hash","host","location","pathname","search","isOwnPageAnchorLink","newFromText","decodeURIComponent","contentNamespaces","mwTitle","namespace","isValid","href","linkHref","Uri","hostname","queryLength","pattern","matches","exec","path","fragment","getTitle","wait","delay","deferred","setTimeout","SIZES","w","createThumbnail","rawThumbnail","useCSSClipPath","thumbWidth","thumbHeight","tall","x","aspectRatio","isSquare","img","isNarrow","src","thumbnailWidth","thumbnailHeight","nsSvg","line","createElementNS","points","setAttribute","$thumbnailSVGImage","setAttributeNS","attr","$thumbnail","xmlns","append","createThumbnailSVG","isTall","offset","renderPopup","container","appendChild","renderPreview","showTitle","extractMsg","linkMsg","$popup","remove","LOGGING_SCHEMA","isTracking","renderReferencePreview","titleMsg","message","exists","replaceWith","target","rel","removeClass","tabindex","track","scrolledToBottom","scrollTop","scrollHeight","clientHeight","isOpenRecorded","scrollbarsPresent","isScrollRecorded","isScrolling","$extract","hasHorizontalScroll","scrollWidth","clientWidth","scrollbarHeight","offsetHeight","hasVerticalScroll","scrollbarWidth","offsetWidth","css","bottom","right","toggleClass","navigator","sendBeacon","renderPagePreview","withCSSClipPath","linkTitle","extractWidth","getExtractWidth","init","supportsCSSClipPath","body","pointerMaskSVG","render","preview","hasThumbnail","createPagePreview","createDisambiguationPreview","createReferencePreview","createEmptyPreview","createPreviewWithType","event","token","measures","$link","behavior","layout","isPreviewTall","pointerSpaceSize","offsetLeft","flippedX","flippedY","offsetTop","pageY","getClosestYPosition","clientRects","top","clientTop","clientY","pageX","left","windowWidth","windowHeight","createLayout","classes","predefinedLandscapeImageHeight","popup","maskID","getThumbnailClipPathID","matrix","scaleX","translateX","min","getElementById","setThumbnailClipPath","layoutPreview","hasPointerOnImage","getClasses","first","trigger","previewDwell","previewAbandon","click","settingsUrl","stopPropagation","showSettings","bindBehavior","previewShow","documentElement","getAttribute","fadeInClass","fadeOutClass","CSS","supports","rects","isTop","minY","rect","deltaY","abs","ceil","syncIfChanged","oldState","newState","sync","current","footerLink","$footerLink","$footer","createFooterLink","preventDefault","settings","shouldShowFooterLink","savedTitle","oldLink","activeLink","previewType","destroyTitleAttr","pageviews","pageviewTracker","pageview","source_page_id","source_namespace","namespaceId","source_title","source_url","page_id","page_namespace","page_title","pageviewLogged","previewBehavior","shouldShow","renderer","fetchResponse","activeToken","settingsObj","showHelp","statsv","statsvObj","statsvLogged","syncUserSettings","userSettings","storePreviewCount","storePagePreviewsEnabled","storeReferencePreviewsEnabled","timedAction","baseAction","timestamp","now","boot","initiallyEnabled","user","editCount","types","isNavPopupsEnabled","sessionToken","sessionId","pageToken","getPageviewToken","isAnon","gateway","chain","err","fetchType","when","FETCH_COMPLETE_TARGET_DELAY","getDwellDelay","ex","showNullPreview","linkDwell","generateToken","isNewInteraction","abandon","linkClick","currentToken","validType","oldValue","newValue","nextState","updates","hasOwn","constructor","clone","actionTypes","isUserDwelling","wasClicked","nothingChanged","every","userOptedOut","some","anyDisabled","fetchStartedAt","linkDwellStartedAt","EXCLUDED_LINK_SELECTORS","popupsFlags","parseInt","set","mwExperiments","storage","Redux","generateRandomSessionId","pagePreviewGateway","referenceGateway","isPagePreviewsEnabled","isReferencePreviewsEnabled","referencePreviewsState","options","settingsDialog","experiments","weightedBoolean","trueWeight","getBucket","buckets","true","false","statsvTracker","bucketingRate","isStatsvEnabled","getStatsvTracker","getPageviewTracker","createIsPagePreviewsEnabled","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","reducers","ReduxThunk","actions","createPreviewBehavior","registerActions","changeListeners","registerChangeListeners","popups","isEnabled","createMediaWikiPopupsObject","selectors","excludedLinksSelector","validLinkSelector","rendererInit","titleFromElement","$target","$window","getClientRects","log","warn"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ReduxThunk=e():t.ReduxThunk=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return t[o].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){t.exports=n(1)},function(t,e){\"use strict\";function n(t){return function(e){var n=e.dispatch,o=e.getState;return function(e){return function(r){return\"function\"==typeof r?r(n,o,t):e(r)}}}}e.__esModule=!0;var o=n();o.withExtraArgument=n,e.default=o}])});","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.Redux={})}(this,function(e){\"use strict\";var t=function(e){var t,r=e.Symbol;return\"function\"==typeof r?r.observable?t=r.observable:(t=r(\"observable\"),r.observable=t):t=\"@@observable\",t}(\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof module?module:Function(\"return this\")()),r=function(){return Math.random().toString(36).substring(7).split(\"\").join(\".\")},n={INIT:\"@@redux/INIT\"+r(),REPLACE:\"@@redux/REPLACE\"+r(),PROBE_UNKNOWN_ACTION:function(){return\"@@redux/PROBE_UNKNOWN_ACTION\"+r()}};function o(e,t){var r=t&&t.type;return\"Given \"+(r&&'action \"'+r+'\"'||\"an action\")+', reducer \"'+e+'\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function i(e,t){return function(){return t(e.apply(this,arguments))}}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}e.createStore=function e(r,o,i){var u;if(\"function\"==typeof o&&\"function\"==typeof i||\"function\"==typeof i&&\"function\"==typeof arguments[3])throw Error(\"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function\");if(\"function\"==typeof o&&void 0===i&&(i=o,o=void 0),void 0!==i){if(\"function\"!=typeof i)throw Error(\"Expected the enhancer to be a function.\");return i(e)(r,o)}if(\"function\"!=typeof r)throw Error(\"Expected the reducer to be a function.\");var a=r,c=o,f=[],s=f,d=!1;function l(){s===f&&(s=f.slice())}function p(){if(d)throw Error(\"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");return c}function h(e){if(\"function\"!=typeof e)throw Error(\"Expected the listener to be a function.\");if(d)throw Error(\"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.\");var t=!0;return l(),s.push(e),function(){if(t){if(d)throw Error(\"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.\");t=!1,l();var r=s.indexOf(e);s.splice(r,1)}}}function y(e){if(!function(e){if(\"object\"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e))throw Error(\"Actions must be plain objects. Use custom middleware for async actions.\");if(void 0===e.type)throw Error('Actions may not have an undefined \"type\" property. Have you misspelled a constant?');if(d)throw Error(\"Reducers may not dispatch actions.\");try{d=!0,c=a(c,e)}finally{d=!1}for(var t=f=s,r=0;t.length>r;r++)(0,t[r])();return e}return y({type:n.INIT}),(u={dispatch:y,subscribe:h,getState:p,replaceReducer:function(e){if(\"function\"!=typeof e)throw Error(\"Expected the nextReducer to be a function.\");a=e,y({type:n.REPLACE})}})[t]=function(){var e,r=h;return(e={subscribe:function(e){if(\"object\"!=typeof e||null===e)throw new TypeError(\"Expected the observer to be an object.\");function t(){e.next&&e.next(p())}return t(),{unsubscribe:r(t)}}})[t]=function(){return this},e},u},e.combineReducers=function(e){for(var t=Object.keys(e),r={},i=0;t.length>i;i++){var u=t[i];\"function\"==typeof e[u]&&(r[u]=e[u])}var a,c=Object.keys(r);try{!function(e){Object.keys(e).forEach(function(t){var r=e[t];if(void 0===r(void 0,{type:n.INIT}))throw Error('Reducer \"'+t+\"\\\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.\");if(void 0===r(void 0,{type:n.PROBE_UNKNOWN_ACTION()}))throw Error('Reducer \"'+t+\"\\\" returned undefined when probed with a random type. Don't try to handle \"+n.INIT+' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(r)}catch(e){a=e}return function(e,t){if(void 0===e&&(e={}),a)throw a;for(var n=!1,i={},u=0;c.length>u;u++){var f=c[u],s=e[f],d=(0,r[f])(s,t);if(void 0===d){var l=o(f,t);throw Error(l)}i[f]=d,n=n||d!==s}return n?i:e}},e.bindActionCreators=function(e,t){if(\"function\"==typeof e)return i(e,t);if(\"object\"!=typeof e||null===e)throw Error(\"bindActionCreators expected an object or a function, instead received \"+(null===e?\"null\":typeof e)+'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');for(var r=Object.keys(e),n={},o=0;r.length>o;o++){var u=r[o],a=e[u];\"function\"==typeof a&&(n[u]=i(a,t))}return n},e.applyMiddleware=function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];return function(e){return function(){var r=e.apply(void 0,arguments),n=function(){throw Error(\"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\")},o={getState:r.getState,dispatch:function(){return n.apply(void 0,arguments)}},i=t.map(function(e){return e(o)});return function(e){for(var t=1;arguments.length>t;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);\"function\"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){u(e,t,r[t])})}return e}({},r,{dispatch:n=a.apply(void 0,i)(r.dispatch)})}}},e.compose=a,e.__DO_NOT_USE__ActionTypes=n,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import bracketedPixelRatio from './bracketedPixelRatio';\n\nconst bpr = bracketedPixelRatio();\n\nexport default {\n\tBRACKETED_DEVICE_PIXEL_RATIO: bpr,\n\t// See https://phabricator.wikimedia.org/T272169: requesting a larger thumbnail to avoid bluriness\n\tTHUMBNAIL_SIZE: 320 * Math.max( bpr, 1.5 ),\n\tEXTRACT_LENGTH: 525\n};\n","/**\n * @module bracketedPixelRatio\n */\n\n/**\n * Normalizes a user's device pixel ratio to either 1, 1.5, or 2.\n *\n * This is important when the server resizes images on the fly in order to\n * reduce the work it has to do for device pixel ratios that deviate from a\n * set of common ratios.\n *\n * Adapted from mediawiki/core /resources/src/jquery/jquery.hidpi.js\n *\n * @param {number} [dpr=window.devicePixelRatio]\n * @return {number} The bracketed device pixel ratio\n */\nexport default function ( dpr = window.devicePixelRatio ) {\n\tif ( !dpr ) {\n\t\t// Probably legacy browser so assume 1\n\t\treturn 1;\n\t}\n\n\tif ( dpr > 1.5 ) {\n\t\treturn 2;\n\t}\n\n\tif ( dpr > 1 ) {\n\t\treturn 1.5;\n\t}\n\n\treturn 1;\n}\n","/**\n * @module preview/model\n */\n\n/**\n * Page Preview types as defined in Schema:Popups\n * https://meta.wikimedia.org/wiki/Schema:Popups\n *\n * @constant {Object}\n */\nconst previewTypes = {\n\t/** Empty preview used in error situations */\n\tTYPE_GENERIC: 'generic',\n\t/** Standard page preview with or without thumbnail */\n\tTYPE_PAGE: 'page',\n\t/** Disambiguation page preview */\n\tTYPE_DISAMBIGUATION: 'disambiguation',\n\t/** Reference preview **/\n\tTYPE_REFERENCE: 'reference'\n};\n\nexport { previewTypes };\n\n/**\n * Preview Model\n *\n * @typedef {Object} PreviewModel\n * @property {string} url The canonical URL of the page being previewed\n * @property {string} type One of the previewTypes.TYPE_… constants.\n *\n * @global\n */\n\n/**\n * @typedef {Object} PagePreviewModel\n * @extends PreviewModel\n * @property {string} title\n * @property {Array|undefined} extract `undefined` if the extract isn't\n * viable, e.g. if it's empty after having ellipsis and parentheticals\n * removed; this can be used to present default or error states\n * @property {string} languageCode\n * @property {string} languageDirection Either \"ltr\" or \"rtl\", or an empty string if undefined.\n * @property {{source: string, width: number, height: number}|undefined} thumbnail\n * @property {number} pageId Currently not used by any known popup type.\n *\n * @global\n */\n\n/**\n * @typedef {Object} ReferencePreviewModel\n * @extends PreviewModel\n * @property {string} extract An HTML snippet, not necessarily with a single top-level node\n * @property {string} referenceType A type identifier, e.g. \"web\"\n * @property {string} sourceElementId ID of the parent element that triggered the preview\n *\n * @global\n */\n\n/**\n * Creates a page preview model.\n *\n * @param {string} title\n * @param {string} url The canonical URL of the page being previewed\n * @param {string} languageCode\n * @param {string} languageDirection Either \"ltr\" or \"rtl\"\n * @param {Array|undefined|null} extract\n * @param {string} type\n * @param {{source: string, width: number, height: number}|undefined} [thumbnail]\n * @param {number} [pageId]\n * @return {PagePreviewModel}\n */\nexport function createModel(\n\ttitle,\n\turl,\n\tlanguageCode,\n\tlanguageDirection,\n\textract,\n\ttype,\n\tthumbnail,\n\tpageId\n) {\n\tconst processedExtract = processExtract( extract ),\n\t\tpreviewType = getPagePreviewType( type, processedExtract );\n\n\treturn {\n\t\ttitle,\n\t\turl,\n\t\tlanguageCode,\n\t\tlanguageDirection,\n\t\textract: processedExtract,\n\t\ttype: previewType,\n\t\tthumbnail,\n\t\tpageId\n\t};\n}\n\n/**\n * Creates an empty page preview model.\n *\n * @param {string} title\n * @param {string} url\n * @return {PagePreviewModel}\n */\nexport function createNullModel( title, url ) {\n\treturn createModel( title, url, '', '', [], '' );\n}\n\n/**\n * Determines the applicable popup type based on title and link element.\n *\n * @param {HTMLAnchorElement} el\n * @param {mw.Map} config\n * @param {mw.Title} title\n * @return {string|null} One of the previewTypes.TYPE_… constants\n */\nexport function getPreviewType( el, config, title ) {\n\tif ( !isSelfLink( title, config ) ) {\n\t\treturn previewTypes.TYPE_PAGE;\n\t}\n\n\t// The other selector can potentially pick up self-links with a class=\"reference\"\n\t// parent, but no fragment\n\tif ( title.getFragment() &&\n\t\tconfig.get( 'wgPopupsReferencePreviews' ) &&\n\t\t// eslint-disable-next-line no-jquery/no-class-state\n\t\t$( el ).parent().hasClass( 'reference' )\n\t) {\n\t\treturn previewTypes.TYPE_REFERENCE;\n\t}\n\n\treturn null;\n}\n\n/**\n * @param {mw.Title} title\n * @param {mw.Map} config\n * @return {boolean} True when the link points to the current page.\n */\nfunction isSelfLink( title, config ) {\n\treturn title.getNamespaceId() === config.get( 'wgNamespaceNumber' ) &&\n\t\ttitle.getMainText() === config.get( 'wgTitle' );\n}\n\n/**\n * Processes the extract returned by the TextExtracts MediaWiki API query\n * module.\n *\n * If the extract is `undefined`, `null`, or empty, then `undefined` is\n * returned.\n *\n * @param {Array|undefined|null} extract\n * @return {Array|undefined} Array when extract is an not empty array, undefined\n * otherwise\n */\nfunction processExtract( extract ) {\n\tif ( extract === undefined || extract === null || extract.length === 0 ) {\n\t\treturn undefined;\n\t}\n\treturn extract;\n}\n\n/**\n * Determines the page preview type based on whether or not:\n * a. Is the preview empty.\n * b. The preview type matches one of previewTypes.\n * c. Assume standard page preview if both above are false\n *\n * @param {string} type\n * @param {Array|undefined} [processedExtract]\n * @return {string} One of the previewTypes.TYPE_… constants.\n */\n\nfunction getPagePreviewType( type, processedExtract ) {\n\tif ( processedExtract === undefined ) {\n\t\treturn previewTypes.TYPE_GENERIC;\n\t}\n\n\tswitch ( type ) {\n\t\tcase previewTypes.TYPE_GENERIC:\n\t\tcase previewTypes.TYPE_DISAMBIGUATION:\n\t\tcase previewTypes.TYPE_PAGE:\n\t\t\treturn type;\n\t\tdefault:\n\t\t\t/**\n\t\t\t * Assume type=\"page\" if extract exists & not one of previewTypes.\n\t\t\t * Note:\n\t\t\t * - Restbase response includes \"type\" prop but other gateways don't.\n\t\t\t * - event-logging Schema:Popups requires type=\"page\" but restbase\n\t\t\t * provides type=\"standard\". Model must conform to event-logging schema.\n\t\t\t */\n\t\t\treturn previewTypes.TYPE_PAGE;\n\t}\n}\n","/**\n * Improves the plain text extracts\n *\n * @param {string} plainTextExtract\n * @param {string} title\n * @return {Array}\n */\nexport function formatPlainTextExtract( plainTextExtract, title ) {\n\tlet extract = plainTextExtract;\n\tif ( plainTextExtract === undefined ) {\n\t\treturn [];\n\t}\n\n\t// After cleaning the extract it may have been blanked\n\tif ( extract.length === 0 ) {\n\t\treturn [];\n\t}\n\n\textract = makeTitleInExtractBold( extract, title );\n\treturn extract;\n}\n\n/**\n * Converts the extract into a list of elements, which correspond to fragments\n * of the extract. Fragments that match the title verbatim are wrapped in a\n * `` element.\n *\n * Using the bolded elements of the extract of the page directly is covered by\n * [T141651](https://phabricator.wikimedia.org/T141651).\n *\n * Extracted from `mw.popups.renderer.article.getProcessedElements`.\n *\n * @param {string} extract\n * @param {string} title\n * @return {Array} A set of HTML Elements\n */\nfunction makeTitleInExtractBold( extract, title ) {\n\tconst elements = [],\n\t\tboldIdentifier = ``,\n\t\tsnip = ``;\n\n\ttitle = title.replace( /\\s+/g, ' ' ).trim(); // Remove extra white spaces\n\tconst escapedTitle = mw.util.escapeRegExp( title );\n\tconst regExp = new RegExp( `(^|\\\\s)(${escapedTitle})(|$)`, 'i' );\n\n\t// Remove text in parentheses along with the parentheses\n\textract = extract.replace( /\\s+/, ' ' ); // Remove extra white spaces\n\n\t// Make title bold in the extract text\n\t// As the extract is html escaped there can be no such string in it\n\t// Also, the title is escaped of RegExp elements thus can't have \"*\"\n\textract = extract.replace(\n\t\tregExp,\n\t\t`$1${snip}${boldIdentifier}$2${snip}$3`\n\t);\n\textract = extract.split( snip );\n\n\textract.forEach( ( part ) => {\n\t\tif ( part.indexOf( boldIdentifier ) === 0 ) {\n\t\t\telements.push( $( '' )\n\t\t\t\t.text( part.substring( boldIdentifier.length ) ) );\n\t\t} else {\n\t\t\telements.push( document.createTextNode( part ) );\n\t\t}\n\t} );\n\n\treturn elements;\n}\n","/**\n * @module gateway/mediawiki\n */\n\nimport { createModel } from '../preview/model';\nimport * as formatter from '../formatter';\n\n// Public and private cache lifetime (5 minutes)\n//\n// FIXME: Move this to src/constants.js.\nconst CACHE_LIFETIME = 300;\n\n/**\n * @typedef {Gateway} MediaWikiGateway\n * @property {function(Object): Object} extractPageFromResponse\n * @property {function(Object): Object} formatPlainTextExtract\n */\n\n/**\n * Creates an instance of the MediaWiki API gateway.\n *\n * @param {mw.Api} api\n * @param {Object} config Configuration that affects the major behavior of the\n * gateway.\n * @param {number} config.THUMBNAIL_SIZE The length of the major dimension of\n * the thumbnail.\n * @param {number} config.EXTRACT_LENGTH The maximum length, in characters,\n * of the extract.\n * @param {string} config.acceptLanguage The accepted language sent in the\n * header\n * @return {MediaWikiGateway}\n */\nexport default function createMediaWikiApiGateway( api, config ) {\n\tfunction fetch( title ) {\n\t\treturn api.get( {\n\t\t\taction: 'query',\n\t\t\tprop: 'info|extracts|pageimages|revisions|info',\n\t\t\tformatversion: 2,\n\t\t\tredirects: true,\n\t\t\texintro: mw.config.get( 'wgPopupsTextExtractsIntroOnly', true ),\n\t\t\texchars: config.EXTRACT_LENGTH,\n\n\t\t\t// There is an added geometric limit on .mwe-popups-extract\n\t\t\t// so that text does not overflow from the card.\n\t\t\texplaintext: true,\n\t\t\texsectionformat: 'plain',\n\n\t\t\tpiprop: 'thumbnail',\n\t\t\tpithumbsize: config.THUMBNAIL_SIZE,\n\t\t\tpilicense: 'any',\n\t\t\trvprop: 'timestamp',\n\t\t\tinprop: 'url',\n\t\t\ttitles: title,\n\t\t\tsmaxage: CACHE_LIFETIME,\n\t\t\tmaxage: CACHE_LIFETIME,\n\t\t\tuselang: 'content'\n\t\t}, {\n\t\t\theaders: {\n\t\t\t\t'X-Analytics': 'preview=1',\n\t\t\t\t'Accept-Language': config.acceptLanguage\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @param {mw.Title} title\n\t * @return {AbortPromise}\n\t */\n\tfunction fetchPreviewForTitle( title ) {\n\t\tconst xhr = fetch( title.getPrefixedDb() );\n\t\treturn xhr.then( ( data ) => {\n\t\t\tconst page = extractPageFromResponse( data );\n\t\t\tconst plainTextExtract = formatPlainTextExtract( page );\n\t\t\treturn convertPageToModel( plainTextExtract );\n\t\t} ).promise( {\n\t\t\tabort() {\n\t\t\t\txhr.abort();\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn {\n\t\tfetch,\n\t\textractPageFromResponse,\n\t\tconvertPageToModel,\n\t\tfetchPreviewForTitle,\n\t\tformatPlainTextExtract\n\t};\n}\n\n/**\n * Extracts page data from the API response.\n *\n * @method\n * @name MediaWikiGateway#extractPageFromResponse\n * @param {Object} data The response\n * @throws {Error} If the response is empty or doesn't contain data about the\n * page\n * @return {Object}\n */\nfunction extractPageFromResponse( data ) {\n\tif (\n\t\tdata.query &&\n\t\tdata.query.pages &&\n\t\tdata.query.pages.length\n\t) {\n\t\treturn data.query.pages[ 0 ];\n\t}\n\n\tthrow new Error( 'API response `query.pages` is empty.' );\n}\n\n/**\n * Make plain text nicer by applying formatter.\n *\n * @method\n * @name MediaWikiGateway#formatPlainTextExtract\n * @param {Object} data The response\n * @return {Object}\n */\nfunction formatPlainTextExtract( data ) {\n\tconst result = $.extend( {}, data );\n\tresult.extract = formatter.formatPlainTextExtract( data.extract, data.title );\n\treturn result;\n}\n\n/**\n * Converts the API response to a preview model.\n *\n * @method\n * @name MediaWikiGateway#convertPageToModel\n * @param {Object} page\n * @return {PagePreviewModel}\n */\nfunction convertPageToModel( page ) {\n\treturn createModel(\n\t\tpage.title,\n\t\tpage.canonicalurl,\n\t\tpage.pagelanguagehtmlcode,\n\t\tpage.pagelanguagedir,\n\t\tpage.extract,\n\t\tpage.type,\n\t\tpage.thumbnail,\n\t\tpage.pageid\n\t);\n}\n","/**\n * @module gateway/rest\n */\n\nimport { createModel } from '../preview/model';\n\nconst RESTBASE_PROFILE = 'https://www.mediawiki.org/wiki/Specs/Summary/1.2.0';\n\n/** @typedef {function(JQuery.AjaxSettings=): JQuery.jqXHR} Ajax */\n\n/**\n * Creates an instance of the RESTBase gateway.\n *\n * This gateway differs from the {@link MediaWikiGateway MediaWiki gateway} in\n * that it fetches page data from [the RESTBase page summary endpoint][0].\n *\n * [0]: https://en.wikipedia.org/api/rest_v1/#!/Page_content/get_page_summary_title\n *\n * @param {Ajax} ajax A function with the same signature as `jQuery.ajax`\n * @param {Object} config Configuration that affects the major behavior of the\n * gateway.\n * @param {Function} extractParser A function that takes response and returns\n * parsed extract\n * @return {Gateway}\n */\nexport default function createRESTBaseGateway( ajax, config, extractParser ) {\n\t/**\n\t * Fetches page data from [the RESTBase page summary endpoint][0].\n\t *\n\t * [0]: https://en.wikipedia.org/api/rest_v1/#!/Page_content/get_page_summary_title\n\t *\n\t * @method\n\t * @name RESTBaseGateway#fetch\n\t * @param {string} title\n\t * @return {JQuery.jqXHR}\n\t */\n\tfunction fetch( title ) {\n\t\tconst endpoint = config.endpoint;\n\n\t\treturn ajax( {\n\t\t\turl: endpoint + encodeURIComponent( title ),\n\t\t\theaders: {\n\t\t\t\tAccept: `application/json; charset=utf-8; profile=\"${RESTBASE_PROFILE}\"`,\n\t\t\t\t'Accept-Language': config.acceptLanguage\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @param {mw.Title} title\n\t * @return {AbortPromise}\n\t */\n\tfunction fetchPreviewForTitle( title ) {\n\t\tconst titleText = title.getPrefixedDb(),\n\t\t\txhr = fetch( titleText );\n\t\treturn xhr.then( ( page ) => {\n\t\t\t// Endpoint response may be empty or simply missing a title.\n\t\t\tpage = page || {};\n\t\t\tpage.title = page.title || titleText;\n\t\t\t// And extract may be omitted if empty string\n\t\t\tpage.extract = page.extract || '';\n\t\t\treturn convertPageToModel(\n\t\t\t\tpage, config.THUMBNAIL_SIZE, extractParser\n\t\t\t);\n\t\t} ).catch( ( jqXHR, textStatus, errorThrown ) => {\n\t\t\t// The client will choose how to handle these errors which may include\n\t\t\t// those due to HTTP 4xx and 5xx status. The rejection typing matches\n\t\t\t// fetch failures.\n\t\t\treturn $.Deferred().reject( 'http', {\n\t\t\t\txhr: jqXHR,\n\t\t\t\ttextStatus,\n\t\t\t\texception: errorThrown\n\t\t\t} );\n\t\t} ).promise( { abort() { xhr.abort(); } } );\n\t}\n\n\treturn {\n\t\tfetch,\n\t\tconvertPageToModel,\n\t\tfetchPreviewForTitle\n\t};\n}\n\n/**\n * Checks whether the `originalImage` property contains an image\n * format that's safe to render.\n * https://www.mediawiki.org/wiki/Help:Images#Supported_media_types_for_images\n *\n * @param {string} filename\n *\n * @return {boolean}\n */\nfunction isSafeImgFormat( filename ) {\n\tconst safeImage = new RegExp( /\\.(jpg|jpeg|png|gif)$/i );\n\treturn safeImage.test( filename );\n}\n\n/**\n * Resizes the thumbnail to the requested width, preserving its aspect ratio.\n *\n * The requested width is limited to that of the original image unless the image\n * is an SVG, which can be scaled infinitely.\n *\n * This function is only intended to mangle the pretty thumbnail URLs used on\n * Wikimedia Commons. Once [an official thumb API](https://phabricator.wikimedia.org/T66214)\n * is fully specified and implemented, this function can be made more general.\n *\n * @param {Object} thumbnail The thumbnail image\n * @param {Object} original The original image\n * @param {number} thumbSize The requested size\n * @return {{source: string, width: number, height: number}|undefined}\n */\nfunction generateThumbnailData( thumbnail, original, thumbSize ) {\n\tconst parts = thumbnail.source.split( '/' ),\n\t\tlastPart = parts[ parts.length - 1 ],\n\t\toriginalIsSafe = isSafeImgFormat( original.source ) || undefined;\n\n\t// The last part, the thumbnail's full filename, is in the following form:\n\t// ${width}px-${filename}.${extension}. Splitting the thumbnail's filename\n\t// makes this function resilient to the thumbnail not having the same\n\t// extension as the original image, which is definitely the case for SVG's\n\t// where the thumbnail's extension is .svg.png.\n\tconst filenamePxIndex = lastPart.indexOf( 'px-' );\n\tif ( filenamePxIndex === -1 ) {\n\t\t// The thumbnail size is not customizable. Presumably, RESTBase requested a\n\t\t// width greater than the original and so MediaWiki returned the original's\n\t\t// URL instead of a thumbnail compatible URL. An original URL does not have\n\t\t// a \"thumb\" path, e.g.:\n\t\t//\n\t\t// https://upload.wikimedia.org/wikipedia/commons/a/aa/Red_Giant_Earth_warm.jpg\n\t\t//\n\t\t// Instead of:\n\t\t//\n\t\t// https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Red_Giant_Earth_warm.jpg/512px-Red_Giant_Earth_warm.jpg\n\t\t//\n\t\t// Use the original if it's a supported image format.\n\t\treturn originalIsSafe && original;\n\t}\n\tconst filename = lastPart.substr( filenamePxIndex + 3 );\n\n\t// Scale the thumbnail's largest dimension.\n\tlet width, height;\n\tif ( thumbnail.width > thumbnail.height ) {\n\t\twidth = thumbSize;\n\t\theight = Math.floor( ( thumbSize / thumbnail.width ) * thumbnail.height );\n\t} else {\n\t\twidth = Math.floor( ( thumbSize / thumbnail.height ) * thumbnail.width );\n\t\theight = thumbSize;\n\t}\n\n\t// If the image isn't an SVG, then it shouldn't be scaled past its original\n\t// dimensions.\n\tif ( width >= original.width && filename.indexOf( '.svg' ) === -1 ) {\n\t\t// if the image format is not supported, it shouldn't be rendered.\n\t\treturn originalIsSafe && original;\n\t}\n\n\tparts[ parts.length - 1 ] = `${width}px-${filename}`;\n\n\treturn {\n\t\tsource: parts.join( '/' ),\n\t\twidth,\n\t\theight\n\t};\n}\n\n/**\n * Converts the API response to a preview model.\n *\n * @method\n * @name RESTBaseGateway#convertPageToModel\n * @param {Object} page\n * @param {number} thumbSize\n * @param {Function} extractParser\n * @return {PagePreviewModel}\n */\nexport function convertPageToModel( page, thumbSize, extractParser ) {\n\treturn createModel(\n\t\tpage.title,\n\t\tnew mw.Title( page.title ).getUrl(),\n\t\tpage.lang,\n\t\tpage.dir,\n\t\textractParser( page ),\n\t\tpage.type,\n\t\tpage.thumbnail ?\n\t\t\tgenerateThumbnailData(\n\t\t\t\tpage.thumbnail, page.originalimage, thumbSize\n\t\t\t) : undefined,\n\t\tpage.pageid\n\t);\n}\n","import * as formatter from '../formatter';\n\n/**\n * Prepare extract\n *\n * @param {Object} page Rest response\n * @return {Array} An array of DOM Elements\n */\nexport function parseHTMLResponse( page ) {\n\tconst extract = page.extract_html;\n\n\treturn extract.length === 0 ? [] : $.parseHTML( extract );\n}\n\n/**\n * Prepare extract\n *\n * @param {Object} page Rest response\n * @return {Array} An array of DOM Elements\n */\nexport function parsePlainTextResponse( page ) {\n\treturn formatter.formatPlainTextExtract( page.extract, page.title );\n}\n","/**\n * @module gateway/page\n */\n\nimport constants from '../constants';\nimport createMediaWikiApiGateway from './mediawiki';\nimport createRESTBaseGateway from './rest';\nimport * as formatters from './restFormatters';\n\n/**\n * Creates a page preview gateway with sensible values for the dependencies.\n *\n * @param {mw.Map} config\n * @return {Gateway}\n */\nexport default function createPagePreviewGateway( config ) {\n\tconst gatewayConfig = $.extend( {}, constants, {\n\t\tacceptLanguage: config.get( 'wgPageContentLanguage' )\n\t} );\n\tconst restConfig = $.extend( {}, gatewayConfig, {\n\t\tendpoint: config.get( 'wgPopupsRestGatewayEndpoint' )\n\t} );\n\tswitch ( config.get( 'wgPopupsGateway' ) ) {\n\t\tcase 'mwApiPlain':\n\t\t\treturn createMediaWikiApiGateway( new mw.Api(), gatewayConfig );\n\t\tcase 'restbasePlain':\n\t\t\treturn createRESTBaseGateway(\n\t\t\t\t$.ajax, restConfig, formatters.parsePlainTextResponse );\n\t\tcase 'restbaseHTML':\n\t\t\treturn createRESTBaseGateway(\n\t\t\t\t$.ajax, restConfig, formatters.parseHTMLResponse );\n\t\tdefault:\n\t\t\tthrow new Error( 'Unknown gateway' );\n\t}\n}\n","/**\n * @module gateway/reference\n */\n\nimport { previewTypes } from '../preview/model';\n\n/**\n * @return {Gateway}\n */\nexport default function createReferenceGateway() {\n\n\tfunction scrapeReferenceText( id ) {\n\t\tconst idSelector = `#${$.escapeSelector( id )}`;\n\n\t\t/**\n\t\t * Same alternative selectors with and without mw-… as in the RESTbased endpoint.\n\t\t *\n\t\t * @see https://phabricator.wikimedia.org/diffusion/GMOA/browse/master/lib/transformations/references/structureReferenceListContent.js$138\n\t\t */\n\t\treturn $( `${idSelector} .mw-reference-text, ${idSelector} .reference-text` );\n\t}\n\n\t/**\n\t * Attempts to find a single reference type identifier, limited to a list of known types.\n\t * - When a `class=\"…\"` attribute mentions multiple known types, the last one is used, following\n\t * CSS semantics.\n\t * - When there are multiple tags, the first with a known type is used.\n\t *\n\t * @param {JQuery} $referenceText\n\t * @return {string|null}\n\t */\n\tfunction scrapeReferenceType( $referenceText ) {\n\t\tconst KNOWN_TYPES = [ 'book', 'journal', 'news', 'note', 'web' ];\n\t\tlet type = null;\n\t\t$referenceText.find( 'cite[class]' ).each( ( index, element ) => {\n\t\t\tconst classNames = element.className.split( /\\s+/ );\n\t\t\tfor ( let i = classNames.length; i--; ) {\n\t\t\t\tif ( KNOWN_TYPES.indexOf( classNames[ i ] ) !== -1 ) {\n\t\t\t\t\ttype = classNames[ i ];\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\treturn type;\n\t}\n\n\t/**\n\t * @param {mw.Title} title\n\t * @param {HTMLAnchorElement} el\n\t * @return {AbortPromise}\n\t */\n\tfunction fetchPreviewForTitle( title, el ) {\n\t\t// Need to encode the fragment again as mw.Title returns it as decoded text\n\t\tconst id = title.getFragment().replace( / /g, '_' ),\n\t\t\t$referenceText = scrapeReferenceText( id );\n\n\t\tif ( !$referenceText.length ||\n\t\t\t// Skip references that don't contain anything but whitespace, e.g. a single  \n\t\t\t( !$referenceText.text().trim() && !$referenceText.children().length )\n\t\t) {\n\t\t\treturn $.Deferred().reject(\n\t\t\t\t'Footnote not found or empty',\n\t\t\t\t// Required to set `showNullPreview` to false and not open an error popup\n\t\t\t\t{ textStatus: 'abort', xhr: { readyState: 0 } }\n\t\t\t).promise( { abort() {} } );\n\t\t}\n\n\t\tconst model = {\n\t\t\turl: `#${id}`,\n\t\t\textract: $referenceText.html(),\n\t\t\ttype: previewTypes.TYPE_REFERENCE,\n\t\t\treferenceType: scrapeReferenceType( $referenceText ),\n\t\t\t// Note: Even the top-most HTMLHtmlElement is guaranteed to have a parent.\n\t\t\tsourceElementId: el.parentNode.id\n\t\t};\n\n\t\treturn $.Deferred().resolve( model ).promise( { abort() {} } );\n\t}\n\n\treturn {\n\t\tfetchPreviewForTitle\n\t};\n}\n","/**\n * @module templateUtil\n */\n\n/**\n * @param {string} str\n * @return {string} The string with any HTML entities escaped.\n */\nexport function escapeHTML( str ) {\n\treturn mw.html.escape( str );\n}\n\nconst templates = {};\n/**\n * @param {string} html markup of the template\n * @return {Element} a cloned root element of the template\n */\nexport function createNodeFromTemplate( html ) {\n\tif ( !templates[ html ] ) {\n\t\t// TODO: use