213 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
(function webpackUniversalModuleDefinition(root, factory) {
 | 
						|
	if(typeof exports === 'object' && typeof module === 'object')
 | 
						|
		module.exports = factory();
 | 
						|
	else if(typeof define === 'function' && define.amd)
 | 
						|
		define([], factory);
 | 
						|
	else {
 | 
						|
		var a = factory();
 | 
						|
		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
 | 
						|
	}
 | 
						|
})((typeof self !== 'undefined' ? self : this), function() {
 | 
						|
return /******/ (function(modules) { // webpackBootstrap
 | 
						|
/******/ 	// The module cache
 | 
						|
/******/ 	var installedModules = {};
 | 
						|
/******/
 | 
						|
/******/ 	// The require function
 | 
						|
/******/ 	function __webpack_require__(moduleId) {
 | 
						|
/******/
 | 
						|
/******/ 		// Check if module is in cache
 | 
						|
/******/ 		if(installedModules[moduleId]) {
 | 
						|
/******/ 			return installedModules[moduleId].exports;
 | 
						|
/******/ 		}
 | 
						|
/******/ 		// Create a new module (and put it into the cache)
 | 
						|
/******/ 		var module = installedModules[moduleId] = {
 | 
						|
/******/ 			i: moduleId,
 | 
						|
/******/ 			l: false,
 | 
						|
/******/ 			exports: {}
 | 
						|
/******/ 		};
 | 
						|
/******/
 | 
						|
/******/ 		// Execute the module function
 | 
						|
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
 | 
						|
/******/
 | 
						|
/******/ 		// Flag the module as loaded
 | 
						|
/******/ 		module.l = true;
 | 
						|
/******/
 | 
						|
/******/ 		// Return the exports of the module
 | 
						|
/******/ 		return module.exports;
 | 
						|
/******/ 	}
 | 
						|
/******/
 | 
						|
/******/
 | 
						|
/******/ 	// expose the modules object (__webpack_modules__)
 | 
						|
/******/ 	__webpack_require__.m = modules;
 | 
						|
/******/
 | 
						|
/******/ 	// expose the module cache
 | 
						|
/******/ 	__webpack_require__.c = installedModules;
 | 
						|
/******/
 | 
						|
/******/ 	// define getter function for harmony exports
 | 
						|
/******/ 	__webpack_require__.d = function(exports, name, getter) {
 | 
						|
/******/ 		if(!__webpack_require__.o(exports, name)) {
 | 
						|
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
 | 
						|
/******/ 		}
 | 
						|
/******/ 	};
 | 
						|
/******/
 | 
						|
/******/ 	// define __esModule on exports
 | 
						|
/******/ 	__webpack_require__.r = function(exports) {
 | 
						|
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
 | 
						|
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
 | 
						|
/******/ 		}
 | 
						|
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
 | 
						|
/******/ 	};
 | 
						|
/******/
 | 
						|
/******/ 	// create a fake namespace object
 | 
						|
/******/ 	// mode & 1: value is a module id, require it
 | 
						|
/******/ 	// mode & 2: merge all properties of value into the ns
 | 
						|
/******/ 	// mode & 4: return value when already ns object
 | 
						|
/******/ 	// mode & 8|1: behave like require
 | 
						|
/******/ 	__webpack_require__.t = function(value, mode) {
 | 
						|
/******/ 		if(mode & 1) value = __webpack_require__(value);
 | 
						|
/******/ 		if(mode & 8) return value;
 | 
						|
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
 | 
						|
/******/ 		var ns = Object.create(null);
 | 
						|
/******/ 		__webpack_require__.r(ns);
 | 
						|
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
 | 
						|
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
 | 
						|
/******/ 		return ns;
 | 
						|
/******/ 	};
 | 
						|
/******/
 | 
						|
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
 | 
						|
/******/ 	__webpack_require__.n = function(module) {
 | 
						|
/******/ 		var getter = module && module.__esModule ?
 | 
						|
/******/ 			function getDefault() { return module['default']; } :
 | 
						|
/******/ 			function getModuleExports() { return module; };
 | 
						|
/******/ 		__webpack_require__.d(getter, 'a', getter);
 | 
						|
/******/ 		return getter;
 | 
						|
/******/ 	};
 | 
						|
/******/
 | 
						|
/******/ 	// Object.prototype.hasOwnProperty.call
 | 
						|
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 | 
						|
/******/
 | 
						|
/******/ 	// __webpack_public_path__
 | 
						|
/******/ 	__webpack_require__.p = "";
 | 
						|
/******/
 | 
						|
/******/
 | 
						|
/******/ 	// Load entry module and return exports
 | 
						|
/******/ 	return __webpack_require__(__webpack_require__.s = 1);
 | 
						|
/******/ })
 | 
						|
/************************************************************************/
 | 
						|
/******/ ([
 | 
						|
/* 0 */
 | 
						|
/***/ (function(module, exports, __webpack_require__) {
 | 
						|
 | 
						|
// extracted by mini-css-extract-plugin
 | 
						|
 | 
						|
/***/ }),
 | 
						|
/* 1 */
 | 
						|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 | 
						|
 | 
						|
"use strict";
 | 
						|
__webpack_require__.r(__webpack_exports__);
 | 
						|
 | 
						|
// EXTERNAL MODULE: ./contrib/copy-tex/copy-tex.css
 | 
						|
var copy_tex = __webpack_require__(0);
 | 
						|
 | 
						|
// CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
 | 
						|
// Set these to how you want inline and display math to be delimited.
 | 
						|
var defaultCopyDelimiters = {
 | 
						|
  inline: ['$', '$'],
 | 
						|
  // alternative: ['\(', '\)']
 | 
						|
  display: ['$$', '$$'] // alternative: ['\[', '\]']
 | 
						|
 | 
						|
}; // Replace .katex elements with their TeX source (<annotation> element).
 | 
						|
// Modifies fragment in-place.  Useful for writing your own 'copy' handler,
 | 
						|
// as in copy-tex.js.
 | 
						|
 | 
						|
var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
 | 
						|
  if (copyDelimiters === void 0) {
 | 
						|
    copyDelimiters = defaultCopyDelimiters;
 | 
						|
  }
 | 
						|
 | 
						|
  // Remove .katex-html blocks that are preceded by .katex-mathml blocks
 | 
						|
  // (which will get replaced below).
 | 
						|
  var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
 | 
						|
 | 
						|
  for (var i = 0; i < katexHtml.length; i++) {
 | 
						|
    var element = katexHtml[i];
 | 
						|
 | 
						|
    if (element.remove) {
 | 
						|
      element.remove(null);
 | 
						|
    } else {
 | 
						|
      element.parentNode.removeChild(element);
 | 
						|
    }
 | 
						|
  } // Replace .katex-mathml elements with their annotation (TeX source)
 | 
						|
  // descendant, with inline delimiters.
 | 
						|
 | 
						|
 | 
						|
  var katexMathml = fragment.querySelectorAll('.katex-mathml');
 | 
						|
 | 
						|
  for (var _i = 0; _i < katexMathml.length; _i++) {
 | 
						|
    var _element = katexMathml[_i];
 | 
						|
 | 
						|
    var texSource = _element.querySelector('annotation');
 | 
						|
 | 
						|
    if (texSource) {
 | 
						|
      if (_element.replaceWith) {
 | 
						|
        _element.replaceWith(texSource);
 | 
						|
      } else {
 | 
						|
        _element.parentNode.replaceChild(texSource, _element);
 | 
						|
      }
 | 
						|
 | 
						|
      texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
 | 
						|
    }
 | 
						|
  } // Switch display math to display delimiters.
 | 
						|
 | 
						|
 | 
						|
  var displays = fragment.querySelectorAll('.katex-display annotation');
 | 
						|
 | 
						|
  for (var _i2 = 0; _i2 < displays.length; _i2++) {
 | 
						|
    var _element2 = displays[_i2];
 | 
						|
    _element2.innerHTML = copyDelimiters.display[0] + _element2.innerHTML.substr(copyDelimiters.inline[0].length, _element2.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
 | 
						|
  }
 | 
						|
 | 
						|
  return fragment;
 | 
						|
};
 | 
						|
/* harmony default export */ var katex2tex = (katexReplaceWithTex);
 | 
						|
// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
 | 
						|
 // Global copy handler to modify behavior on .katex elements.
 | 
						|
 | 
						|
document.addEventListener('copy', function (event) {
 | 
						|
  var selection = window.getSelection();
 | 
						|
 | 
						|
  if (selection.isCollapsed) {
 | 
						|
    return; // default action OK if selection is empty
 | 
						|
  }
 | 
						|
 | 
						|
  var fragment = selection.getRangeAt(0).cloneContents();
 | 
						|
 | 
						|
  if (!fragment.querySelector('.katex-mathml')) {
 | 
						|
    return; // default action OK if no .katex-mathml elements
 | 
						|
  } // Preserve usual HTML copy/paste behavior.
 | 
						|
 | 
						|
 | 
						|
  var html = [];
 | 
						|
 | 
						|
  for (var i = 0; i < fragment.childNodes.length; i++) {
 | 
						|
    html.push(fragment.childNodes[i].outerHTML);
 | 
						|
  }
 | 
						|
 | 
						|
  event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
 | 
						|
 | 
						|
  event.clipboardData.setData('text/plain', katex2tex(fragment).textContent); // Prevent normal copy handling.
 | 
						|
 | 
						|
  event.preventDefault();
 | 
						|
});
 | 
						|
// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.webpack.js
 | 
						|
/**
 | 
						|
 * This is the webpack entry point for KaTeX. As ECMAScript doesn't support
 | 
						|
 * CSS modules natively, a separate entry point is used.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/***/ })
 | 
						|
/******/ ])["default"];
 | 
						|
}); |