/*! Bundled by webpack from entry point: ./_Scripts/PartialJS/full/index.ts */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./Content/Js/third-party/event-emitter.js": /*!*************************************************!*\ !*** ./Content/Js/third-party/event-emitter.js ***! \*************************************************/ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__; /** * EventEmitter v4.0.1 - git.io/gTW-jg * Oliver Caldwell * MIT license */ ; (function (exports) { // JSHint config - http://www.jshint.com/ /*jshint laxcomma:true*/ /*global define:true*/ // Place the script in strict mode 'use strict'; /** * Class for managing events. * Can be extended to provide event functionality in other classes. * * @class Manages event registering and emitting. */ function EventEmitter() { } // Shortcuts to improve speed and size // Easy access to the prototype var proto = EventEmitter.prototype // Blank array used when no arguments are passed to emitEvent , argumentsPlaceholder = [] // Existence of a native index , nativeIndexOf = argumentsPlaceholder.indexOf ? true : false; /** * Finds the index of the listener for the event in it's storage array * * @param {Function} listener Method to look for. * @param {Function[]} listeners Array of listeners to search through. * @return {Number} Index of the specified listener, -1 if not found */ function indexOfListener(listener, listeners) { // Return the index via the native method if possible if (nativeIndexOf) { return listeners.indexOf(listener); } // There is no native method // Use a manual loop to find the index var i = listeners.length; while (i--) { // If the listener matches, return it's index if (listeners[i] === listener) { return i; } } // Default to returning -1 return -1; } /** * Returns the listener array for the specified event. * Will initialise the event object and listener arrays if required. * * @param {String} evt Name of the event to return the listeners from. * @return {Function[]} All listener functions for the event. * @doc */ proto.getListeners = function (evt) { // Create a shortcut to the storage object // Initialise it if it does not exists yet var events = this._events || (this._events = {}); // Return the listener array // Initialise it if it does not exist return events[evt] || (events[evt] = []); }; /** * Adds a listener function to the specified event. * The listener will not be added if it is a duplicate. * If the listener returns true then it will be removed after it is called. * * @param {String} evt Name of the event to attach the listener to. * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.addListener = function (evt, listener) { // Fetch the listeners var listeners = this.getListeners(evt); // Push the listener into the array if it is not already there if (indexOfListener(listener, listeners) === -1) { listeners.push(listener); } // Return the instance of EventEmitter to allow chaining return this; }; /** * Removes a listener function from the specified event. * * @param {String} evt Name of the event to remove the listener from. * @param {Function} listener Method to remove from the event. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.removeListener = function (evt, listener) { // Fetch the listeners // And get the index of the listener in the array var listeners = this.getListeners(evt), index = indexOfListener(listener, listeners); // If the listener was found then remove it if (index !== -1) { listeners.splice(index, 1); // If there are no more listeners in this array then remove it if (listeners.length === 0) { this._events[evt] = null; } } // Return the instance of EventEmitter to allow chaining return this; }; /** * Adds listeners in bulk using the manipulateListeners method. * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. * You can also pass it an event name and an array of listeners to be added. * * @param {String|Object} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once. * @param {Function[]} [listeners] An optional array of listener functions to add. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.addListeners = function (evt, listeners) { // Pass through to manipulateListeners return this.manipulateListeners(false, evt, listeners); }; /** * Removes listeners in bulk using the manipulateListeners method. * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. * You can also pass it an event name and an array of listeners to be removed. * * @param {String|Object} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once. * @param {Function[]} [listeners] An optional array of listener functions to remove. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.removeListeners = function (evt, listeners) { // Pass through to manipulateListeners return this.manipulateListeners(true, evt, listeners); }; /** * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level. * The first argument will determine if the listeners are removed (true) or added (false). * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. * You can also pass it an event name and an array of listeners to be added/removed. * * @param {Boolean} remove True if you want to remove listeners, false if you want to add. * @param {String|Object} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once. * @param {Function[]} [listeners] An optional array of listener functions to add/remove. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.manipulateListeners = function (remove, evt, listeners) { // Initialise any required variables var i, value, single = remove ? this.removeListener : this.addListener, multiple = remove ? this.removeListeners : this.addListeners; // If evt is an object then pass each of it's properties to this method if (typeof evt === 'object') { for (i in evt) { if (evt.hasOwnProperty(i) && (value = evt[i])) { // Pass the single listener straight through to the singular method if (typeof value === 'function') { single.call(this, i, value); } else { // Otherwise pass back to the multiple function multiple.call(this, i, value); } } } } else { // So evt must be a string // And listeners must be an array of listeners // Loop over it and pass each one to the multiple method i = listeners.length; while (i--) { single.call(this, evt, listeners[i]); } } // Return the instance of EventEmitter to allow chaining return this; }; /** * Removes all listeners from a specified event. * If you do not specify an event then all listeners will be removed. * That means every event will be emptied. * * @param {String} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.removeEvent = function (evt) { // Remove different things depending on the state of evt if (evt) { // Remove all listeners for the specified event this._events[evt] = null; } else { // Remove all listeners in all events this._events = null; } // Return the instance of EventEmitter to allow chaining return this; }; /** * Emits an event of your choice. * When emitted, every listener attached to that event will be executed. * If you pass the optional argument array then those arguments will be passed to every listener upon execution. * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately. * So they will not arrive within the array on the other side, they will be separate. * * @param {String} evt Name of the event to emit and execute listeners for. * @param {Array} [args] Optional array of arguments to be passed to each argument. * @return {Object} Current instance of EventEmitter for chaining. * @doc */ proto.emitEvent = function (evt, args) { // Get the listeners for the event // Also initialise any other required variables var listeners = this.getListeners(evt), i = listeners.length; // Loop over all listeners assigned to the event // Apply the arguments array to each listener function while (i--) { // If the listener returns true then it shall be removed from the event if (listeners[i].apply(null, args || argumentsPlaceholder) === true) { this.removeListener(evt, listeners[i]); } } // Return the instance of EventEmitter to allow chaining return this; }; // Expose the class either via AMD or the global object if (true) { !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { return EventEmitter; }).call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else {} }(this)); /***/ }), /***/ "./_Scripts/LegacyJS/constants.mod.js": /*!********************************************!*\ !*** ./_Scripts/LegacyJS/constants.mod.js ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ KEY_CODE: () => (/* binding */ KEY_CODE) /* harmony export */ }); const KEY_CODE = { LEFT_MOUSE: 1, MIDDLE_MOUSE: 2, BACKSPACE: 8, TAB: 9, ENTER: 13, ESC: 27, SPACE: 32, PAGEUP: 33, PAGEDOWN: 34, END: 35, HOME: 36, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, DEL: 46, 0: 48, 1: 49, 2: 50, 3: 51, 4: 52, 5: 53, 6: 54, 7: 55, 8: 56, 9: 57, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, F4: 115, COMMA: 188, }; /***/ }), /***/ "./_Scripts/LegacyJS/full-common/05_StyleCode.mod.js": /*!***********************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/05_StyleCode.mod.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _05_StyleCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./05_StyleCode */ "./_Scripts/LegacyJS/full-common/05_StyleCode.js"); /* harmony import */ var _05_StyleCode__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_05_StyleCode__WEBPACK_IMPORTED_MODULE_0__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (window.styleCode); /***/ }), /***/ "./_Scripts/LegacyJS/full-common/11_Question.mod.js": /*!**********************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/11_Question.mod.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ addAnswerIvcObservers: () => (/* binding */ addAnswerIvcObservers), /* harmony export */ bindAnonymousVoteDisclaimers: () => (/* binding */ bindAnonymousVoteDisclaimers), /* harmony export */ bindFetchAcceptedAnswerDates: () => (/* binding */ bindFetchAcceptedAnswerDates), /* harmony export */ canViewVoteCounts: () => (/* binding */ canViewVoteCounts), /* harmony export */ getQuestionId: () => (/* binding */ getQuestionId), /* harmony export */ init: () => (/* binding */ init), /* harmony export */ initShareLinks: () => (/* binding */ initShareLinks), /* harmony export */ initTitleSearch: () => (/* binding */ initTitleSearch), /* harmony export */ instrumentVotingForVotePromptExperiment: () => (/* binding */ instrumentVotingForVotePromptExperiment), /* harmony export */ scrollToComment: () => (/* binding */ scrollToComment), /* harmony export */ scrollToPost: () => (/* binding */ scrollToPost) /* harmony export */ }); /* harmony import */ var _11_Question__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./11_Question */ "./_Scripts/LegacyJS/full-common/11_Question.js"); const initTitleSearch = StackExchange.question.initTitleSearch; const getQuestionId = StackExchange.question.getQuestionId; const initShareLinks = StackExchange.question.initShareLinks; const canViewVoteCounts = StackExchange.question.canViewVoteCounts; const scrollToPost = StackExchange.question.scrollToPost; const scrollToComment = StackExchange.question.scrollToComment; const instrumentVotingForVotePromptExperiment = StackExchange.question.instrumentVotingForVotePromptExperiment; const init = StackExchange.question.init; const bindAnonymousVoteDisclaimers = StackExchange.question.bindAnonymousVoteDisclaimers; const bindFetchAcceptedAnswerDates = StackExchange.question.bindFetchAcceptedAnswerDates; const addAnswerIvcObservers = StackExchange.question.addAnswerIvcObservers; /***/ }), /***/ "./_Scripts/LegacyJS/full-common/12_Comments.mod.js": /*!**********************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/12_Comments.mod.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ extendPostUi: () => (/* binding */ extendPostUi), /* harmony export */ flashHighlight: () => (/* binding */ flashHighlight), /* harmony export */ highlight: () => (/* binding */ highlight), /* harmony export */ init: () => (/* binding */ init), /* harmony export */ loadAll: () => (/* binding */ loadAll), /* harmony export */ realtimeMessage: () => (/* binding */ realtimeMessage), /* harmony export */ replaceAll: () => (/* binding */ replaceAll), /* harmony export */ uiForPost: () => (/* binding */ uiForPost) /* harmony export */ }); /* harmony import */ var _12_Comments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./12_Comments */ "./_Scripts/LegacyJS/full-common/12_Comments.js"); /* harmony import */ var _12_Comments__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_12_Comments__WEBPACK_IMPORTED_MODULE_0__); const init = StackExchange.comments.init; const loadAll = StackExchange.comments.loadAll; const replaceAll = StackExchange.comments.replaceAll; const realtimeMessage = StackExchange.comments.realtimeMessage; const flashHighlight = StackExchange.comments.flashHighlight; const highlight = StackExchange.comments.highlight; const extendPostUi = StackExchange.comments.extendPostUi; const uiForPost = StackExchange.comments.uiForPost; /***/ }), /***/ "./_Scripts/LegacyJS/full-common/20_Analytics.mod.js": /*!***********************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/20_Analytics.mod.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ bindTrackClicks: () => (/* binding */ bindTrackClicks), /* harmony export */ init: () => (/* binding */ init), /* harmony export */ sendPending: () => (/* binding */ sendPending), /* harmony export */ track: () => (/* binding */ track), /* harmony export */ trackOutboundClicks: () => (/* binding */ trackOutboundClicks) /* harmony export */ }); /* harmony import */ var _20_Analytics__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./20_Analytics */ "./_Scripts/LegacyJS/full-common/20_Analytics.js"); /* harmony import */ var _20_Analytics__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_20_Analytics__WEBPACK_IMPORTED_MODULE_0__); function init(...args) { return StackExchange.gps.init(...args); } function bindTrackClicks(...args) { StackExchange.gps.bindTrackClicks(...args); } function track(...args) { return StackExchange.gps.track(...args); } function sendPending(...args) { return StackExchange.gps.sendPending(...args); } function trackOutboundClicks(...args) { return StackExchange.gps.trackOutboundClicks(...args); } /***/ }), /***/ "./_Scripts/LegacyJS/full-common/21_OpenID.mod.js": /*!********************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/21_OpenID.mod.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ initPostLogin: () => (/* binding */ initPostLogin), /* harmony export */ showLoginModal: () => (/* binding */ showLoginModal) /* harmony export */ }); /* harmony import */ var _21_OpenID__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./21_OpenID */ "./_Scripts/LegacyJS/full-common/21_OpenID.js"); const initPostLogin = StackExchange.openid.initPostLogin; const showLoginModal = StackExchange.openid.showLoginModal; /***/ }), /***/ "./_Scripts/LegacyJS/full-common/controllers sync (?<%21\\.mod)\\.js$": /*!****************************************************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/controllers/ sync nonrecursive (?<%21\.mod)\.js$ ***! \****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./se-char-counter.js": "./_Scripts/LegacyJS/full-common/controllers/se-char-counter.js", "./se-draggable.js": "./_Scripts/LegacyJS/full-common/controllers/se-draggable.js", "./se-share-sheet.js": "./_Scripts/LegacyJS/full-common/controllers/se-share-sheet.js" }; function webpackContext(req) { var id = webpackContextResolve(req); return __webpack_require__(id); } function webpackContextResolve(req) { if(!__webpack_require__.o(map, req)) { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; } return map[req]; } webpackContext.keys = function webpackContextKeys() { return Object.keys(map); }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = "./_Scripts/LegacyJS/full-common/controllers sync (?<%21\\.mod)\\.js$"; /***/ }), /***/ "./_Scripts/LegacyJS/full-common sync (?<%21\\.mod)\\.js$": /*!****************************************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/ sync nonrecursive (?<%21\.mod)\.js$ ***! \****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./00_Header.js": "./_Scripts/LegacyJS/full-common/00_Header.js", "./02_TopBar.js": "./_Scripts/LegacyJS/full-common/02_TopBar.js", "./03_Notify.js": "./_Scripts/LegacyJS/full-common/03_Notify.js", "./04_MoveScroller.js": "./_Scripts/LegacyJS/full-common/04_MoveScroller.js", "./05_StyleCode.js": "./_Scripts/LegacyJS/full-common/05_StyleCode.js", "./07_TagMenu.js": "./_Scripts/LegacyJS/full-common/07_TagMenu.js", "./08_UserMenu.js": "./_Scripts/LegacyJS/full-common/08_UserMenu.js", "./09_ChatAd.js": "./_Scripts/LegacyJS/full-common/09_ChatAd.js", "./10_TagSanitizer.js": "./_Scripts/LegacyJS/full-common/10_TagSanitizer.js", "./11_Question.js": "./_Scripts/LegacyJS/full-common/11_Question.js", "./12_Comments.js": "./_Scripts/LegacyJS/full-common/12_Comments.js", "./14_TagRenderer.js": "./_Scripts/LegacyJS/full-common/14_TagRenderer.js", "./15_FadingHelpText.js": "./_Scripts/LegacyJS/full-common/15_FadingHelpText.js", "./18_jQueryCaretPlugin.js": "./_Scripts/LegacyJS/full-common/18_jQueryCaretPlugin.js", "./19_NoCaptcha.js": "./_Scripts/LegacyJS/full-common/19_NoCaptcha.js", "./20_Analytics.js": "./_Scripts/LegacyJS/full-common/20_Analytics.js", "./21_OpenID.js": "./_Scripts/LegacyJS/full-common/21_OpenID.js", "./22_UniversalAuth.js": "./_Scripts/LegacyJS/full-common/22_UniversalAuth.js", "./33_AnonFkeyCookie.js": "./_Scripts/LegacyJS/full-common/33_AnonFkeyCookie.js", "./34_jqueryUiLoader.js": "./_Scripts/LegacyJS/full-common/34_jqueryUiLoader.js", "./36_FlashMessage.js": "./_Scripts/LegacyJS/full-common/36_FlashMessage.js", "./37_PrepareEditor.js": "./_Scripts/LegacyJS/full-common/37_PrepareEditor.js", "./39_Auth.js": "./_Scripts/LegacyJS/full-common/39_Auth.js", "./40_Hero.js": "./_Scripts/LegacyJS/full-common/40_Hero.js", "./41_Checklist.js": "./_Scripts/LegacyJS/full-common/41_Checklist.js", "./44_StacksValidation.js": "./_Scripts/LegacyJS/full-common/44_StacksValidation.js" }; function webpackContext(req) { var id = webpackContextResolve(req); return __webpack_require__(id); } function webpackContextResolve(req) { if(!__webpack_require__.o(map, req)) { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; } return map[req]; } webpackContext.keys = function webpackContextKeys() { return Object.keys(map); }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = "./_Scripts/LegacyJS/full-common sync (?<%21\\.mod)\\.js$"; /***/ }), /***/ "./_Scripts/LegacyJS/full sync (?<%21\\.mod)\\.js$": /*!*********************************************************************!*\ !*** ./_Scripts/LegacyJS/full/ sync nonrecursive (?<%21\.mod)\.js$ ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./00_Header.js": "./_Scripts/LegacyJS/full/00_Header.js", "./03_QuestionFullInit.js": "./_Scripts/LegacyJS/full/03_QuestionFullInit.js", "./04_Vote.js": "./_Scripts/LegacyJS/full/04_Vote.js", "./05_VoteToCloseAndFlag.js": "./_Scripts/LegacyJS/full/05_VoteToCloseAndFlag.js", "./06_CommentsActive.js": "./_Scripts/LegacyJS/full/06_CommentsActive.js", "./07_CommentTabCompleter.js": "./_Scripts/LegacyJS/full/07_CommentTabCompleter.js", "./08_InlineEditing.js": "./_Scripts/LegacyJS/full/08_InlineEditing.js", "./saves.js": "./_Scripts/LegacyJS/full/saves.js" }; function webpackContext(req) { var id = webpackContextResolve(req); return __webpack_require__(id); } function webpackContextResolve(req) { if(!__webpack_require__.o(map, req)) { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; } return map[req]; } webpackContext.keys = function webpackContextKeys() { return Object.keys(map); }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = "./_Scripts/LegacyJS/full sync (?<%21\\.mod)\\.js$"; /***/ }), /***/ "./_Scripts/LegacyJS/realtime-se.mod.js": /*!**********************************************!*\ !*** ./_Scripts/LegacyJS/realtime-se.mod.js ***! \**********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ debug: () => (/* binding */ debug), /* harmony export */ expandActiveQuestions: () => (/* binding */ expandActiveQuestions), /* harmony export */ expandAnswers: () => (/* binding */ expandAnswers), /* harmony export */ genericSubscribe: () => (/* binding */ genericSubscribe), /* harmony export */ genericUnsubscribe: () => (/* binding */ genericUnsubscribe), /* harmony export */ init: () => (/* binding */ init), /* harmony export */ log: () => (/* binding */ log), /* harmony export */ pauseQuestionNotifications: () => (/* binding */ pauseQuestionNotifications), /* harmony export */ reloadPosts: () => (/* binding */ reloadPosts), /* harmony export */ simulate: () => (/* binding */ simulate), /* harmony export */ subscribeToActiveQuestions: () => (/* binding */ subscribeToActiveQuestions), /* harmony export */ subscribeToCounts: () => (/* binding */ subscribeToCounts), /* harmony export */ subscribeToQuestion: () => (/* binding */ subscribeToQuestion), /* harmony export */ subscribeToReputationNotifications: () => (/* binding */ subscribeToReputationNotifications), /* harmony export */ subscribeToReviewDashboard: () => (/* binding */ subscribeToReviewDashboard), /* harmony export */ subscribeToStagingGroundQuestion: () => (/* binding */ subscribeToStagingGroundQuestion), /* harmony export */ subscribeToTopBarNotifications: () => (/* binding */ subscribeToTopBarNotifications), /* harmony export */ subscribeToUQL: () => (/* binding */ subscribeToUQL), /* harmony export */ unsubscribeToQuestion: () => (/* binding */ unsubscribeToQuestion), /* harmony export */ updateRelativeDates: () => (/* binding */ updateRelativeDates) /* harmony export */ }); /* harmony import */ var _realtime_se__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./realtime-se */ "./_Scripts/LegacyJS/realtime-se.js"); /* harmony import */ var _realtime_se__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_realtime_se__WEBPACK_IMPORTED_MODULE_0__); const init = StackExchange.realtime.init; const log = StackExchange.realtime.log; const simulate = StackExchange.realtime.simulate; const expandActiveQuestions = StackExchange.realtime.expandActiveQuestions; const expandAnswers = StackExchange.realtime.expandAnswers; const subscribeToActiveQuestions = StackExchange.realtime.subscribeToActiveQuestions; const subscribeToUQL = StackExchange.realtime.subscribeToUQL; const subscribeToQuestion = StackExchange.realtime.subscribeToQuestion; const unsubscribeToQuestion = StackExchange.realtime.unsubscribeToQuestion; const pauseQuestionNotifications = StackExchange.realtime.pauseQuestionNotifications; const subscribeToStagingGroundQuestion = StackExchange.realtime.subscribeToStagingGroundQuestion; const subscribeToReputationNotifications = StackExchange.realtime.subscribeToReputationNotifications; const updateRelativeDates = StackExchange.realtime.updateRelativeDates; const subscribeToReviewDashboard = StackExchange.realtime.subscribeToReviewDashboard; const subscribeToTopBarNotifications = StackExchange.realtime.subscribeToTopBarNotifications; const subscribeToCounts = StackExchange.realtime.subscribeToCounts; const genericSubscribe = StackExchange.realtime.genericSubscribe; const genericUnsubscribe = StackExchange.realtime.genericUnsubscribe; const reloadPosts = StackExchange.realtime.reloadPosts; const debug = StackExchange.realtime.debug; /***/ }), /***/ "./_Scripts/LegacyJS/stub.mod.js": /*!***************************************!*\ !*** ./_Scripts/LegacyJS/stub.mod.js ***! \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ debug: () => (/* binding */ debug), /* harmony export */ setTooltipHtml: () => (/* binding */ setTooltipHtml), /* harmony export */ setTooltipText: () => (/* binding */ setTooltipText) /* harmony export */ }); const debug = StackExchange.debug; function setTooltipHtml(jqueryObj, html, options) { jqueryObj.each(function () { Stacks.setTooltipHtml(this, html, options); }); } function setTooltipText(jqueryObj, text, options) { jqueryObj.each(function () { Stacks.setTooltipText(this, text, options); }); } /***/ }), /***/ "./_Scripts/site-includes lazy recursive ^\\.\\/.*\\.mod$ exclude: index": /*!************************************************************************************!*\ !*** ./_Scripts/site-includes/ lazy ^\.\/.*\.mod$ exclude: index namespace object ***! \************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./chess.mod": [ "./_Scripts/site-includes/chess.mod.ts", "_Scripts_site-includes_chess_mod_ts" ], "./mathHideUserRep.mod": [ "./_Scripts/site-includes/mathHideUserRep.mod.ts", "_Scripts_site-includes_mathHideUserRep_mod_ts" ], "./poker.mod": [ "./_Scripts/site-includes/poker.mod.ts", "_Scripts_site-includes_poker_mod_ts" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return __webpack_require__.e(ids[1]).then(() => { return __webpack_require__(id); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "./_Scripts/site-includes lazy recursive ^\\.\\/.*\\.mod$ exclude: index"; module.exports = webpackAsyncContext; /***/ }), /***/ "./node_modules/exports-loader/dist/cjs.js?exports=Svg!./node_modules/imports-loader/dist/cjs.js??ruleSet[1].rules[1].use[0]!./node_modules/ts-loader/index.js??ruleSet[1].rules[2].use[0]!./_Scripts/PartialJS/full-common/99_svg.ts": /*!********************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/exports-loader/dist/cjs.js?exports=Svg!./node_modules/imports-loader/dist/cjs.js??ruleSet[1].rules[1].use[0]!./node_modules/ts-loader/index.js??ruleSet[1].rules[2].use[0]!./_Scripts/PartialJS/full-common/99_svg.ts ***! \********************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Svg: () => (/* binding */ Svg) /* harmony export */ }); /*** IMPORTS FROM imports-loader ***/ StackExchange = window.StackExchange = (window.StackExchange || {}); StackOverflow = window.StackOverflow = (window.StackOverflow || {}); "use strict"; /** NOTE: When this file is removed, also remove the svg loading functionality in webpack.common.ts **/ /** * DO NOT USE THIS; use `createSvgElement` from `Shared/svg-utils.mod.ts` like so: * ``` * import { IconClearSm } from "@stackoverflow/stacks-icons/icon"; * import { createSvgElement } from "./path/to/Shared/svg-utils.mod"; * const icon = createSvgElement(IconClearSm); * ``` * @deprecated */ class Svg { static getSvg(svg) { const $svg = $(svg); const ret = () => $svg; ret.With = function (classes) { return $svg.clone().addClass(classes); }; ret.WithAttr = function (args) { const clone = $svg.clone(); clone.attr(args); return clone; }; return ret; } } Svg.AchievementsSm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/AchievementsSm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/AchievementsSm.svg")); Svg.Alert = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/Alert.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/Alert.svg")); Svg.AlertCircle = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/AlertCircle.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/AlertCircle.svg")); Svg.AlertSm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/AlertSm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/AlertSm.svg")); Svg.Checkmark = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/Checkmark.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/Checkmark.svg")); Svg.Clear = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/Clear.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/Clear.svg")); Svg.ClearSm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/ClearSm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/ClearSm.svg")); Svg.DevTo = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/DevTo.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/DevTo.svg")); Svg.Facebook = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/Facebook.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/Facebook.svg")); Svg.HelpSm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/HelpSm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/HelpSm.svg")); Svg.Link = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/Link.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/Link.svg")); Svg.People = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/People.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/People.svg")); Svg.ShareSm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/ShareSm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/ShareSm.svg")); Svg.TrendingDown = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/TrendingDown.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/TrendingDown.svg")); Svg.TrendingNone = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/TrendingNone.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/TrendingNone.svg")); Svg.TrendingUp = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/TrendingUp.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/TrendingUp.svg")); Svg.Twitter = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/Twitter.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/Twitter.svg")); Svg.UndoSm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/UndoSm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/UndoSm.svg")); Svg.IndustrySm = Svg.getSvg(__webpack_require__(/*! @stackoverflow/stacks-icons/dist/Icon/IndustrySm.svg */ "./node_modules/@stackoverflow/stacks-icons/dist/lib/Icon/IndustrySm.svg")); /*** EXPORTS FROM exports-loader ***/ /***/ }), /***/ "./node_modules/expose-loader/dist/cjs.js?exposes=EventEmitter!./Content/Js/third-party/event-emitter-exposed.js": /*!***********************************************************************************************************************!*\ !*** ./node_modules/expose-loader/dist/cjs.js?exposes=EventEmitter!./Content/Js/third-party/event-emitter-exposed.js ***! \***********************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var ___EXPOSE_LOADER_IMPORT___ = __webpack_require__(/*! -!./event-emitter.js */ "./Content/Js/third-party/event-emitter.js"); var ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = __webpack_require__(/*! ../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js */ "./node_modules/expose-loader/dist/runtime/getGlobalThis.js"); var ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___; if (typeof ___EXPOSE_LOADER_GLOBAL_THIS___["EventEmitter"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___["EventEmitter"] = ___EXPOSE_LOADER_IMPORT___; else throw new Error('[exposes-loader] The "EventEmitter" value exists in the global scope, it may not be safe to overwrite it, use the "override" option') module.exports = ___EXPOSE_LOADER_IMPORT___; /***/ }), /***/ "./node_modules/expose-loader/dist/cjs.js?exposes=Svg|Svg!./node_modules/exports-loader/dist/cjs.js?exports=Svg!./_Scripts/PartialJS/full-common/99_svg-exposed.ts": /*!*************************************************************************************************************************************************************************!*\ !*** ./node_modules/expose-loader/dist/cjs.js?exposes=Svg|Svg!./node_modules/exports-loader/dist/cjs.js?exports=Svg!./_Scripts/PartialJS/full-common/99_svg-exposed.ts ***! \*************************************************************************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var ___EXPOSE_LOADER_IMPORT___ = __webpack_require__(/*! -!../../../node_modules/exports-loader/dist/cjs.js?exports=Svg!../../../node_modules/imports-loader/dist/cjs.js??ruleSet[1].rules[1].use[0]!../../../node_modules/ts-loader/index.js??ruleSet[1].rules[2].use[0]!./99_svg.ts */ "./node_modules/exports-loader/dist/cjs.js?exports=Svg!./node_modules/imports-loader/dist/cjs.js??ruleSet[1].rules[1].use[0]!./node_modules/ts-loader/index.js??ruleSet[1].rules[2].use[0]!./_Scripts/PartialJS/full-common/99_svg.ts"); var ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = __webpack_require__(/*! ../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js */ "./node_modules/expose-loader/dist/runtime/getGlobalThis.js"); var ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___; var ___EXPOSE_LOADER_IMPORT_MODULE_LOCAL_NAME___ = ___EXPOSE_LOADER_IMPORT___.Svg if (typeof ___EXPOSE_LOADER_GLOBAL_THIS___["Svg"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___["Svg"] = ___EXPOSE_LOADER_IMPORT_MODULE_LOCAL_NAME___; else throw new Error('[exposes-loader] The "Svg" value exists in the global scope, it may not be safe to overwrite it, use the "override" option') module.exports = ___EXPOSE_LOADER_IMPORT___; /***/ }), /***/ "./node_modules/expose-loader/dist/runtime/getGlobalThis.js": /*!******************************************************************!*\ !*** ./node_modules/expose-loader/dist/runtime/getGlobalThis.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; // eslint-disable-next-line func-names module.exports = function () { if (typeof globalThis === "object") { return globalThis; } var g; try { // This works if eval is allowed (see CSP) // eslint-disable-next-line no-new-func g = this || new Function("return this")(); } catch (e) { // This works if the window reference is available if (typeof window === "object") { return window; } // This works if the self reference is available if (typeof self === "object") { return self; } // This works if the global reference is available if (typeof __webpack_require__.g !== "undefined") { return __webpack_require__.g; } } return g; }(); /***/ }), /***/ "./_Scripts/LegacyJS/bounty.js": /*!*************************************!*\ !*** ./_Scripts/LegacyJS/bounty.js ***! \*************************************/ /***/ (() => { /*** IMPORTS FROM imports-loader ***/ StackExchange = window.StackExchange = (window.StackExchange || {}); StackOverflow = window.StackOverflow = (window.StackOverflow || {}); StackExchange.vote_bounty = (function () { function bountyClose_callback($button, postId, data) { if (data.Success) { // We used to update user's reputation, but that functionality has been broken for a while due to shifting page layouts. We could bring that back in the future if desired. var newValue = $button.data('award-if-applied'); $button .closest('.js-bounty-award-container') .find('.js-bounty-award') .removeClass('d-none') .text('+' + newValue) .setTooltipText(__tr(["This answer has been awarded bounties worth $bountyAmount$ reputation"], {bountyAmount: newValue}, "en", []), { placement: 'right' }); // Remove the post notice, any bounty voting buttons, any bounty award container that does not have a visible award. $('.js-bounty-notification, .js-bounty-vote, .js-bounty-award-container:not(:has(.js-bounty-award:not(.d-none)))').remove(); } else { toggleBountyButtonEnabled(true); StackExchange.helpers.showToast(data.Message, { type: 'danger' }); } } function toggleBountyButtonEnabled(enabled) { $('.js-bounty-vote').prop('disabled', !enabled).find('.s-badge').toggleClass('bg-black-400'); } function bountyClose($button) { if (!confirm(__tr(["Are you sure you want to award your bounty to this answer? You can’t undo this!"], undefined, "en", []))) { return; } var postId = StackExchange.vote.getPostId($button); toggleBountyButtonEnabled(false); // Hide the tooltip since disabled elements don't receive mouse event. $button.dispatchEvent('mouseout'); StackExchange.vote.submit({ $target: $button, postId: postId, voteTypeId: StackExchange.vote.voteTypeIds.bountyClose, success: bountyClose_callback }); }; var bountyClose_init = function () { $(document).on('click', '.js-bounty-vote', function () { bountyClose($(this)); }); }; var bountyOpen_initLink = function (attachHandler, link) { link = $(link || $(".bounty-link")); link = link.off('click', bountyOpen_loadPopup); if (attachHandler) link.on('click', bountyOpen_loadPopup); return link; } var bountyOpen_loadPopup = function () { var link = bountyOpen_initLink(false, this); var postId = $(link).closest(".question").data("questionid") link.loadPopup({ url: '/posts/bounty/' + postId, }).always(function () { bountyOpen_initLink(true, link); }); }; var bountyOpen_init = function () { bountyOpen_initLink(true); }; return { init: function (options) { if (options.canOpenBounty) bountyOpen_init(); if (options.hasOpenBounty) bountyClose_init(); } }; })(); /***/ }), /***/ "./_Scripts/LegacyJS/full-common/00_Header.js": /*!****************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/00_Header.js ***! \****************************************************/ /***/ (() => { /*** IMPORTS FROM imports-loader ***/ StackExchange = window.StackExchange = (window.StackExchange || {}); StackOverflow = window.StackOverflow = (window.StackOverflow || {}); "use strict"; // This file contains the functionality that even anonymous users need. // During the build process, this file will also be prepended to full.part.js // to form full.js StackExchange.anonymous = {}; /***/ }), /***/ "./_Scripts/LegacyJS/full-common/02_TopBar.js": /*!****************************************************!*\ !*** ./_Scripts/LegacyJS/full-common/02_TopBar.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _constants_mod__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants.mod */ "./_Scripts/LegacyJS/constants.mod.js"); /* harmony import */ var _TopBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../TopBar */ "./_Scripts/TopBar.ts"); /*** IMPORTS FROM imports-loader ***/ StackExchange = window.StackExchange = (window.StackExchange || {}); StackOverflow = window.StackOverflow = (window.StackOverflow || {}); // trying out this inheritance helper - https://github.com/ded/klass /*! * klass: a classical JS OOP façade * https://github.com/ded/klass * License MIT (c) Dustin Diaz & Jacob Thornton 2012 */ window.klass = (function (context) { context = context || this; var old = context.klass , f = 'function' , fnTest = false ? 0 : /.*/ , proto = 'prototype' function klass(o) { return extend.call(isFn(o) ? o : function () { }, o, 1) } function isFn(o) { return typeof o === f } function wrap(k, fn, supr) { return function () { var tmp = this.supr this.supr = supr[proto][k] var undef = {}.fabricatedUndefined var ret = undef try { ret = fn.apply(this, arguments) } finally { this.supr = tmp } return ret } } function process(what, o, supr) { for (var k in o) { if (o.hasOwnProperty(k)) { what[k] = isFn(o[k]) && isFn(supr[proto][k]) && fnTest.test(o[k]) ? wrap(k, o[k], supr) : o[k] } } } function extend(o, fromSub) { // must redefine noop each time so it doesn't inherit from previous arbitrary classes function noop() { } noop[proto] = this[proto] var supr = this , prototype = new noop() , isFunction = isFn(o) , _constructor = isFunction ? o : this , _methods = isFunction ? {} : o function fn() { if (this.initialize) this.initialize.apply(this, arguments) else { fromSub || isFunction && supr.apply(this, arguments) _constructor.apply(this, arguments) } } fn.methods = function (o) { process(prototype, o, supr) fn[proto] = prototype return this } fn.methods.call(fn, _methods).prototype.constructor = fn fn.extend = extend; fn[proto].implement = fn.statics = function (o, optFn) { o = typeof o == 'string' ? (function () { var obj = {} obj[o] = optFn return obj }()) : o process(this, o, supr) return this } return fn } klass.noConflict = function () { context.klass = old return this } return klass })(window); const UNREAD_MESSAGE_ICON_EVENT_SOURCE = 2; const INBOX_POPUP_ITEM_EVENT_SOURCE = 3; StackExchange.topbar = (function () { /* Base class of any dialog to be displayed when clicking a topbar button. */ var Dialog = klass({ // declare instance variables name: '', url: '', cssClass: '', // needed for $loadingPlaceholders button: null, $dialog: null, $loadingPlaceholder: null, $preloadedDialog: null, $parent: null, alignment: null, hasRead: false }) .methods({ isLoading: function () { return this.$loadingPlaceholder != null; }, isLoaded: function () { return this.$dialog != null; }, isVisible: function() { var $div = this.$dialog || this.$loadingPlaceholder; return $div != null && $div.is(':visible'); }, toggle: function (showOrHide, preventMarkAsRead) { if (typeof showOrHide != 'boolean') { throw new Error('showOrHide is a required parameter'); } if (!showOrHide) { // hide // someone got impatient with a long-running request if (this.isLoading()) { // so hide the placeholder this.showOrHide(false); return; } // never clicked this dialog? no work to be done! (this happens when calling hideAll) if (!this.isLoaded()) { return; } } if (this.isLoaded() || this.isLoading()) { // toggle the already-loaded dialog or the loading placeholder this.showOrHide(showOrHide); // only clear the unread indicators (icon count + item highlighting) when closing content we've seen if (!showOrHide && !preventMarkAsRead && this.hasRead) { this.markAsRead(); } } else if (this.$preloadedDialog) { // sometimes we want a dialog to be extra responsive, so we'll preload most of it.. // then, we'll load its extraneous content when clicked, e.g. the "all sites" list in the site switcher // note: this.$dialog will be set to this.$preloadedDialog on the first click this.loadChildContent(); } else { this.loadDialog(); } // when showing this dialog, others should be hidden if (showOrHide) { for (var i = 0; i < buttons.length; i++) { if (this.button != buttons[i]) { buttons[i].toggle(false, preventMarkAsRead); } } // hide search popover, too $(".js-top-search-popover").removeClass("is-visible"); } }, showOrHide: function (showOrHide) { var $div = this.$dialog || this.$loadingPlaceholder || $(); var $button = this.button.$button; if (showOrHide) { var $li = $button.closest('li'); if (!this.$parent) { if ($li.length > 0) { this.$parent = $('
').insertAfter($li); } } if (this.$parent) { this.$parent.append($div); } else { $div.insertAfter(this.button.$button); } if (!this._bound_pdub) { this._bound_pdub = this.positionDialogUnderButton.bind(this); } this.positionDialogUnderButton(); if (StackExchange.responsive) { StackExchange.responsive.addBreakpointListener(this._bound_pdub); } } else { if (StackExchange.responsive && this._bound_pdub) { StackExchange.responsive.removeBreakpointListener(this._bound_pdub); } } $div.toggle(showOrHide); if (showOrHide && this.isLoaded()) { // assume user will now have viewed the real dialog this.hasRead = true; } }, loadChildContent: function () { var $childContent = this.$preloadedDialog.find('.child-content'); this.$dialog = this.$preloadedDialog; this.showOrHide(true); if (!this.url) return; $('