(self["webpackChunk"] = self["webpackChunk"] || []).push([[77460,4977,78890,30357],{ /***/ 28871: /*!*********************************************************!*\ !*** ./src/components/MathematicalGraphics/js/index.js ***! \*********************************************************/ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = (__webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/typeof.js */ 31468)["default"]); (function () { if (typeof window.GGBApplet == "function") { console.warn("deployggb.js was loaded twice"); return; } var isRenderGGBElementEnabled = false; var scriptLoadStarted = false; var html5AppletsToProcess = null; var ggbHTML5LoadedCodebaseIsWebSimple = false; var ggbHTML5LoadedCodebaseVersion = null; var ggbHTML5LoadedScript = null; var GGBApplet = function GGBApplet() { "use strict"; var applet = {}; var ggbVersion = "5.0"; var parameters = {}; var views = null; var html5NoWebSimple = false; var html5NoWebSimpleParamExists = false; var appletID = null; var initComplete = false; var html5OverwrittenCodebaseVersion = null; var html5OverwrittenCodebase = null; for (var i = 0; i < arguments.length; i++) { var p = arguments[i]; if (p !== null) { switch (_typeof(p)) { case "number": ggbVersion = p.toFixed(1); break; case "string": if (p.match(new RegExp("^[0-9]\\.[0-9]+$"))) { ggbVersion = p; } else { appletID = p; } break; case "object": if (typeof p.is3D !== "undefined") { views = p; } else { parameters = p; } break; case "boolean": html5NoWebSimple = p; html5NoWebSimpleParamExists = true; break; } } } if (views === null) { views = { is3D: false, AV: false, SV: false, CV: false, EV2: false, CP: false, PC: false, DA: false, FI: false, PV: false, macro: false }; if (parameters.material_id !== undefined && !html5NoWebSimpleParamExists) { html5NoWebSimple = true; } } if (appletID !== null && parameters.id === undefined) { parameters.id = appletID; } var jnlpFilePath = ""; var html5Codebase = ""; var isHTML5Offline = false; var loadedAppletType = null; var html5CodebaseVersion = null; var html5CodebaseScript = null; var html5CodebaseIsWebSimple = false; var previewImagePath = null; var previewLoadingPath = null; var previewPlayPath = null; var fonts_css_url = null; var jnlpBaseDir = null; if (parameters.height !== undefined) { parameters.height = Math.round(parameters.height); } if (parameters.width !== undefined) { parameters.width = Math.round(parameters.width); } var parseVersion = function parseVersion(d) { return parseFloat(d) > 4 ? parseFloat(d) : 5; }; applet.setHTML5Codebase = function (codebase, offline) { html5OverwrittenCodebase = codebase; setHTML5CodebaseInternal(codebase, offline); }; applet.setJavaCodebase = applet.setJavaCodebaseVersion = applet.isCompiledInstalled = applet.setPreCompiledScriptPath = applet.setPreCompiledResourcePath = function () {}; applet.setHTML5CodebaseVersion = function (version, offline) { var numVersion = parseFloat(version); if (numVersion !== NaN && numVersion < 5) { console.log("The GeoGebra HTML5 codebase version " + numVersion + " is deprecated. Using version latest instead."); return; } html5OverwrittenCodebaseVersion = version; setDefaultHTML5CodebaseForVersion(version, offline); }; applet.getHTML5CodebaseVersion = function () { return html5CodebaseVersion; }; applet.getParameters = function () { return parameters; }; applet.setFontsCSSURL = function (url) { fonts_css_url = url; }; applet.setGiacJSURL = function (url) {}; applet.setJNLPFile = function (newJnlpFilePath) { jnlpFilePath = newJnlpFilePath; }; applet.setJNLPBaseDir = function (baseDir) {}; applet.inject = function () { function isOwnIFrame() { return window.frameElement && window.frameElement.getAttribute("data-singleton"); } var type = "auto"; var container_ID = parameters.id; var container; var noPreview = false; for (var i = 0; i < arguments.length; i++) { var p = arguments[i]; if (typeof p === "string") { p = p.toLowerCase(); if (p.match(/^(prefer)?(java|html5|compiled|auto|screenshot)$/)) { type = p; } else { container_ID = arguments[i]; } } else if (typeof p === "boolean") { noPreview = p; } else if (p instanceof HTMLElement) { container = p; } } continueInject(); function continueInject() { if (!initComplete) { setTimeout(continueInject, 200); return; } type = detectAppletType(type); var appletElem = container || document.getElementById(container_ID); if (!appletElem) { console.log("possibly bug on ajax loading? "); return; } applet.removeExistingApplet(appletElem, false); if (parameters.width === undefined && appletElem.clientWidth) { parameters.width = appletElem.clientWidth; } if (parameters.height === undefined && appletElem.clientHeight) { parameters.height = appletElem.clientHeight; } if (!(parameters.width && parameters.height) && type === "html5") { delete parameters.width; delete parameters.height; } loadedAppletType = type; if (type === "screenshot") { injectScreenshot(appletElem, parameters); } else { var playButton = false; if (parameters.hasOwnProperty("playButton") && parameters.playButton || parameters.hasOwnProperty("clickToLoad") && parameters.clickToLoad) { playButton = true; } else if (parameters.hasOwnProperty("playButtonAutoDecide") && parameters.playButtonAutoDecide) { playButton = (!isInIframe() || isOwnIFrame()) && isMobileDevice(); } if (playButton) { loadedAppletType = "screenshot"; injectPlayButton(appletElem, parameters, noPreview, type); } else { injectHTML5Applet(appletElem, parameters, noPreview); } } } return; }; function isInIframe() { try { return window.self !== window.top; } catch (e) { return true; } } function isMobileDevice() { if (parameters.hasOwnProperty("screenshotGenerator") && parameters.screenshotGenerator) { return false; } return Math.max(screen.width, screen.height) < 800; } applet.getViews = function () { return views; }; applet.isJavaInstalled = function () { return false; }; var fetchParametersFromApi = function fetchParametersFromApi(successCallback) { var onSuccess = function onSuccess(text) { var jsonData = JSON.parse(text); var isGeoGebra = function isGeoGebra(element) { return element.type == "G" || element.type == "E"; }; var item = jsonData.elements ? jsonData.elements.filter(isGeoGebra)[0] : jsonData; if (!item || !item.url) { onError(); return; } parameters.fileName = item.url; updateAppletSettings(item.settings || {}); views.is3D = true; var imageDir = "https://www.geogebra.org/images/"; applet.setPreviewImage(previewImagePath || item.previewUrl, imageDir + "GeoGebra_loading.png", imageDir + "applet_play.png"); successCallback(); }; var onError = function onError() { parameters.onError && parameters.onError(); log("Error: Fetching material (id " + parameters.material_id + ") failed.", parameters); }; var host = location.host.match(/(www|stage|beta|groot|alpha).geogebra.(org|net)/) ? location.host : "www.geogebra.org"; var path = "/materials/" + parameters.material_id + "?scope=basic"; sendCorsRequest("https://" + host + "/api/proxy.php?path=" + encodeURIComponent(path), onSuccess, onError); }; function updateAppletSettings(settings) { var parameterNames = ["width", "height", "showToolBar", "showMenuBar", "showAlgebraInput", "allowStyleBar", "showResetIcon", "enableLabelDrags", "enableShiftDragZoom", "enableRightClick", "appName"]; ["enableLabelDrags", "enableShiftDragZoom", "enableRightClick"].forEach(function (name) { settings[name] = !!settings[name]; }); parameterNames.forEach(function (name) { if (parameters[name] === undefined && settings[name] !== undefined) { parameters[name] = settings[name]; } }); if (parameters.showToolBarHelp === undefined) { parameters.showToolBarHelp = parameters.showToolBar; } } function sendCorsRequest(url, onSuccess, onError) { var xhr = new XMLHttpRequest(); xhr.open("GET", url); xhr.onload = function () { onSuccess(xhr.responseText); }; xhr.onerror = onError; xhr.send(); } applet.isHTML5Installed = function () { return true; }; applet.getLoadedAppletType = function () { return loadedAppletType; }; applet.setPreviewImage = function (previewFilePath, loadingFilePath, playFilePath) { previewImagePath = previewFilePath; previewLoadingPath = loadingFilePath; previewPlayPath = playFilePath; }; applet.removeExistingApplet = function (appletParent, showScreenshot) { var i; if (typeof appletParent === "string") { appletParent = document.getElementById(appletParent); } loadedAppletType = null; var removedID = null; for (i = 0; i < appletParent.childNodes.length; i++) { var currentChild = appletParent.childNodes[i]; var className = currentChild.className; if (className === "applet_screenshot") { if (showScreenshot) { currentChild.style.display = "block"; loadedAppletType = "screenshot"; } else { currentChild.style.display = "none"; } } else if (className !== "applet_scaler prerender") { appletParent.removeChild(currentChild); removedID = className && className.indexOf("appletParameters") != -1 ? currentChild.id : null; i--; } } var appName = parameters.id !== undefined ? parameters.id : removedID; var app = window[appName]; if (app && typeof app.getBase64 === "function") { app.remove(); window[appName] = null; } }; applet.refreshHitPoints = function () { if (parseVersion(ggbHTML5LoadedCodebaseVersion) >= 5) { return true; } var app = applet.getAppletObject(); if (app) { if (typeof app.recalculateEnvironments === "function") { app.recalculateEnvironments(); return true; } } return false; }; applet.startAnimation = function () { var app = applet.getAppletObject(); if (app) { if (typeof app.startAnimation === "function") { app.startAnimation(); return true; } } return false; }; applet.stopAnimation = function () { var app = applet.getAppletObject(); if (app) { if (typeof app.stopAnimation === "function") { app.stopAnimation(); return true; } } return false; }; applet.getAppletObject = function () { var appName = parameters.id !== undefined ? parameters.id : "ggbApplet"; return window[appName]; }; applet.resize = function () {}; var appendParam = function appendParam(applet, name, value) { var param = document.createElement("param"); param.setAttribute("name", name); param.setAttribute("value", value); applet.appendChild(param); }; var valBoolean = function valBoolean(value) { return value && value !== "false"; }; var injectHTML5Applet = function injectHTML5Applet(appletElem, parameters, noPreview) { if (parseVersion(html5CodebaseVersion) <= 4.2) { noPreview = true; } var loadScript = !isRenderGGBElementEnabled && !scriptLoadStarted; if (!isRenderGGBElementEnabled && !scriptLoadStarted || ggbHTML5LoadedCodebaseVersion !== html5CodebaseVersion || ggbHTML5LoadedCodebaseIsWebSimple && !html5CodebaseIsWebSimple) { loadScript = true; isRenderGGBElementEnabled = false; scriptLoadStarted = false; } var article = document.createElement("div"); article.classList.add("appletParameters", "notranslate"); var oriWidth = parameters.width; var oriHeight = parameters.height; parameters.disableAutoScale = parameters.disableAutoScale === undefined ? GGBAppletUtils.isFlexibleWorksheetEditor() : parameters.disableAutoScale; if (parameters.width !== undefined) { if (parseVersion(html5CodebaseVersion) <= 4.4) { if (valBoolean(parameters.showToolBar)) { parameters.height -= 7; } if (valBoolean(parameters.showAlgebraInput)) { parameters.height -= 37; } if (parameters.width < 605 && valBoolean(parameters.showToolBar)) { parameters.width = 605; oriWidth = 605; } } else { var minWidth = 100; if (valBoolean(parameters.showToolBar) || valBoolean(parameters.showMenuBar)) { if (parameters.hasOwnProperty("customToolBar")) { parameters.customToolbar = parameters.customToolBar; } minWidth = valBoolean(parameters.showMenuBar) ? 245 : 155; } if (oriWidth < minWidth) { parameters.width = minWidth; oriWidth = minWidth; } } } article.style.border = "none"; article.style.display = "inline-block"; for (var key in parameters) { if (parameters.hasOwnProperty(key) && key !== "appletOnLoad") { article.setAttribute("data-param-" + key, parameters[key]); } } if (fonts_css_url) { article.setAttribute("data-param-fontscssurl", fonts_css_url); } applet.resize = function () { GGBAppletUtils.responsiveResize(appletElem, parameters); }; window.addEventListener("resize", function (evt) { applet.resize(); }); var oriAppletOnload = typeof parameters.appletOnLoad === "function" ? parameters.appletOnLoad : function () {}; if (!noPreview && parameters.width !== undefined) { if (!parameters.hasOwnProperty("showSplash")) { article.setAttribute("data-param-showSplash", "false"); } var previewPositioner = appletElem.querySelector(".applet_scaler.prerender"); var preRendered = previewPositioner !== null; if (!preRendered) { var previewContainer = createScreenShotDiv(oriWidth, oriHeight, parameters.borderColor, false); previewPositioner = document.createElement("div"); previewPositioner.className = "applet_scaler"; previewPositioner.style.position = "relative"; previewPositioner.style.display = "block"; previewPositioner.style.width = oriWidth + "px"; previewPositioner.style.height = oriHeight + "px"; } else { var previewContainer = previewPositioner.querySelector(".ggb_preview"); } if (window.GGBT_spinner) { window.GGBT_spinner.attachSpinner(previewPositioner, "66%"); } if (parseVersion(html5CodebaseVersion) >= 5) { parameters.appletOnLoad = function (api) { var preview = appletElem.querySelector(".ggb_preview"); if (preview) { preview.parentNode.removeChild(preview); } if (window.GGBT_spinner) { window.GGBT_spinner.removeSpinner(previewPositioner); } if (window.GGBT_wsf_view) { $(window).trigger("resize"); } oriAppletOnload(api); }; if (!preRendered) { previewPositioner.appendChild(previewContainer); } } else { article.appendChild(previewContainer); } previewPositioner.appendChild(article); if (!preRendered) { appletElem.appendChild(previewPositioner); } setTimeout(function () { applet.resize(); }, 1); } else { var appletScaler = document.createElement("div"); appletScaler.className = "applet_scaler"; appletScaler.style.position = "relative"; appletScaler.style.display = "block"; appletScaler.appendChild(article); appletElem.appendChild(appletScaler); parameters.appletOnLoad = function (api) { applet.resize(); oriAppletOnload(api); }; } function renderGGBElementWithParams(article, parameters) { if (parameters && typeof parameters.appletOnLoad === "function" && typeof renderGGBElement === "function") { renderGGBElement(article, parameters.appletOnLoad); } else { renderGGBElement(article); } log("GeoGebra HTML5 applet injected and rendered with previously loaded codebase.", parameters); } function renderGGBElementOnTube(a, parameters) { if (typeof renderGGBElement === "undefined") { if (html5AppletsToProcess === null) { html5AppletsToProcess = []; } html5AppletsToProcess.push({ article: a, params: parameters }); window.renderGGBElementReady = function () { isRenderGGBElementEnabled = true; if (html5AppletsToProcess !== null && html5AppletsToProcess.length) { html5AppletsToProcess.forEach(function (obj) { renderGGBElementWithParams(obj.article, obj.params); }); html5AppletsToProcess = null; } }; if (parseVersion(html5CodebaseVersion) < 5) { a.className += " geogebraweb"; } } else { renderGGBElementWithParams(a, parameters); } } if (loadScript) { scriptLoadStarted = true; for (var i = 0; i < article.childNodes.length; i++) { var tag = article.childNodes[i].tagName; if (tag === "TABLE") { article.removeChild(article.childNodes[i]); i--; } } if (ggbHTML5LoadedScript !== null) { var el = document.querySelector('script[src="' + ggbHTML5LoadedScript + '"]'); if (el !== undefined && el !== null) { el.parentNode.removeChild(el); } } var script = document.createElement("script"); var scriptLoaded = function scriptLoaded() { renderGGBElementOnTube(article, parameters); }; script.src = html5Codebase + html5CodebaseScript; ggbHTML5LoadedCodebaseIsWebSimple = html5CodebaseIsWebSimple; ggbHTML5LoadedCodebaseVersion = html5CodebaseVersion; ggbHTML5LoadedScript = script.src; log("GeoGebra HTML5 codebase loaded: '" + html5Codebase + "'.", parameters); if (!html5OverwrittenCodebase && (!html5OverwrittenCodebaseVersion || html5OverwrittenCodebaseVersion == "5.0")) { if (html5CodebaseIsWebSimple) { webSimple.succeeded = webSimple.succeeded || webSimple(); } else { web3d.succeeded = web3d.succeeded || web3d(); } scriptLoaded(); } else if (html5Codebase.requirejs) { __webpack_require__.e(/*! AMD require */ 53893).then(function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(/*! ./web3d */ 53893)]; (scriptLoaded).apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__);}.bind(this))['catch'](__webpack_require__.oe); } else { script.onload = scriptLoaded; appletElem.appendChild(script); } } else { renderGGBElementOnTube(article, parameters); } parameters.height = oriHeight; parameters.width = oriWidth; }; var injectScreenshot = function injectScreenshot(appletElem, parameters, showPlayButton) { var previewContainer = createScreenShotDiv(parameters.width, parameters.height, parameters.borderColor, showPlayButton); var previewPositioner = document.createElement("div"); previewPositioner.style.position = "relative"; previewPositioner.style.display = "block"; previewPositioner.style.width = parameters.width + "px"; previewPositioner.style.height = parameters.height + "px"; previewPositioner.className = "applet_screenshot applet_scaler" + (showPlayButton ? " applet_screenshot_play" : ""); previewPositioner.appendChild(previewContainer); var scale = GGBAppletUtils.getScale(parameters, appletElem, showPlayButton); if (showPlayButton) { appletElem.appendChild(getPlayButton()); if (!window.GGBT_wsf_view) { appletElem.style.position = "relative"; } } else if (window.GGBT_spinner) { window.GGBT_spinner.attachSpinner(previewPositioner, "66%"); } appletElem.appendChild(previewPositioner); if (scale !== 1 && !isNaN(scale)) { GGBAppletUtils.scaleElement(previewPositioner, scale); previewPositioner.style.width = parameters.width + "px"; previewPositioner.style.height = parameters.height + "px"; previewPositioner.parentNode.style.width = parameters.width * scale + "px"; previewPositioner.parentNode.style.height = parameters.height * scale + "px"; } applet.resize = function () { resizeScreenshot(appletElem, previewContainer, previewPositioner, showPlayButton); }; window.addEventListener("resize", function (evt) { applet.resize(); }); applet.resize(); }; function resizeScreenshot(appletElem, previewContainer, previewPositioner, showPlayButton) { if (!appletElem.contains(previewContainer)) { return; } if (_typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen()) { if (appletElem.id !== "fullscreencontent") { return; } window.GGBT_wsf_view.setCloseBtnPosition(appletElem); } var scale = GGBAppletUtils.getScale(parameters, appletElem, showPlayButton); if (previewPositioner.parentNode !== null) { if (!isNaN(scale) && scale !== 1) { GGBAppletUtils.scaleElement(previewPositioner, scale); previewPositioner.parentNode.style.width = parameters.width * scale + "px"; previewPositioner.parentNode.style.height = parameters.height * scale + "px"; } else { GGBAppletUtils.scaleElement(previewPositioner, 1); previewPositioner.parentNode.style.width = parameters.width + "px"; previewPositioner.parentNode.style.height = parameters.height + "px"; } } if (_typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen()) { GGBAppletUtils.positionCenter(appletElem); } if (_typeof(window.GGBT_ws_header_footer) === "object") { window.GGBT_ws_header_footer.setWsScrollerHeight(); } } applet.onExitFullscreen = function (fullscreenContainer, appletElem) { appletElem.appendChild(fullscreenContainer); }; var injectPlayButton = function injectPlayButton(appletElem, parameters, noPreview, type) { injectScreenshot(appletElem, parameters, true); var play = function play() { var elems = []; for (i = 0; i < appletElem.childNodes.length; i++) { elems.push(appletElem.childNodes[i]); } if (window.GGBT_wsf_view) { var content = window.GGBT_wsf_view.renderFullScreen(appletElem, parameters.id); var container = document.getElementById("fullscreencontainer"); var oldcontent = jQuery(appletElem).find(".fullscreencontent"); if (oldcontent.length > 0) { content.remove(); oldcontent.attr("id", "fullscreencontent").show(); jQuery(container).append(oldcontent); window.dispatchEvent(new Event("resize")); } else { injectHTML5Applet(content, parameters, false); } window.GGBT_wsf_view.launchFullScreen(container); } else { loadedAppletType = type; injectHTML5Applet(appletElem, parameters, false); } if (!window.GGBT_wsf_view) { for (i = 0; i < elems.length; i++) { appletElem.removeChild(elems[i]); } } }; var imgs = appletElem.getElementsByClassName("ggb_preview_play"); for (var i = 0; i < imgs.length; i++) { imgs[i].addEventListener("click", play, false); imgs[i].addEventListener("ontouchstart", play, false); } if (typeof window.ggbAppletPlayerOnload === "function") { window.ggbAppletPlayerOnload(appletElem); } if (isMobileDevice() && window.GGBT_wsf_view) { $(".wsf-element-fullscreen-button").remove(); } }; var getPlayButton = function getPlayButton() { var playButtonContainer = document.createElement("div"); playButtonContainer.className = "ggb_preview_play icon-applet-play"; if (!window.GGBT_wsf_view) { var css = "" + ".icon-applet-play {" + " width: 100%;" + " height: 100%;box-sizing: border-box;position: absolute;z-index: 1001;cursor: pointer;border-width: 0px;" + " background-color: transparent;background-repeat: no-repeat;left: 0;top: 0;background-position: center center;" + ' background-image: url("https://www.geogebra.org/images/worksheet/icon-start-applet.png");' + "}" + ".icon-applet-play:hover {" + 'background-image: url("https://www.geogebra.org/images/worksheet/icon-start-applet-hover.png");' + "}"; var style = document.createElement("style"); if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } document.getElementsByTagName("head")[0].appendChild(style); } return playButtonContainer; }; var createScreenShotDiv = function createScreenShotDiv(oriWidth, oriHeight, borderColor, showPlayButton) { var previewContainer = document.createElement("div"); previewContainer.className = "ggb_preview"; previewContainer.style.position = "absolute"; previewContainer.style.zIndex = "90"; previewContainer.style.width = oriWidth - 2 + "px"; previewContainer.style.height = oriHeight - 2 + "px"; previewContainer.style.top = "0px"; previewContainer.style.left = "0px"; previewContainer.style.overflow = "hidden"; previewContainer.style.backgroundColor = "white"; var bc = "lightgrey"; if (borderColor !== undefined) { if (borderColor === "none") { bc = "transparent"; } else { bc = borderColor; } } previewContainer.style.border = "1px solid " + bc; var preview = document.createElement("img"); preview.style.position = "relative"; preview.style.zIndex = "1000"; preview.style.top = "-1px"; preview.style.left = "-1px"; if (previewImagePath !== null) { preview.setAttribute("src", previewImagePath); } preview.style.opacity = .7; if (previewLoadingPath !== null) { var previewOverlay; var pWidth, pHeight; if (!showPlayButton) { previewOverlay = document.createElement("img"); previewOverlay.style.position = "absolute"; previewOverlay.style.zIndex = "1001"; previewOverlay.style.opacity = 1; preview.style.opacity = .3; pWidth = 360; if (pWidth > oriWidth / 4 * 3) { pWidth = oriWidth / 4 * 3; } pHeight = pWidth / 5.8; previewOverlay.setAttribute("src", previewLoadingPath); previewOverlay.setAttribute("width", pWidth); previewOverlay.setAttribute("height", pHeight); var pX = (oriWidth - pWidth) / 2; var pY = (oriHeight - pHeight) / 2; previewOverlay.style.left = pX + "px"; previewOverlay.style.top = pY + "px"; previewContainer.appendChild(previewOverlay); } } previewContainer.appendChild(preview); return previewContainer; }; var detectAppletType = function detectAppletType(preferredType) { preferredType = preferredType.toLowerCase(); if (preferredType === "html5" || preferredType === "screenshot") { return preferredType; } return "html5"; }; var modules = ["web", "webSimple", "web3d", "tablet", "tablet3d", "phone"]; var setDefaultHTML5CodebaseForVersion = function setDefaultHTML5CodebaseForVersion(version, offline) { html5CodebaseVersion = version; if (offline) { setHTML5CodebaseInternal(html5CodebaseVersion, true); return; } var hasWebSimple = !html5NoWebSimple; if (hasWebSimple) { var v = parseVersion(html5CodebaseVersion); if (!isNaN(v) && v < 4.4) { hasWebSimple = false; } } var protocol, codebase; if (window.location.protocol.substr(0, 4) === "http") { protocol = window.location.protocol; } else { protocol = "http:"; } var index = html5CodebaseVersion.indexOf("//"); if (index > 0) { codebase = html5CodebaseVersion; } else if (index === 0) { codebase = protocol + html5CodebaseVersion; } else { codebase = "https://www.geogebra.org/apps/5.2.814.0/"; } for (var key in modules) { if (html5CodebaseVersion.slice(modules[key].length * -1) === modules[key] || html5CodebaseVersion.slice((modules[key].length + 1) * -1) === modules[key] + "/") { setHTML5CodebaseInternal(codebase, false); return; } } if (!GGBAppletUtils.isFlexibleWorksheetEditor() && hasWebSimple && !views.is3D && !views.AV && !views.SV && !views.CV && !views.EV2 && !views.CP && !views.PC && !views.DA && !views.FI && !views.PV && !valBoolean(parameters.showToolBar) && !valBoolean(parameters.showMenuBar) && !valBoolean(parameters.showAlgebraInput) && !valBoolean(parameters.enableRightClick) && (!parameters.appName || parameters.appName == "classic")) { codebase += "webSimple/"; } else { codebase += "web3d/"; } setHTML5CodebaseInternal(codebase, false); }; var setHTML5CodebaseInternal = function setHTML5CodebaseInternal(codebase, offline) { if (codebase.requirejs) { html5Codebase = codebase; return; } if (codebase.slice(-1) !== "/") { codebase += "/"; } html5Codebase = codebase; if (offline === null) { offline = codebase.indexOf("http") === -1; } isHTML5Offline = offline; html5CodebaseScript = "web.nocache.js"; html5CodebaseIsWebSimple = false; var folders = html5Codebase.split("/"); if (folders.length > 1) { if (!offline && folders[folders.length - 2] === "webSimple") { html5CodebaseScript = "webSimple.nocache.js"; html5CodebaseIsWebSimple = true; } else if (modules.indexOf(folders[folders.length - 2]) >= 0) { html5CodebaseScript = folders[folders.length - 2] + ".nocache.js"; } } folders = codebase.split("/"); html5CodebaseVersion = folders[folders.length - 3]; if (html5CodebaseVersion.substr(0, 4) === "test") { html5CodebaseVersion = html5CodebaseVersion.substr(4, 1) + "." + html5CodebaseVersion.substr(5, 1); } else if (html5CodebaseVersion.substr(0, 3) === "war" || html5CodebaseVersion.substr(0, 4) === "beta") { html5CodebaseVersion = "5.0"; } var numVersion = parseFloat(html5CodebaseVersion); if (numVersion !== NaN && numVersion < 5 && codebase.indexOf("geogebra.org") >= 0) { console.log("The GeoGebra HTML5 codebase version " + numVersion + " is deprecated. Using version latest instead."); setDefaultHTML5CodebaseForVersion("5.0", offline); } }; var log = function log(text, parameters) { if (window.console && window.console.log) { if (!parameters || typeof parameters.showLogging === "undefined" || parameters.showLogging && parameters.showLogging !== "false") { console.log(text); } } }; if (parameters.material_id !== undefined) { fetchParametersFromApi(continueInit); } else { continueInit(); } function continueInit() { var html5Version = ggbVersion; if (html5OverwrittenCodebaseVersion !== null) { html5Version = html5OverwrittenCodebaseVersion; } else { if (parseFloat(html5Version) < 5) { html5Version = "5.0"; } } setDefaultHTML5CodebaseForVersion(html5Version, false); if (html5OverwrittenCodebase !== null) { setHTML5CodebaseInternal(html5OverwrittenCodebase, isHTML5Offline); } initComplete = true; } return applet; }; var GGBAppletUtils = function () { "use strict"; function isFlexibleWorksheetEditor() { return window.GGBT_wsf_edit !== undefined; } function scaleElement(el, scale) { if (scale != 1) { el.style.transformOrigin = "0% 0% 0px"; el.style.webkitTransformOrigin = "0% 0% 0px"; el.style.transform = "scale(" + scale + "," + scale + ")"; el.style.webkitTransform = "scale(" + scale + "," + scale + ")"; el.style.maxWidth = "initial"; if (el.querySelector(".ggb_preview") !== null) { el.querySelector(".ggb_preview").style.maxWidth = "initial"; } if (el.querySelectorAll(".ggb_preview img")[0] !== undefined) { el.querySelectorAll(".ggb_preview img")[0].style.maxWidth = "initial"; } if (el.querySelectorAll(".ggb_preview img")[1] !== undefined) { el.querySelectorAll(".ggb_preview img")[1].style.maxWidth = "initial"; } } else { el.style.transform = "none"; el.style.webkitTransform = "none"; } } function getWidthHeight(appletElem, appletWidth, allowUpscale, autoHeight, noBorder, scaleContainerClass) { var container = null; if (scaleContainerClass != undefined && scaleContainerClass != "") { var parent = appletElem.parentNode; while (parent != null) { if ((" " + parent.className + " ").indexOf(" " + scaleContainerClass + " ") > -1) { container = parent; break; } else { parent = parent.parentNode; } } } var myWidth = 0, myHeight = 0, windowWidth = 0, border = 0, borderRight = 0, borderLeft = 0, borderTop = 0; if (container) { myWidth = container.offsetWidth; myHeight = Math.max(autoHeight ? container.offsetWidth : 0, container.offsetHeight); } else { if (window.innerWidth && document.documentElement.clientWidth) { myWidth = Math.min(window.innerWidth, document.documentElement.clientWidth); myHeight = Math.min(window.innerHeight, document.documentElement.clientHeight); windowWidth = myWidth; } else { myWidth = window.innerWidth; myHeight = window.innerHeight; windowWidth = window.innerWidth; } if (appletElem) { var rect = appletElem.getBoundingClientRect(); if (rect.left > 0) { if (rect.left <= myWidth && (noBorder === undefined || !noBorder)) { if (document.dir === "rtl") { borderRight = myWidth - rect.width - rect.left; borderLeft = windowWidth <= 480 ? 10 : 30; } else { borderLeft = rect.left; borderRight = windowWidth <= 480 ? 10 : 30; } border = borderLeft + borderRight; } } } if (appletElem && _typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen()) { var appletRect = appletElem.getBoundingClientRect(); if (window.GGBT_wsf_view.getCloseBtnPosition() === "closePositionRight") { border = 40; borderTop = 0; } else if (window.GGBT_wsf_view.getCloseBtnPosition() === "closePositionTop") { border = 0; borderTop = 40; } } } if (appletElem) { if ((allowUpscale === undefined || !allowUpscale) && appletWidth > 0 && appletWidth + border < myWidth) { myWidth = appletWidth; } else { myWidth -= border; } if (_typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen() && (allowUpscale === undefined || !allowUpscale)) { myHeight -= borderTop; } } return { width: myWidth, height: myHeight }; } function calcScale(parameters, appletElem, allowUpscale, showPlayButton, scaleContainerClass) { if (parameters.isScreenshoGenerator) { return 1; } var ignoreHeight = showPlayButton !== undefined && showPlayButton; var noScaleMargin = parameters.noScaleMargin != undefined && parameters.noScaleMargin; var valBoolean = function valBoolean(value) { return value && value !== "false"; }; var autoHeight = valBoolean(parameters.autoHeight); var windowSize = getWidthHeight(appletElem, parameters.width, allowUpscale, autoHeight, ignoreHeight && window.GGBT_wsf_view || noScaleMargin, scaleContainerClass); var windowWidth = parseInt(windowSize.width); var appletWidth = parameters.width; var appletHeight = parameters.height; if (appletWidth === undefined) { var article = appletElem.querySelector(".appletParameters"); if (article) { appletWidth = article.offsetWidth; appletHeight = article.offsetHeight; } } var xscale = windowWidth / appletWidth; var yscale = ignoreHeight ? 1 : windowSize.height / appletHeight; if (allowUpscale !== undefined && !allowUpscale) { xscale = Math.min(1, xscale); yscale = Math.min(1, yscale); } return Math.min(xscale, yscale); } function getScale(parameters, appletElem, showPlayButton) { var scale = 1, autoScale, allowUpscale = false; if (parameters.hasOwnProperty("allowUpscale")) { allowUpscale = parameters.allowUpscale; } if (parameters.hasOwnProperty("scale")) { scale = parseFloat(parameters.scale); if (isNaN(scale) || scale === null || scale === 0) { scale = 1; } if (scale > 1) { allowUpscale = true; } } if (appletElem && _typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen()) { allowUpscale = true; } if (!(parameters.hasOwnProperty("disableAutoScale") && parameters.disableAutoScale)) { autoScale = calcScale(parameters, appletElem, allowUpscale, showPlayButton, parameters.scaleContainerClass); } else { return scale; } if (allowUpscale && (!parameters.hasOwnProperty("scale") || scale === 1)) { return autoScale; } else { return Math.min(scale, autoScale); } } function positionCenter(appletElem) { var windowWidth = Math.min(window.innerWidth, document.documentElement.clientWidth); var windowHeight = Math.min(window.innerHeight, document.documentElement.clientHeight); var appletRect = appletElem.getBoundingClientRect(); var calcHorizontalBorder = (windowWidth - appletRect.width) / 2; var calcVerticalBorder = (windowHeight - appletRect.height) / 2; if (calcVerticalBorder < 0) { calcVerticalBorder = 0; } appletElem.style.position = "relative"; if (window.GGBT_wsf_view.getCloseBtnPosition() === "closePositionRight") { if (calcHorizontalBorder < 40) { appletElem.style.left = "40px"; } else { appletElem.style.left = calcHorizontalBorder + "px"; } appletElem.style.top = calcVerticalBorder + "px"; } else if (window.GGBT_wsf_view.getCloseBtnPosition() === "closePositionTop") { if (calcVerticalBorder < 40) { appletElem.style.top = "40px"; } else { appletElem.style.top = calcVerticalBorder + "px"; } appletElem.style.left = calcHorizontalBorder + "px"; } } function responsiveResize(appletElem, parameters) { var article = appletElem.querySelector(".appletParameters"); if (article) { if (_typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen()) { if (parameters.id !== article.getAttribute("data-param-id")) { return; } window.GGBT_wsf_view.setCloseBtnPosition(appletElem); } if (article.parentElement && /fullscreen/.test(article.parentElement.className)) { return; } var scale = getScale(parameters, appletElem); if (isFlexibleWorksheetEditor()) { article.setAttribute("data-param-scale", scale); } var scaleElem = null; for (var i = 0; i < appletElem.childNodes.length; i++) { if (appletElem.childNodes[i].className !== undefined && appletElem.childNodes[i].className.match(/^applet_scaler/)) { scaleElem = appletElem.childNodes[i]; break; } } if (scaleElem !== null && scaleElem.querySelector(".noscale") !== null) { return; } var appName = parameters.id !== undefined ? parameters.id : "ggbApplet"; var app = window[appName]; if ((app == null || !app.recalculateEnvironments) && scaleElem !== null && !scaleElem.className.match(/fullscreen/)) { scaleElem.parentNode.style.transform = ""; if (!isNaN(scale) && scale !== 1) { scaleElem.parentNode.style.width = parameters.width * scale + "px"; scaleElem.parentNode.style.height = parameters.height * scale + "px"; scaleElement(scaleElem, scale); } else { scaleElement(scaleElem, 1); scaleElem.parentNode.style.width = parameters.width + "px"; scaleElem.parentNode.style.height = parameters.height + "px"; } } if (_typeof(window.GGBT_wsf_view) === "object" && window.GGBT_wsf_view.isFullscreen()) { positionCenter(appletElem); } if (window.GGBT_wsf_view && !window.GGBT_wsf_view.isFullscreen()) { window.GGBT_wsf_general.adjustContentToResize($(article).parents(".content-added-content")); } } } return { responsiveResize: responsiveResize, isFlexibleWorksheetEditor: isFlexibleWorksheetEditor, positionCenter: positionCenter, getScale: getScale, scaleElement: scaleElement }; }(); if (true) { !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { return GGBApplet; }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } GGBAppletUtils.makeModule = function (name, permutation) { function webModule() { var H = "bootstrap", I = "begin", J = "gwt.codesvr." + name + "=", K = "gwt.codesvr=", L = name, M = "startup", N = "DUMMY", O = 0, P = 1, Q = "iframe", R = "position:absolute; width:0; height:0; border:none; left: -1000px;", S = " top: -1000px;", T = "Chrome", U = "CSS1Compat", V = "", W = "", X = "", Y = "undefined", Z = "readystatechange", $ = 10, _ = "script", ab = "javascript", bb = "Failed to load ", cb = "moduleStartup", db = "scriptTagAdded", eb = "moduleRequested", fb = "meta", gb = "name", hb = name + "::", ib = "::", jb = "gwt:property", kb = "content", lb = "=", mb = "gwt:onPropertyErrorFn", nb = 'Bad handler "', ob = '" for "gwt:onPropertyErrorFn"', pb = "gwt:onLoadErrorFn", qb = '" for "gwt:onLoadErrorFn"', rb = "#", sb = "?", tb = "/", ub = "img", vb = "clear.cache.gif", wb = "baseUrl", xb = name + ".nocache.js", yb = "base", zb = "//", Ab = "selectingPermutation", Bb = name + ".devmode.js", Cb = permutation, Db = ":", Eb = ".cache.js", Fb = "loadExternalRefs", Gb = "end"; var n = window; var o = document; q(H, I); function p() { var a = n.location.search; return a.indexOf(J) != -1 || a.indexOf(K) != -1; } function q(a, b) {} webModule.__sendStats = q; webModule.__moduleName = L; webModule.__errFn = null; webModule.__moduleBase = N; webModule.__softPermutationId = O; webModule.__computePropValue = null; webModule.__getPropMap = null; webModule.__installRunAsyncCode = function () {}; webModule.__gwtStartLoadingFragment = function () { return null; }; webModule.__gwt_isKnownPropertyValue = function () { return false; }; webModule.__gwt_getMetaProperty = function () { return null; }; var r = null; var s = n.__gwt_activeModules = n.__gwt_activeModules || {}; s[L] = { moduleName: L }; webModule.__moduleStartupDone = function (e) { var f = s[L].bindings; s[L].bindings = function () { var a = f ? f() : {}; var b = e[webModule.__softPermutationId]; for (var c = O; c < b.length; c++) { var d = b[c]; a[d[O]] = d[P]; } return a; }; }; var t; function u() { v(); return t; } function v() { if (t) { return; } var a = o.createElement(Q); a.id = L; a.style.cssText = R + S; a.tabIndex = -1; o.body.appendChild(a); t = a.contentWindow.document; if (navigator.userAgent.indexOf(T) == -1) { t.open(); var b = document.compatMode == U ? V : W; t.write(b + X); t.close(); } } function w(f) { function g(a) { function b() { if (_typeof(o.readyState) == Y) { return _typeof(o.body) != Y && o.body != null; } return /loaded|complete/.test(o.readyState); } var c = b(); if (c) { a(); return; } function d() { if (!c) { if (!b()) { return; } c = true; a(); if (o.removeEventListener) { o.removeEventListener(Z, d, false); } if (e) { clearInterval(e); } } } if (o.addEventListener) { o.addEventListener(Z, d, false); } var e = setInterval(function () { d(); }, $); } function h(a) { var b = u(); var c = b.body; var d = b.createElement(_); d.language = ab; d.crossOrigin = W; d.src = a; if (webModule.__errFn) { d.onerror = function () { webModule.__errFn(L, new Error(bb + a)); }; } c.appendChild(d); q(cb, db); } q(cb, eb); g(function () { h(f); }); } webModule.__startLoadingFragment = function (a) { return C(a); }; webModule.__installRunAsyncCode = function (a) { var b = u(); var c = b.body; var d = b.createElement(_); d.language = ab; d.text = a; c.appendChild(d); c.removeChild(d); }; function A() { var c = {}; var d; var e; var f = o.getElementsByTagName(fb); for (var g = O, h = f.length; g < h; ++g) { var i = f[g], j = i.getAttribute(gb), k; if (j) { j = j.replace(hb, W); if (j.indexOf(ib) >= O) { continue; } if (j == jb) { k = i.getAttribute(kb); if (k) { var l, m = k.indexOf(lb); if (m >= O) { j = k.substring(O, m); l = k.substring(m + P); } else { j = k; l = W; } c[j] = l; } } else if (j == mb) { k = i.getAttribute(kb); if (k) { try { d = eval(k); } catch (a) { alert(nb + k + ob); } } } else if (j == pb) { k = i.getAttribute(kb); if (k) { try { e = eval(k); } catch (a) { alert(nb + k + qb); } } } } } __gwt_getMetaProperty = function __gwt_getMetaProperty(a) { var b = c[a]; return b == null ? null : b; }; r = d; webModule.__errFn = e; } function B() { function e(a) { var b = a.lastIndexOf(rb); if (b == -1) { b = a.length; } var c = a.indexOf(sb); if (c == -1) { c = a.length; } var d = a.lastIndexOf(tb, Math.min(c, b)); return d >= O ? a.substring(O, d + P) : W; } function f(a) { if (a.match(/^\w+:\/\//)) {} else { var b = o.createElement(ub); b.src = a + vb; a = e(b.src); } return a; } function g() { var a = __gwt_getMetaProperty(wb); if (a != null) { return a; } return W; } function h() { var a = o.getElementsByTagName(_); for (var b = O; b < a.length; ++b) { if (a[b].src.indexOf(xb) != -1) { return e(a[b].src); } } return W; } function i() { var a = o.getElementsByTagName(yb); if (a.length > O) { return a[a.length - P].href; } return W; } function j() { var a = o.location; return a.href == a.protocol + zb + a.host + a.pathname + a.search + a.hash; } var k = g(); if (k == W) { k = h(); } if (k == W) { k = i(); } if (k == W && j()) { k = e(o.location.href); } k = f(k); return k; } function C(a) { if (a.match(/^\//)) { return a; } if (a.match(/^[a-zA-Z]+:\/\//)) { return a; } return webModule.__moduleBase + a; } function D() { var f = []; var g = O; var h = []; var i = []; function j(a) { var b = i[a](), c = h[a]; if (b in c) { return b; } var d = []; for (var e in c) { d[c[e]] = e; } if (r) { r(a, d, b); } throw null; } __gwt_isKnownPropertyValue = function __gwt_isKnownPropertyValue(a, b) { return b in h[a]; }; webModule.__getPropMap = function () { var a = {}; for (var b in h) { if (h.hasOwnProperty(b)) { a[b] = j(b); } } return a; }; webModule.__computePropValue = j; n.__gwt_activeModules[L].bindings = webModule.__getPropMap; if (p()) { return C(Bb); } var k; try { k = Cb; var l = k.indexOf(Db); if (l != -1) { g = parseInt(k.substring(l + P), $); k = k.substring(O, l); } } catch (a) {} webModule.__softPermutationId = g; return C(k + Eb); } function F() { if (!n.__gwt_stylesLoaded) { n.__gwt_stylesLoaded = {}; } } A(); webModule.__moduleBase = "/js/mathematicalGraphics/" + name + "/"; s[L].moduleBase = webModule.__moduleBase; var G = D(); F(); w(G); return true; } return webModule; }; if (typeof window.web3d !== "function") { window.web3d = GGBAppletUtils.makeModule("web3d", "A18F540516513B1292CA7CEF2F6AFC7E"); } if (typeof window.webSimple !== "function") { window.webSimple = GGBAppletUtils.makeModule("webSimple", "96B09BF1B436BF53F0DF54116700F16A"); } window.GGBApplet = GGBApplet; })(); /***/ }), /***/ 71376: /*!*********************************!*\ !*** ./src/pages/tasks/util.js ***! \*********************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Ax: function() { return /* binding */ processTreeData; }, /* harmony export */ Ds: function() { return /* binding */ debounce; }, /* harmony export */ KI: function() { return /* binding */ apiPref; }, /* harmony export */ SI: function() { return /* binding */ getTreeData; }, /* harmony export */ f1: function() { return /* binding */ isCompileOk; } /* harmony export */ }); /* unused harmony export isProd */ /* harmony import */ var _utils_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/env */ 83877); function isCompileOk(rs) { var flag = true; if (rs.length > 0) { for (var i = 0; i < rs.length; i++) { if (rs[i].compile_success == 0 || !rs[i].compile_success) { flag = false; break; } } } else { flag = false; } return flag; } function getTreeData(data) { var parentKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var result = []; for (var i = 0; i < data.length; i++) { var item = data[i]; var key = parentKey ? "".concat(parentKey, "/").concat(item.name) : "".concat(item.name); result.push({ title: item.name, isLeaf: item.type === 'tree' ? false : true, key: key }); } return result; } function processTreeData(repos, key, newData) { for (var i = 0; i < repos.length; i++) { var item = repos[i]; if (item.key === key) { item.children = newData; break; } if (item.children) { processTreeData(item.children, key, newData); } } return repos; } function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function later() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; } var isProd = true; var apiPref = _utils_env__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z.API_SERVER; // export const isProd = // window.location.href.indexOf('test-') > 0 || // window.location.href.indexOf('localhost') > 0 // ? false // : true; // export const apiPref = isProd // ? 'https://www.educoder.net' // : 'https://test-newweb.educoder.net'; /***/ }), /***/ 1737: /*!**************************************************************!*\ !*** ./src/components/ImageDimensions/index.tsx + 1 modules ***! \**************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { Z: function() { return /* binding */ components_ImageDimensions; } }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js var regeneratorRuntime = __webpack_require__(7557); var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js var asyncToGenerator = __webpack_require__(41498); var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js var slicedToArray = __webpack_require__(79800); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); ;// CONCATENATED MODULE: ./src/components/ImageDimensions/index.less?modules // extracted by mini-css-extract-plugin /* harmony default export */ var ImageDimensionsmodules = ({"imageDimensions":"imageDimensions___a7crR","img":"img___Kroat","fullWidth":"fullWidth___c492T"}); // EXTERNAL MODULE: ./node_modules/_classnames@2.5.1@classnames/index.js var _classnames_2_5_1_classnames = __webpack_require__(92310); var _classnames_2_5_1_classnames_default = /*#__PURE__*/__webpack_require__.n(_classnames_2_5_1_classnames); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/spin/index.js + 1 modules var spin = __webpack_require__(71418); // EXTERNAL MODULE: ./node_modules/_markerjs3@2.29.1@markerjs3/markerjs2.esm.js var markerjs2_esm = __webpack_require__(2859); // EXTERNAL MODULE: ./src/utils/fetch.ts var fetch = __webpack_require__(41686); // EXTERNAL MODULE: ./src/utils/util.tsx var util = __webpack_require__(72345); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js var jsx_runtime = __webpack_require__(37712); ;// CONCATENATED MODULE: ./src/components/ImageDimensions/index.tsx var ImageDimensions = function ImageDimensions(_ref) { var data = _ref.data, className = _ref.className, fullWidth = _ref.fullWidth, _ref$style = _ref.style, style = _ref$style === void 0 ? {} : _ref$style, onClose = _ref.onClose, onOk = _ref.onOk, showFullTools = _ref.showFullTools, noAssociationId = _ref.noAssociationId; var imgRef = (0,_react_17_0_2_react.useRef)(null); var markerArea = (0,_react_17_0_2_react.useRef)(null); var _useState = (0,_react_17_0_2_react.useState)(false), _useState2 = slicedToArray_default()(_useState, 2), loading = _useState2[0], setLoading = _useState2[1]; var _useState3 = (0,_react_17_0_2_react.useState)('正在加载中'), _useState4 = slicedToArray_default()(_useState3, 2), loadingText = _useState4[0], setLoadingText = _useState4[1]; (0,_react_17_0_2_react.useEffect)(function () { if (data !== null && data !== void 0 && data.visible) { document.body.setAttribute('data-custom', 'y-hidden'); } else { document.body.removeAttribute('data-custom'); } if (data !== null && data !== void 0 && data.src) { getImg(); } }, [data === null || data === void 0 ? void 0 : data.visible]); var getImg = /*#__PURE__*/function () { var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() { var res; return regeneratorRuntime_default()().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: setLoading(true); setLoadingText('正在加载中'); _context.next = 4; return (0,util/* toDataUrl */.ZJ)(data === null || data === void 0 ? void 0 : data.src); case 4: res = _context.sent; imgRef.current.src = ""; imgRef.current.src = res; imgRef.current.onload = function () { initMarkerjs(); }; setLoading(false); setLoadingText(''); case 10: case "end": return _context.stop(); } }, _callee); })); return function getImg() { return _ref2.apply(this, arguments); }; }(); var onSave = /*#__PURE__*/function () { var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(event) { var res, result; return regeneratorRuntime_default()().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: setLoading(true); setLoadingText('正在保存中'); _context2.next = 4; return (0,fetch/* default */.ZP)('/api/attachments.json', { method: 'post', body: { file_type: 'base64', original_filename: data.title, file: event.dataUrl } }); case 4: res = _context2.sent; if (!(res !== null && res !== void 0 && res.id && !noAssociationId)) { _context2.next = 12; break; } _context2.next = 8; return (0,fetch/* default */.ZP)("/api/attachments/".concat(data.id, "/add_subitem.json"), { method: 'post', body: { subitem_id: res === null || res === void 0 ? void 0 : res.id, settings: JSON.stringify(event.state) } }); case 8: result = _context2.sent; if (result.status === 0) { onOk(); } _context2.next = 13; break; case 12: if (res !== null && res !== void 0 && res.id) { onOk(res); } case 13: setLoading(false); setLoadingText(''); case 15: case "end": return _context2.stop(); } }, _callee2); })); return function onSave(_x) { return _ref3.apply(this, arguments); }; }(); var dealDom = function dealDom() { // 删除标签 // 找到href为"https://markerjs.com/"的a标签 var targetLink = document.querySelector('a[href="https://markerjs.com/"]'); if (targetLink && targetLink.parentNode) { targetLink.parentNode.style.display = 'none'; } // 设置title var item = [{ name: '[data-action="select"]', title: '选择' }, { name: '[data-action="delete"]', title: '删除元素' }, { name: '[data-action="undo"]', title: '撤销' }, { name: '[data-type-name="FrameMarker"]', title: '矩形' }, { name: '[data-type-name="FreehandMarker"]', title: '画线' }, { name: '[data-type-name="ArrowMarker"]', title: '箭头' }, { name: '[data-type-name="TextMarker"]', title: '文本' }, { name: '[data-type-name="EllipseMarker"]', title: '椭圆' }, { name: '[data-type-name="HighlightMarker"]', title: '方块' }, { name: '[data-type-name="CalloutMarker"]', title: '注释' }, { name: '[data-action="render"]', title: '保存' }, { name: '[data-action="close"]', title: '退出' }]; item.forEach(function (e) { var targetElement = document.querySelector(e.name); if (targetElement) { targetElement.setAttribute('title', e.title); } }); }; var initMarkerjs = function initMarkerjs() { markerArea.current = new markerjs2_esm/* MarkerArea */.hP(imgRef.current); markerArea.current.addEventListener('render', onSave); markerArea.current.addEventListener('beforeclose', onClose); if (showFullTools) { markerArea.current.availableMarkerTypes = markerArea.current.ALL_MARKER_TYPES; markerArea.current.uiStyleSettings.redoButtonVisible = true; markerArea.current.uiStyleSettings.notesButtonVisible = true; markerArea.current.uiStyleSettings.zoomButtonVisible = true; markerArea.current.uiStyleSettings.zoomOutButtonVisible = true; markerArea.current.uiStyleSettings.clearButtonVisible = true; } window.markerArea = markerArea.current.uiStyleSettings; markerArea.current.show(); if (data !== null && data !== void 0 && data.snapshotData) { markerArea.current.restoreState(data.snapshotData); } setTimeout(function () { dealDom(); }, 300); }; return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, { children: (data === null || data === void 0 ? void 0 : data.visible) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: _classnames_2_5_1_classnames_default()(ImageDimensionsmodules.imageDimensions, className, fullWidth ? ImageDimensionsmodules.fullWidth : ""), style: style, children: [/*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, { spinning: loading, tip: loadingText, style: { position: 'absolute' } }), /*#__PURE__*/(0,jsx_runtime.jsx)("img", { className: ImageDimensionsmodules.img, ref: imgRef // crossOrigin='anonymous' // src={data?.src} })] }) }); }; /* harmony default export */ var components_ImageDimensions = (ImageDimensions); /***/ }), /***/ 11810: /*!******************************************************!*\ !*** ./src/components/Spinner/index.tsx + 1 modules ***! \******************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { Z: function() { return /* binding */ Spinner; } }); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); // EXTERNAL MODULE: ./src/.umi-production/exports.ts + 15 modules var _umi_production_exports = __webpack_require__(16749); ;// CONCATENATED MODULE: ./src/components/Spinner/index.less?modules // extracted by mini-css-extract-plugin /* harmony default export */ var Spinnermodules = ({"ldsRing":"ldsRing___mpBZC","idsRingWrapper":"idsRingWrapper___Of9_n","ldsring":"ldsring___o0w2t"}); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js var jsx_runtime = __webpack_require__(37712); ;// CONCATENATED MODULE: ./src/components/Spinner/index.tsx /* harmony default export */ var Spinner = (function (_ref) { var message = _ref.message, className = _ref.className, children = _ref.children, _ref$style = _ref.style, style = _ref$style === void 0 ? {} : _ref$style; return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "".concat(Spinnermodules.idsRingWrapper, " ").concat(className), children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Spinnermodules.ldsRing, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {})] }), message ? /*#__PURE__*/(0,jsx_runtime.jsx)("p", { style: style, children: message }) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(_umi_production_exports.Outlet, {})] }); }); /***/ }), /***/ 98551: /*!*************************************************************!*\ !*** ./src/components/SplitContainer/index.tsx + 1 modules ***! \*************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { Z: function() { return /* binding */ SplitContainer; } }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js var slicedToArray = __webpack_require__(79800); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); ;// CONCATENATED MODULE: ./src/components/SplitContainer/index.less // extracted by mini-css-extract-plugin // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js var jsx_runtime = __webpack_require__(37712); ;// CONCATENATED MODULE: ./src/components/SplitContainer/index.tsx /* harmony default export */ var SplitContainer = (function (_ref) { var _ref$defaultX = _ref.defaultX, defaultX = _ref$defaultX === void 0 ? '40%' : _ref$defaultX, leftChild = _ref.leftChild, rightChild = _ref.rightChild, className = _ref.className, _ref$hideResize = _ref.hideResize, hideResize = _ref$hideResize === void 0 ? false : _ref$hideResize; var _useState = (0,_react_17_0_2_react.useState)(defaultX), _useState2 = slicedToArray_default()(_useState, 2), moveX = _useState2[0], setMoveX = _useState2[1]; var resizeXFlag = (0,_react_17_0_2_react.useRef)(); function onResizeStart() { resizeXFlag.current = true; } (0,_react_17_0_2_react.useEffect)(function () { function onMove(e) { if (resizeXFlag.current) { setMoveX(e.pageX); } } function onMouseUp() { resizeXFlag.current = false; } window.addEventListener('mousemove', onMove); window.addEventListener('mouseup', onMouseUp); return function () { window.removeEventListener('mousemove', onMove); window.removeEventListener('mouseup', onMouseUp); }; }, []); var leftPanelWidth = typeof moveX === 'number' && moveX !== 0.01 ? "".concat(moveX, "px") : defaultX; var rightPanelWidth = "calc(100% - ".concat(hideResize ? "0px" : "4px", " - ").concat(leftPanelWidth, ")"); return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "split-panel-container ".concat(className), children: [/*#__PURE__*/(0,jsx_runtime.jsx)("section", { style: { width: leftPanelWidth, display: moveX === 0.01 ? 'none' : '' }, children: leftChild }), /*#__PURE__*/(0,jsx_runtime.jsx)("section", { className: "resize-x-bar", onMouseDown: onResizeStart, children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", { className: "btn-resize", children: /*#__PURE__*/(0,jsx_runtime.jsx)("svg", { width: "16", height: "13", viewBox: "0 0 16 13", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M12.245 7.53H5.647v1.882h6.598v2.823L16 8.471l-3.755-3.765V7.53zM10.353 4.706H3.755v2.823L0 3.765 3.755 0v2.824h6.598v1.882z" }) }) }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("section", { style: { width: rightPanelWidth }, children: rightChild })] }); }); /***/ }), /***/ 21591: /*!********************************************!*\ !*** ./src/components/Timepiece/index.tsx ***! \********************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js */ 79800); /* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 59301); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ 37712); var completionFunc = function completionFunc(value) { if (String(value).length === 1) return "0".concat(value); return value; }; var Timepiece = function Timepiece(_ref) { var _ref$className = _ref.className, className = _ref$className === void 0 ? '' : _ref$className, onChange = _ref.onChange, _ref$defaultValue = _ref.defaultValue, defaultValue = _ref$defaultValue === void 0 ? 0 : _ref$defaultValue; var _useState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(defaultValue), _useState2 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2), remainTime = _useState2[0], setTime = _useState2[1]; (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { var timer = setTimeout(function () { setTime(remainTime + 1000); }, 1000); onChange(remainTime + 1000); return function () { clearInterval(timer); }; }, [remainTime]); var remainHour = parseInt(remainTime / (60 * 60000)) || '00'; var remainMinutes = parseInt(remainTime % (60 * 60000) / 60000) || '00'; var remainSeconds = parseInt(remainTime % 60000 / 1000) || '00'; return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", { className: className, children: [completionFunc(remainHour), ":", completionFunc(remainMinutes), ":", completionFunc(remainSeconds)] }); }; /* harmony default export */ __webpack_exports__.Z = (Timepiece); /***/ }), /***/ 30357: /*!*********************************************************!*\ !*** ./src/components/Video/Play/index.jsx + 1 modules ***! \*********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { Z: function() { return /* binding */ Play; } }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js var slicedToArray = __webpack_require__(79800); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js var regeneratorRuntime = __webpack_require__(7557); var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js var asyncToGenerator = __webpack_require__(41498); var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules var message = __webpack_require__(8591); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/index.js + 1 modules var dropdown = __webpack_require__(38854); // EXTERNAL MODULE: ./node_modules/_flv.js@1.5.0@flv.js/src/flv.js + 38 modules var flv = __webpack_require__(51021); // EXTERNAL MODULE: ./node_modules/_hls.js@1.5.6@hls.js/dist/hls.mjs var dist_hls = __webpack_require__(70535); // EXTERNAL MODULE: ./src/utils/authority.ts var authority = __webpack_require__(63813); // EXTERNAL MODULE: ./node_modules/_react-copy-to-clipboard@5.0.2@react-copy-to-clipboard/lib/index.js var lib = __webpack_require__(56102); // EXTERNAL MODULE: ./src/utils/fullscreen.ts var fullscreen = __webpack_require__(89365); ;// CONCATENATED MODULE: ./src/components/Video/Play/index.less?modules // extracted by mini-css-extract-plugin /* harmony default export */ var Playmodules = ({"watermark":"watermark___hNYlv","videovideo":"videovideo___ovOkV","animate__loop":"animate__loop___mvL6s","upDown":"upDown___SlgHv","container":"container___g1WYG","video-container":"video-container___XPkWR","video-controls":"video-controls___to0Zq","hide":"hide___NA3DV","video-progress":"video-progress___gqHsd","seek":"seek___iZHBm","seek-tooltip":"seek-tooltip___uWyXx","bottom-controls":"bottom-controls___uoIBm","left-controls":"left-controls___mBEx4","right-controls":"right-controls___e9L6r","rateOverlay":"rateOverlay___HHBWe","controlText":"controlText___M_BWR","volume-controls":"volume-controls___fa3mE","fullscreen-button":"fullscreen-button___ur0es","fullscreen-button1":"fullscreen-button1___rfaXm","pip-button":"pip-button___GFO8W","playback-animation":"playback-animation___ndURq","volume":"volume___OTmpP","hidden":"hidden___o7GkT"}); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js var jsx_runtime = __webpack_require__(37712); ;// CONCATENATED MODULE: ./src/components/Video/Play/index.jsx function formatTime(timeInSeconds) { if (isNaN(timeInSeconds)) { return { minutes: '00', seconds: '00' }; } var result = new Date(timeInSeconds * 1000).toISOString().substr(11, 8); return { hour: result.substr(0, 2), minutes: result.substr(3, 2), seconds: result.substr(6, 2) }; } Object.defineProperty(HTMLMediaElement.prototype, 'playing', { get: function get() { return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2); } }); function compareNumbers(a, b) { return a - b; } function getTotalEffectTime(pos) { pos.sort(compareNumbers); var sum = 0; for (var i = 0; i < pos.length - 1; i++) { var v = Math.abs(pos[i + 1] - pos[i]); if (v < 21) { sum += v; } } return sum; } var regex = /(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i; //接口文档 https://www.showdoc.cc/educoder?page_id=4029884447803706 /* harmony default export */ var Play = (/*#__PURE__*/(0,_react_17_0_2_react.forwardRef)(function (_ref, ref) { var _src, _src2; var allow_skip = _ref.allow_skip, src = _ref.src, toLog = _ref.toLog, videoId = _ref.videoId, logWatchHistory = _ref.logWatchHistory, _ref$courseId = _ref.courseId, courseId = _ref$courseId === void 0 ? null : _ref$courseId, startTime = _ref.startTime, _ref$handlePause = _ref.handlePause, handlePause = _ref$handlePause === void 0 ? function () {} : _ref$handlePause, _ref$handlePlay = _ref.handlePlay, handlePlay = _ref$handlePlay === void 0 ? function () {} : _ref$handlePlay, _ref$handlePlayEnded = _ref.handlePlayEnded, handlePlayEnded = _ref$handlePlayEnded === void 0 ? function () {} : _ref$handlePlayEnded, _ref$autoPlay = _ref.autoPlay, autoPlay = _ref$autoPlay === void 0 ? false : _ref$autoPlay, _ref$onPlayEnded = _ref.onPlayEnded, onPlayEnded = _ref$onPlayEnded === void 0 ? function () {} : _ref$onPlayEnded; src = (_src = src) === null || _src === void 0 ? void 0 : _src.replace('http://', 'https://'); var suf = (_src2 = src) === null || _src2 === void 0 || (_src2 = _src2.split('.')) === null || _src2 === void 0 ? void 0 : _src2.pop(); var isFlv = suf === 'flv'; var el = (0,_react_17_0_2_react.useRef)(); var watermarkRef = (0,_react_17_0_2_react.useRef)(); var warpEl = (0,_react_17_0_2_react.useRef)(); var pauseIcon = (0,_react_17_0_2_react.useRef)(); var playIcon = (0,_react_17_0_2_react.useRef)(); var seekEl = (0,_react_17_0_2_react.useRef)(); var progressBarEl = (0,_react_17_0_2_react.useRef)(); var durationEl = (0,_react_17_0_2_react.useRef)(); var timeElapsedEl = (0,_react_17_0_2_react.useRef)(); var seekTooltipEl = (0,_react_17_0_2_react.useRef)(); var noMuteVolEl = (0,_react_17_0_2_react.useRef)(); var highVolEl = (0,_react_17_0_2_react.useRef)(); var lowVolEl = (0,_react_17_0_2_react.useRef)(); var volumeEl = (0,_react_17_0_2_react.useRef)(); var deviceMatch = navigator.userAgent.toLowerCase().match(regex); var device = deviceMatch ? deviceMatch[0] : 'pc'; var firstOnPlayFlag = (0,_react_17_0_2_react.useRef)(false); var user = (0,authority/* userInfo */.eY)(); var totalDuration = 0; var sumTimePlayed = 0; var lastUpdatedTime = 0; var logId = null; var initLog = false; var timeTick = 20; //记录频率 默认20s var logCount = 1; var isLoging = false; var isSeeking = false; var pos = []; //播放时间点集 (0,_react_17_0_2_react.useImperativeHandle)(ref, function () { return { getLastUpdatedTime: function getLastUpdatedTime() { return el.current.currentTime; }, getDuration: function getDuration() { return el.current.duration; } }; }); message/* default */.ZP.config({ maxCount: 1, getContainer: function getContainer() { return warpEl.current; } }); var log = (0,_react_17_0_2_react.useCallback)(function (callback) { var isEnd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var params = { point: el.current.currentTime }; if (logId) { params['log_id'] = logId; params['watch_duration'] = getTotalEffectTime(pos); //当前观看视频时长,拖放进度条,重复的视频片段观看时,不会把重复的时长累积进来,最大时长是视频的总时长 params['total_duration'] = sumTimePlayed; //累计观看视频时长,拖放进度条,重复的视频片段观看时,重复观看时长要累积进来 } else { if (courseId) { params['video_id'] = parseInt(videoId, 10); params['course_id'] = courseId; } else { params['video_id'] = videoId; } params['duration'] = totalDuration; params['device'] = device; } if (isEnd) { params['ed'] = '1'; } function getLogId() { return _getLogId.apply(this, arguments); } function _getLogId() { _getLogId = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() { var id; return regeneratorRuntime_default()().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: isLoging = true; _context.next = 3; return logWatchHistory === null || logWatchHistory === void 0 ? void 0 : logWatchHistory(params); case 3: id = _context.sent; logId = id; isLoging = false; if (callback) { callback(); } case 7: case "end": return _context.stop(); } }, _callee); })); return _getLogId.apply(this, arguments); } getLogId(); }, [videoId, courseId]); (0,_react_17_0_2_react.useEffect)(function () { var _src3; if (el.current) { pauseIcon.current.style.display = 'none'; playIcon.current.style.display = 'block'; } message/* default */.ZP.destroy(); var player = null; if (flv/* default */.Z.isSupported && isFlv && src && ((_src3 = src) === null || _src3 === void 0 ? void 0 : _src3.indexOf('.m3u8')) < 0) { player = flv/* default */.Z.createPlayer({ type: 'flv', volume: 0.8, cors: true, url: src, muted: false }); if (el.current) { player.attachMediaElement(el.current); player.load(); } } else { el.current.setAttribute('src', src); } updateVolumeIcon(); return function () { if (player) { player.unload(); player.pause(); player.destroy(); player = null; } }; }, [el, isFlv, src]); function playIconStatus() { if (el.current.paused) { pauseIcon.current.style.display = 'none'; playIcon.current.style.display = 'block'; } else { pauseIcon.current.style.display = 'block'; playIcon.current.style.display = 'none'; } } function updateVolumeIcon() { noMuteVolEl.current.style.display = 'none'; lowVolEl.current.style.display = 'none'; highVolEl.current.style.display = 'none'; if (el.current.muted || el.current.volume === 0) { noMuteVolEl.current.style.display = 'block'; } else if (el.current.volume > 0 && el.current.volume <= 0.5) { lowVolEl.current.style.display = 'block'; } else { highVolEl.current.style.display = 'block'; } } (0,_react_17_0_2_react.useEffect)(function () { var playButton = document.getElementById('play'); var playbackIcons = document.querySelectorAll('.playback-icons use'); function onPlay() { handlePlay(); if (startTime && !firstOnPlayFlag.current) { el.current.currentTime = startTime; } firstOnPlayFlag.current = true; pos.push(el.current.currentTime); if (!initLog) { initLog = true; if (toLog) { log(); } } } //循环播放, 累计时长不能清空 function onEnded() { return _onEnded.apply(this, arguments); } function _onEnded() { _onEnded = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() { return regeneratorRuntime_default()().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: playIconStatus(); pos.push(el.current.currentTime); if (toLog) { log(function () { logId = null; lastUpdatedTime = 0; initLog = false; isLoging = false; isSeeking = false; pos = []; //有效时长重新累计,算新的一遍 sumTimePlayed = 0; logCount = 1; }, true); } onPlayEnded(); case 4: case "end": return _context2.stop(); } }, _callee2); })); return _onEnded.apply(this, arguments); } function updateProgress() { // seekEl.current.value = Math.floor(el.current.currentTime); // progressBarEl.current.value = Math.floor(el.current.currentTime); seekEl.current.value = Math.round(el.current.currentTime); progressBarEl.current.value = Math.round(el.current.currentTime); } function updateTimeElapsed() { var time = formatTime(Math.round(el.current.currentTime)); timeElapsedEl.current.innerText = "".concat(time.hour > 0 ? time.hour + ':' : '').concat(time.minutes, ":").concat(time.seconds); timeElapsedEl.current.setAttribute('datetime', "".concat(time.hour > 0 ? ' ' + time.hour + ' ' : '').concat(time.minutes, "m ").concat(time.seconds, "s")); } function initializeVideo() { var videoDuration = Math.round(el.current.duration); seekEl.current.setAttribute('max', videoDuration); progressBarEl.current.setAttribute('max', videoDuration); var time = formatTime(videoDuration); durationEl.current.innerText = "".concat(time.hour > 0 ? time.hour + ':' : '').concat(time.minutes, ":").concat(time.seconds); durationEl.current.setAttribute('datetime', "".concat(time.hour > 0 ? ' ' + time.hour + ' ' : '').concat(time.minutes, "m ").concat(time.seconds, "s")); } function onTimeupdate() { try { var videoDuration = Math.round(el.current.duration); seekEl.current.setAttribute('max', videoDuration); progressBarEl.current.setAttribute('max', videoDuration); var time = formatTime(videoDuration); durationEl.current.innerText = "".concat(time.hour > 0 ? time.hour + ':' : '').concat(time.minutes, ":").concat(time.seconds); durationEl.current.setAttribute('datetime', "".concat(time.hour > 0 ? ' ' + time.hour + ' ' : '').concat(time.minutes, "m ").concat(time.seconds, "s")); updateProgress(); updateTimeElapsed(); var _watermarkRef$current = watermarkRef.current.getBoundingClientRect(), width = _watermarkRef$current.width, height = _watermarkRef$current.height, x = _watermarkRef$current.x, y = _watermarkRef$current.y; if (x < 0 || y < 0 || !width) { // el.current.src = ''; // el.current.pause(); // message.warning({ // content: '当前操作非法,已禁止观看视频', // key: 'watermarkRef', // }); return; } if (!isSeeking) { var newTime = el.current.currentTime; var timeDiff = newTime - lastUpdatedTime; //currenttime update before Seeking & Seeked fired if (Math.abs(timeDiff) < 10) { sumTimePlayed += Math.abs(timeDiff); lastUpdatedTime = newTime; if (!isLoging) { if (sumTimePlayed - logCount * timeTick >= 0) { logCount++; pos.push(lastUpdatedTime); if (toLog) { log(); } } } } else { lastUpdatedTime = newTime; if (toLog) { log(); } } } } catch (error) { console.log(error); } } function onSeeking() { isSeeking = true; } function onSeeked() { if (el.current.playing) { pos.push(el.current.currentTime, lastUpdatedTime); } lastUpdatedTime = el.current.currentTime; isSeeking = false; } function onCanPlay() { totalDuration = el.current.duration; if (totalDuration <= 20) { timeTick = totalDuration / 3; } el.current.addEventListener('play', onPlay); } function onFullscreenchange(e) { e.preventDefault(); if ((0,fullscreen/* IsFull */.vp)()) { el.current.style.width = '100%'; el.current.style.height = '100%'; } else { el.current.style.cssText = ''; } } function onPause() { handlePause(); } function skipAhead(event) { if (!allow_skip) { message/* default */.ZP.warning('该视频禁止快进/后退播放'); return; } var skipTo = event.target.dataset.seek ? event.target.dataset.seek : event.target.value; el.current.currentTime = skipTo; progressBarEl.current.value = skipTo; seekEl.current.value = skipTo; } function updateSeekTooltip(event) { var skipTo = Math.round(event.offsetX / event.target.clientWidth * parseInt(event.target.getAttribute('max'), 10)); seekEl.current.setAttribute('data-seek', skipTo); var t = formatTime(skipTo); seekTooltipEl.current.textContent = "".concat(t.hour > 0 ? t.hour + ':' : '').concat(t.minutes, ":").concat(t.seconds); var rect = el.current.getBoundingClientRect(); seekTooltipEl.current.style.left = "".concat(event.pageX - rect.left, "px"); } function handleKeyDown(e) { switch (e.code) { case 'Space': e.preventDefault(); //除了需求相关的按键外其余的按键需要保留默认行为,所以preventDefault写在switch里面 togglePlay(); break; case 'ArrowRight': e.preventDefault(); if (!allow_skip) { message/* default */.ZP.warning('该视频禁止快进/后退播放'); break; } if (el.current.currentTime >= el.current.duration) { break; } el.current.currentTime = parseInt(el.current.currentTime) + 5; updateProgress(); break; case 'ArrowLeft': e.preventDefault(); if (!allow_skip) { message/* default */.ZP.warning('该视频禁止快进/后退播放'); break; } if (el.current.currentTime === 0) { break; } el.current.currentTime = parseInt(el.current.currentTime) - 5; updateProgress(); break; case 'ArrowUp': e.preventDefault(); if (el.current.volume < 1) { el.current.volume = (parseInt(el.current.volume * 10) + 1) / 10; } break; case 'ArrowDown': e.preventDefault(); if (el.current.volume > 0) { el.current.volume = (parseInt(el.current.volume * 10) - 1) / 10; } break; } } warpEl.current.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), onFullscreenchange); el.current.addEventListener('canplay', onCanPlay); el.current.addEventListener('ended', onEnded); el.current.addEventListener('seeking', onSeeking); el.current.addEventListener('seeked', onSeeked); el.current.addEventListener('loadedmetadata', initializeVideo); seekEl.current.addEventListener('mousemove', updateSeekTooltip); seekEl.current.addEventListener('input', skipAhead); el.current.addEventListener('timeupdate', onTimeupdate); el.current.addEventListener('pause', onPause); el.current.addEventListener('volumechange', updateVolumeIcon); document.addEventListener('keydown', handleKeyDown); return function () { var _el$current, _el$current2, _el$current3, _el$current4, _el$current5, _seekEl$current, _seekEl$current2, _el$current6, _el$current7, _el$current8, _el$current9, _el$current10; (_el$current = el.current) === null || _el$current === void 0 || _el$current.removeEventListener('canplay', onCanPlay); (_el$current2 = el.current) === null || _el$current2 === void 0 || _el$current2.removeEventListener('play', onPlay); (_el$current3 = el.current) === null || _el$current3 === void 0 || _el$current3.removeEventListener('ended', onEnded); (_el$current4 = el.current) === null || _el$current4 === void 0 || _el$current4.removeEventListener('seeking', onSeeking); (_el$current5 = el.current) === null || _el$current5 === void 0 || _el$current5.removeEventListener('seeked', onSeeked); (_seekEl$current = seekEl.current) === null || _seekEl$current === void 0 || _seekEl$current.removeEventListener('mousemove', updateSeekTooltip); (_seekEl$current2 = seekEl.current) === null || _seekEl$current2 === void 0 || _seekEl$current2.removeEventListener('input', skipAhead); (_el$current6 = el.current) === null || _el$current6 === void 0 || _el$current6.removeEventListener('timeupdate', onTimeupdate); (_el$current7 = el.current) === null || _el$current7 === void 0 || _el$current7.removeEventListener('pause', onPause); (_el$current8 = el.current) === null || _el$current8 === void 0 || _el$current8.removeEventListener('loadedmetadata', initializeVideo); (_el$current9 = el.current) === null || _el$current9 === void 0 || _el$current9.removeEventListener('volumechange', updateVolumeIcon); document.removeEventListener('keydown', handleKeyDown); if ((_el$current10 = el.current) !== null && _el$current10 !== void 0 && _el$current10.playing) { pos.push(lastUpdatedTime, el.current.currentTime); if (toLog) { log(); } } }; }, [el, src]); (0,_react_17_0_2_react.useEffect)(function () { var _src4; el.current.onended = function () { handlePlayEnded(el); }; el.current.oncontextmenu = function () { return false; }; if (((_src4 = src) === null || _src4 === void 0 ? void 0 : _src4.indexOf('.m3u8')) > -1) { if (el.current.canPlayType('application/vnd.apple.mpegurl')) { el.current.src = src; } else if (dist_hls/* default.isSupported */.ZP.isSupported()) { var hls = new dist_hls/* default */.ZP(); hls.loadSource(src); hls.attachMedia(el.current); } } }, [src]); var _useState = (0,_react_17_0_2_react.useState)(1.0), _useState2 = slicedToArray_default()(_useState, 2), videoSpeed = _useState2[0], setVideoSpeed = _useState2[1]; var togglePlay = function togglePlay() { if (el.current.paused || el.current.ended) { el.current.play(); } else { el.current.pause(); } playIconStatus(); }; function toggleMute() { el.current.muted = !el.current.muted; if (el.current.muted) { volumeEl.current.setAttribute('data-volume', volume.value); volumeEl.current.value = 0; } else { volumeEl.current.value = volumeEl.current.dataset.volume; } } return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { style: { position: 'relative' }, ref: warpEl, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", { ref: watermarkRef, className: "".concat(Playmodules.watermark, " animated_alternate animate__animated_10s animate__infinite animate__stepstart ").concat(Playmodules.animate__loop), children: user ? user.login : ' ' }), /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: Playmodules['container'], children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['video-container'], id: "video-container", children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: Playmodules['playback-animation'], id: "playback-animation", children: /*#__PURE__*/(0,jsx_runtime.jsxs)("svg", { className: Playmodules['playback-icons'], children: [/*#__PURE__*/(0,jsx_runtime.jsx)("use", { className: "hidden", href: "#play-icon" }), /*#__PURE__*/(0,jsx_runtime.jsx)("use", { href: "#pause" })] }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("video", { className: Playmodules['video'], id: "video", preload: "auto", disablePictureInPicture: true, ref: el, autoPlay: autoPlay }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "".concat(Playmodules['video-controls'], " "), id: "video-controls", children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['bottom-controls'], children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['left-controls'], children: [/*#__PURE__*/(0,jsx_runtime.jsx)("button", { "data-title": "\u64AD\u653E/\u6682\u505C", id: "play", onClick: togglePlay, children: /*#__PURE__*/(0,jsx_runtime.jsxs)("svg", { className: Playmodules['playback-icons'], children: [/*#__PURE__*/(0,jsx_runtime.jsx)("use", { ref: playIcon, href: "#play-icon" }), /*#__PURE__*/(0,jsx_runtime.jsx)("use", { ref: pauseIcon, style: { display: 'none' }, href: "#pause" })] }) }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['time'], children: [/*#__PURE__*/(0,jsx_runtime.jsx)("time", { id: "time-elapsed", ref: timeElapsedEl, children: "00:00" }), /*#__PURE__*/(0,jsx_runtime.jsx)("span", { children: " / " }), /*#__PURE__*/(0,jsx_runtime.jsx)("time", { id: "duration", ref: durationEl, children: "00:00" })] })] }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['right-controls'], children: [allow_skip && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, { placement: "top", overlayClassName: Playmodules['rateOverlay'], getPopupContainer: function getPopupContainer(trigger) { return trigger.parentNode; }, menu: { items: [{ key: '1', label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { onClick: function onClick() { setVideoSpeed(1); el.current.playbackRate = 1; }, children: "1.0x" }) }, { key: '2', label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { onClick: function onClick() { setVideoSpeed(1.5); el.current.playbackRate = 1.5; }, children: "1.5x" }) }, { key: '3', label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { onClick: function onClick() { setVideoSpeed(2); el.current.playbackRate = 2; }, children: "2.0x" }) }] }, children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: "".concat(Playmodules['controlText'], " mr5"), children: "\u500D\u901F" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, { text: src, onCopy: function onCopy() { return message/* default */.ZP.success('复制成功'); }, children: /*#__PURE__*/(0,jsx_runtime.jsx)("button", { "data-title": '复制链接', children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "icon-lianjie2 iconfont", style: { fontSize: '12px', color: 'white' } }) }) }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['volume-controls'], children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("button", { "data-title": "\u5F00\u542F/\u5173\u95ED\u58F0\u97F3", className: Playmodules['volume-button'], id: "volume-button", onClick: toggleMute, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", { ref: noMuteVolEl, className: "icon-a-bianzu8 iconfont", style: { fontSize: '14px', color: 'white' } }), /*#__PURE__*/(0,jsx_runtime.jsx)("i", { ref: lowVolEl, className: "icon-shengyinkaibeifen iconfont", style: { fontSize: '14px', color: 'white' } }), /*#__PURE__*/(0,jsx_runtime.jsx)("i", { ref: highVolEl, className: "icon-shengyinkai iconfont", style: { fontSize: '14px', color: 'white' } })] }), /*#__PURE__*/(0,jsx_runtime.jsx)("input", { className: Playmodules['volume'], id: "volume", value: "1", "data-mute": "0.5", type: "range", max: "1", min: "0", step: "0.01", ref: volumeEl, style: { display: 'none' }, onClick: updateVolumeIcon })] }), /*#__PURE__*/(0,jsx_runtime.jsx)("button", { "data-title": "\u5168\u5C4F/\u9000\u51FA\u5168\u5C4F", className: Playmodules['fullscreen-button'], onClick: function onClick() { if ((0,fullscreen/* IsFull */.vp)()) { (0,fullscreen/* exitFull */.BU)(); } else { (0,fullscreen/* requestFullScreen */.Dj)(warpEl.current); } }, children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "icon-fangda1 iconfont", style: { fontSize: '12px', color: 'white' } }) })] })] }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: Playmodules['video-progress'], children: [/*#__PURE__*/(0,jsx_runtime.jsx)("progress", { ref: progressBarEl, value: "0", min: "0" }), /*#__PURE__*/(0,jsx_runtime.jsx)("input", { className: Playmodules.seek, ref: seekEl, value: "0", min: "0", type: "range", step: "1" }), /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: Playmodules['seek-tooltip'], ref: seekTooltipEl, id: "seek-tooltip", children: "00:00" })] })] })] }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("svg", { style: { display: 'none' }, children: /*#__PURE__*/(0,jsx_runtime.jsxs)("defs", { children: [/*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "pause", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M14.016 5.016h3.984v13.969h-3.984v-13.969zM6 18.984v-13.969h3.984v13.969h-3.984z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "play-icon", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M8.016 5.016l10.969 6.984-10.969 6.984v-13.969z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "volume-high", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M14.016 3.234q3.047 0.656 5.016 3.117t1.969 5.648-1.969 5.648-5.016 3.117v-2.063q2.203-0.656 3.586-2.484t1.383-4.219-1.383-4.219-3.586-2.484v-2.063zM16.5 12q0 2.813-2.484 4.031v-8.063q1.031 0.516 1.758 1.688t0.727 2.344zM3 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "volume-low", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M5.016 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6zM18.516 12q0 2.766-2.531 4.031v-8.063q1.031 0.516 1.781 1.711t0.75 2.32z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "volume-mute", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M12 3.984v4.219l-2.109-2.109zM4.266 3l16.734 16.734-1.266 1.266-2.063-2.063q-1.547 1.313-3.656 1.828v-2.063q1.172-0.328 2.25-1.172l-4.266-4.266v6.75l-5.016-5.016h-3.984v-6h4.734l-4.734-4.734zM18.984 12q0-2.391-1.383-4.219t-3.586-2.484v-2.063q3.047 0.656 5.016 3.117t1.969 5.648q0 2.203-1.031 4.172l-1.5-1.547q0.516-1.266 0.516-2.625zM16.5 12q0 0.422-0.047 0.609l-2.438-2.438v-2.203q1.031 0.516 1.758 1.688t0.727 2.344z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "fullscreen", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M14.016 5.016h4.969v4.969h-1.969v-3h-3v-1.969zM17.016 17.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 9.984v-4.969h4.969v1.969h-3v3h-1.969zM6.984 14.016v3h3v1.969h-4.969v-4.969h1.969z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "fullscreen-exit", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M15.984 8.016h3v1.969h-4.969v-4.969h1.969v3zM14.016 18.984v-4.969h4.969v1.969h-3v3h-1.969zM8.016 8.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 15.984v-1.969h4.969v4.969h-1.969v-3h-3z" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", { id: "pip", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", { d: "M21 19.031v-14.063h-18v14.063h18zM23.016 18.984q0 0.797-0.609 1.406t-1.406 0.609h-18q-0.797 0-1.406-0.609t-0.609-1.406v-14.016q0-0.797 0.609-1.383t1.406-0.586h18q0.797 0 1.406 0.586t0.609 1.383v14.016zM18.984 11.016v6h-7.969v-6h7.969z" }) })] }) })] }); })); /***/ }), /***/ 4443: /*!************************************************************!*\ !*** ./src/components/image-preview/index.tsx + 1 modules ***! \************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { Z: function() { return /* binding */ image_preview; } }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js var slicedToArray = __webpack_require__(79800); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); ;// CONCATENATED MODULE: ./src/components/image-preview/index.less // extracted by mini-css-extract-plugin // EXTERNAL MODULE: ./src/components/mediator.js var mediator = __webpack_require__(73499); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/image/index.js + 26 modules var es_image = __webpack_require__(52391); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js var jsx_runtime = __webpack_require__(37712); ;// CONCATENATED MODULE: ./src/components/image-preview/index.tsx /* harmony default export */ var image_preview = (function () { var _useState = (0,_react_17_0_2_react.useState)(''), _useState2 = slicedToArray_default()(_useState, 2), url = _useState2[0], setUrl = _useState2[1]; var _useState3 = (0,_react_17_0_2_react.useState)(0), _useState4 = slicedToArray_default()(_useState3, 2), deg = _useState4[0], setDeg = _useState4[1]; var _useState5 = (0,_react_17_0_2_react.useState)(), _useState6 = slicedToArray_default()(_useState5, 2), width = _useState6[0], setwidth = _useState6[1]; var _useState7 = (0,_react_17_0_2_react.useState)(), _useState8 = slicedToArray_default()(_useState7, 2), height = _useState8[0], setheight = _useState8[1]; // const [movable, setmovable] = useState(false); var _useState9 = (0,_react_17_0_2_react.useState)(false), _useState10 = slicedToArray_default()(_useState9, 2), down = _useState10[0], setdown = _useState10[1]; var saveUrl = (0,_react_17_0_2_react.useRef)(''); (0,_react_17_0_2_react.useEffect)(function () { var unSub = mediator/* default */.Z.subscribe('preview-image', function (value) { setUrl(value); // window.document.body // document.body.style.height='100%' console.log(imgref.current); document.body.style.overflow = 'hidden'; }); return unSub; }, []); (0,_react_17_0_2_react.useEffect)(function () { document.addEventListener('keydown', onViewEscClose); return function () { document.removeEventListener('keydown', onViewEscClose); }; }, []); (0,_react_17_0_2_react.useEffect)(function () { saveUrl.current = url; }, [url]); function onViewEscClose(e) { if (e.keyCode == 27 && saveUrl.current) { onClose(); } } // https://data.educoder.net/api/attachments/1571649 function onClose() { // document.body.style.height='100%' document.body.style.overflow = 'auto'; setwidth(undefined); setheight(undefined); setDeg(0); setUrl(''); } function onRotate() { setDeg(deg + 90); } function big() { width = imgref.current.width * 1.1; height = imgref.current.height * 1.1; setheight(height); setwidth(width); } function small() { width = imgref.current.width / 1.1; height = imgref.current.height / 1.1; setheight(height); setwidth(width); } var maskRef = (0,_react_17_0_2_react.useRef)(); var previewWrapperRef = (0,_react_17_0_2_react.useRef)(); var imgref = (0,_react_17_0_2_react.useRef)(); var handleMaskClick = function handleMaskClick(e) { if (e.nativeEvent.target === maskRef.current || e.nativeEvent.target === previewWrapperRef.current) { onClose(); } }; return /*#__PURE__*/(0,jsx_runtime.jsx)(_react_17_0_2_react.Fragment, { children: !url ? null : /*#__PURE__*/(0,jsx_runtime.jsx)("div", { children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: "preview-wrp-group", ref: previewWrapperRef, children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_image/* default */.Z, { className: "image-preview", src: url, style: { display: 'none' } // ref={imgref} , preview: { visible: true, src: url, movable: false, onVisibleChange: function onVisibleChange(value) { setUrl(''); } }, alt: "\u9884\u89C8\u5927\u56FE" }) }) }) }); }); /***/ }), /***/ 75162: /*!*************************************************************!*\ !*** ./src/components/markdown-editor/code-block/index.tsx ***! \*************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ h: function() { return /* binding */ MyCodeMirror; } /* harmony export */ }); /* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js */ 82242); /* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js */ 79800); /* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ 59301); /* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ 57809); /* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! antd */ 78241); /* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd */ 3113); /* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! codemirror */ 89780); /* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(codemirror__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! codemirror/lib/codemirror.css */ 9567); /* harmony import */ var codemirror_theme_blackboard_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! codemirror/theme/blackboard.css */ 33763); /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 37712); var Option = antd__WEBPACK_IMPORTED_MODULE_7__["default"].Option; //https://github.com/codemirror/CodeMirror/issues/4838 var formItemLayout = { labelCol: { span: 4 }, wrapperCol: { span: 20 } }; var LanguageDesc = { asp: ['ASP', 'vbscript'], actionscript: ['ActionScript(3.0)/Flash/Flex', 'clike'], bash: ['Bash/Bat', 'shell'], css: ['CSS', 'css'], c: ['C', 'clike'], cpp: ['C++', 'clike'], csharp: ['C#', 'clike'], coffeescript: ['CoffeeScript', 'coffeescript'], d: ['D', 'd'], dart: ['Dart', 'dart'], delphi: ['Delphi/Pascal', 'pascal'], erlang: ['Erlang', 'erlang'], go: ['Golang', 'go'], groovy: ['Groovy', 'groovy'], html: ['HTML', 'text/html'], java: ['Java', 'clike'], json: ['JSON', 'text/json'], javascript: ['Javascript', 'javascript'], lua: ['Lua', 'lua'], less: ['LESS', 'css'], markdown: ['Markdown', 'gfm'], 'objective-c': ['Objective-C', 'clike'], php: ['PHP', 'php'], perl: ['Perl', 'perl'], python: ['Python', 'python'], r: ['R', 'r'], rst: ['reStructedText', 'rst'], ruby: ['Ruby', 'ruby'], sql: ['SQL', 'sql'], sass: ['SASS/SCSS', 'sass'], shell: ['Shell', 'shell'], scala: ['Scala', 'clike'], swift: ['Swift', 'clike'], vb: ['VB/VBScript', 'vb'], xml: ['XML', 'text/xml'], yaml: ['YAML', 'yaml'] }; /* harmony default export */ __webpack_exports__.Z = (function (_ref) { var callback = _ref.callback, onCancel = _ref.onCancel; var _useState = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('python'), _useState2 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default()(_useState, 2), mode = _useState2[0], setMode = _useState2[1]; function onSetMode(value) { setMode(LanguageDesc[value][1]); } function onSubmit(values) { callback(values); } return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({}, formItemLayout), {}, { className: "code-block-panel", initialValues: { language: 'python', content: '' }, onFinish: onSubmit, style: { width: 500 }, children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z.Item, { label: "\u4EE3\u7801\u8BED\u8A00", name: "language", children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_7__["default"], { getPopupContainer: function getPopupContainer(trigger) { return trigger.parentNode; }, onChange: onSetMode, children: Object.keys(LanguageDesc).map(function (item) { return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(Option, { value: item, children: LanguageDesc[item][0] }, item); }) }) }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z.Item, { label: "\u4EE3\u7801\u5185\u5BB9", name: "content", rules: [{ required: true, message: '请输入代码内容' }], children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(MyCodeMirror, { mode: mode }) }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)("div", { className: "flex-container flex-end", children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .ZP, { type: "primary", htmlType: "submit", style: { marginRight: 10 }, children: "\u786E\u5B9A" }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .ZP, { type: "ghost", onClick: onCancel, children: "\u53D6\u6D88" })] })] })); }); function MyCodeMirror(_ref2) { var value = _ref2.value, onChange = _ref2.onChange, mode = _ref2.mode, _ref2$options = _ref2.options, options = _ref2$options === void 0 ? {} : _ref2$options; var el = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(); var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(), _useState4 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default()(_useState3, 2), cm = _useState4[0], setCm = _useState4[1]; (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () { if (cm) { var onChangeHandler = function onChangeHandler(cm) { var content = cm.getValue(); onChange && onChange(content); }; cm.on('change', onChangeHandler); return function () { cm.off('change', onChangeHandler); }; } }, [cm, onChange]); (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () { if (cm) { cm.setOption('mode', mode); } }, [cm, mode]); (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () { if (cm) { if (value !== cm.getValue() || value === '') { setTimeout(function () { cm.setValue(value || ''); }, 300); } } }, [cm, value]); (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () { if (el.current && !cm) { var instance = codemirror__WEBPACK_IMPORTED_MODULE_3___default().fromTextArea(el.current, _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_7_23_6_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({ mode: mode, lineNumbers: true, lineWrapping: true, autoCloseBrackets: true, tabSize: 4, autofocus: true, autoCloseTags: true, matchBrackets: true, styleActiveLine: true }, options)); setCm(instance); } }, [el.current, cm]); return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", { className: "my-codemirror-container", children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("textarea", { ref: el }) }); } /***/ }), /***/ 89215: /*!***************************************************************!*\ !*** ./src/components/markdown-editor/index.tsx + 15 modules ***! \***************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { Z: function() { return /* binding */ markdown_editor; } }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/createForOfIteratorHelper.js var createForOfIteratorHelper = __webpack_require__(91232); var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/slicedToArray.js var slicedToArray = __webpack_require__(79800); var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/defineProperty.js var defineProperty = __webpack_require__(85573); var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/lib/codemirror.js var codemirror = __webpack_require__(89780); var codemirror_default = /*#__PURE__*/__webpack_require__.n(codemirror); // EXTERNAL MODULE: ./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js var ResizeObserver_es = __webpack_require__(76374); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/lib/codemirror.css var lib_codemirror = __webpack_require__(9567); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/addon/edit/closetag.js var closetag = __webpack_require__(6313); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/addon/edit/closebrackets.js var closebrackets = __webpack_require__(25717); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/addon/display/placeholder.js var placeholder = __webpack_require__(99498); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/mode/markdown/markdown.js var markdown = __webpack_require__(25419); // EXTERNAL MODULE: ./node_modules/_codemirror@5.58.2@codemirror/mode/stex/stex.js var stex = __webpack_require__(67549); ;// CONCATENATED MODULE: ./src/components/markdown-editor/index.less // extracted by mini-css-extract-plugin // EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx var RenderHtml = __webpack_require__(66128); // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js var jsx_runtime = __webpack_require__(37712); ;// CONCATENATED MODULE: ./src/components/RenderHtml/stex.tsx // const latexjs = require('latex-l.js/dist/latex.js'); // import "latex-l.js/dist/css/base.css" /* harmony default export */ var RenderHtml_stex = (function (_ref) { var _ref$value = _ref.value, value = _ref$value === void 0 ? '' : _ref$value, className = _ref.className, showTextOnly = _ref.showTextOnly, showLines = _ref.showLines, _ref$style = _ref.style, style = _ref$style === void 0 ? {} : _ref$style; var html = (0,_react_17_0_2_react.useMemo)(function () { // try { // const latex = value || 'This is some text'; // let generator = new latexjs.default.HtmlGenerator({ hyphenate: true }) // let doc = latexjs.default.parse(latex, { generator: generator }).htmlDocument() // return doc.body.innerHTML // }catch(e){ // console.log("e:",e) // return "错误的latex语法,请检查" // } return ""; }, [value]); return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, { children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", { dangerouslySetInnerHTML: { __html: html } }) }); }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/objectSpread2.js var objectSpread2 = __webpack_require__(82242); var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2); ;// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.less // extracted by mini-css-extract-plugin ;// CONCATENATED MODULE: ./src/components/markdown-editor/css/iconfont.css // extracted by mini-css-extract-plugin ;// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.tsx var DEFAULTICONS = [{ title: '粗体', icon: 'md-iconfont icon-bold', actionName: 'bold' }, { title: '斜体', icon: 'md-iconfont icon-italic', actionName: 'italic' }, '|', { title: '无序列表', icon: 'md-iconfont icon-unorder-list', actionName: 'list-ul' }, { title: '有序列表', icon: 'md-iconfont icon-order-list', actionName: 'list-ol' }, '|', { title: '行内代码', icon: 'md-iconfont icon-code', actionName: 'code' }, { title: '代码块(多语言风格)', icon: 'md-iconfont icon-file-code', actionName: 'code-block' }, { title: '链接', icon: 'md-iconfont icon-link', actionName: 'link' }, '|', { title: '行内公式', icon: 'md-iconfont icon-sum', actionName: 'inline-latex' }, { title: '数学图像', icon: 'iconfont icon-shuxuetuxiang2', actionName: 'maths-latex' }, { title: '多行公式', icon: 'iconfont icon-jisuan1', actionName: 'latex' }, '|', { title: '添加图片', icon: 'md-iconfont icon-picture', actionName: 'upload-image' }, { title: '插入画图', icon: 'iconfont icon-sheji', actionName: 'draw-image' }, { title: '插入流程图', icon: 'iconfont icon-liucheng', actionName: 'add-flowchart' }, { title: '表格', icon: 'md-iconfont icon-table', actionName: 'add-table' }, '|', { title: '换行', icon: 'md-iconfont icon-minus', actionName: 'line-break' }, { title: '清空', icon: 'md-iconfont icon-eraser', actionName: 'eraser' }]; function AButton(_ref) { var onActionCallback = _ref.onActionCallback, title = _ref.title, icon = _ref.icon, actionName = _ref.actionName, _ref$className = _ref.className, className = _ref$className === void 0 ? '' : _ref$className, children = _ref.children; function onAction() { onActionCallback(actionName); } return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", { title: title, className: className, onClick: onAction, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "".concat(icon) }), children] }); } /* harmony default export */ var toolbar = (function (_ref2) { var watch = _ref2.watch, showNullButton = _ref2.showNullButton, showNullProgramButton = _ref2.showNullProgramButton, onActionCallback = _ref2.onActionCallback, fullScreen = _ref2.fullScreen, insertTemp = _ref2.insertTemp, hidetoolBar = _ref2.hidetoolBar, extraUse = _ref2.extraUse; var icons = [].concat(DEFAULTICONS, [{ title: "".concat(watch ? '关闭实时预览' : '开启实时预览'), icon: "".concat(watch ? 'md-iconfont icon-eye-slash' : 'md-iconfont icon-eye'), actionName: 'trigger-watch' }]); return /*#__PURE__*/(0,jsx_runtime.jsxs)("ul", { className: "markdown-toolbar-container", children: [!hidetoolBar && icons.map(function (item, index) { return /*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: item.actionName ? /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, objectSpread2_default()(objectSpread2_default()({}, item), {}, { onActionCallback: onActionCallback })) : /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "v-line" }) }, index); }), showNullButton ? /*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, { icon: "md-iconfont icon-edit insert-blank", className: "btn-null", title: "\u589E\u52A0\u586B\u7A7A", actionName: "add-null-ch", onActionCallback: onActionCallback, children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "fill-tip", children: "\u70B9\u51FB\u63D2\u5165\b\u586B\u7A7A\u9879" }) }) }) : null, showNullProgramButton ? /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [/*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, { icon: "md-iconfont icon-edit insert-blank", className: "btn-null", title: "\u589E\u52A0\u586B\u7A7A", actionName: "add-signal", onActionCallback: onActionCallback, children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "fill-tip", children: "\u6DFB\u52A0\u5355\u884C\u586B\u7A7A\u9879" }) }) }), /*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, { icon: "md-iconfont icon-uniE900 insert-blank", className: "btn-null", title: "\u589E\u52A0\u586B\u7A7A", actionName: "add-multiple", onActionCallback: onActionCallback, children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "fill-tip", children: "\u6DFB\u52A0\u591A\u884C\u586B\u7A7A\u9879" }) }) })] }) : null, insertTemp && /*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, { icon: "md-iconfont icon-edit", className: "btn-null", title: "\u63D2\u5165\u6A21\u677F", actionName: "inster-template-".concat(insertTemp), onActionCallback: onActionCallback, children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "fill-tip", children: "\u63D2\u5165\u6A21\u677F" }) }) }), extraUse && /*#__PURE__*/(0,jsx_runtime.jsx)("li", { children: extraUse }), /*#__PURE__*/(0,jsx_runtime.jsx)("li", { className: "btn-full-screen", children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, { icon: "".concat(fullScreen ? 'md-iconfont icon-shrink' : 'md-iconfont icon-enlarge'), title: fullScreen ? '关闭全屏' : '开启全屏', actionName: "trigger-full-screen", onActionCallback: onActionCallback }) })] }); }); // EXTERNAL MODULE: ./src/components/modal.tsx var modal = __webpack_require__(88618); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/form/index.js + 19 modules var es_form = __webpack_require__(78241); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input/index.js + 5 modules var input = __webpack_require__(60231); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js var es_button = __webpack_require__(3113); ;// CONCATENATED MODULE: ./src/components/markdown-editor/link/index.tsx var formItemLayout = { labelCol: { span: 4 }, wrapperCol: { span: 20 } }; /* harmony default export */ var markdown_editor_link = (function (_ref) { var callback = _ref.callback, onCancel = _ref.onCancel; function onSubmit(values) { callback(values); } return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, formItemLayout), {}, { initialValues: { link: 'http://', title: '' }, className: "link-panel", onFinish: onSubmit, style: { width: 500 }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { label: "\u94FE\u63A5\u5730\u5740", name: "link", rules: [{ required: true, message: '请输入链接地址' }], children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {}) }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { label: "\u94FE\u63A5\u6807\u9898", name: "title", rules: [{ required: true, message: '请输入链接标题' }], children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {}) }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "flex-container flex-end", children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { type: "primary", htmlType: "submit", style: { marginRight: 10 }, children: "\u786E\u5B9A" }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { type: "ghost", onClick: onCancel, children: "\u53D6\u6D88" })] })] })); }); // EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx var code_block = __webpack_require__(75162); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules var message = __webpack_require__(8591); ;// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.less // extracted by mini-css-extract-plugin // EXTERNAL MODULE: ./src/pages/tasks/util.js var util = __webpack_require__(71376); ;// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.tsx var useForm = es_form/* default */.Z.useForm; var style = { width: 280, marginRight: 10 }; var upload_image_formItemLayout = { labelCol: { span: 5 }, wrapperCol: { span: 19 } }; /* harmony default export */ var upload_image = (function (_ref) { var callback = _ref.callback, onCancel = _ref.onCancel; var _useForm = useForm(), _useForm2 = slicedToArray_default()(_useForm, 1), form = _useForm2[0]; var currentFile = (0,_react_17_0_2_react.useRef)(); function onSubmit(values) { callback(values, currentFile.current); } function onAddUrl(data, file) { if (data.status === -1) { message/* default */.ZP.error(data.message); return; } form.setFieldsValue({ src: "/api/attachments/".concat(data.id), type: file.type }); } function onFileChange(e) { var file = e.target.files[0]; currentFile.current = file; uploadImage(file, onAddUrl); } return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, objectSpread2_default()(objectSpread2_default()({ form: form }, upload_image_formItemLayout), {}, { className: "upload-image-panel", onFinish: onSubmit, style: { width: 470, overflow: "hidden" }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { label: "\u56FE\u7247\u5730\u5740", required: true, children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "flex-container", children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { noStyle: true, name: "src", rules: [{ required: true, message: '请输入图片地址' }], children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, { style: style }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(UploadButton, { onFileChange: onFileChange })] }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { label: "\u56FE\u7247\u63CF\u8FF0", name: "alt" // rules={[{ required: true, message: '请输入图片描述' }]} , children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, { style: { width: 264 } }) }), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z.Item, { style: { textAlign: "right" }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { type: "primary", htmlType: "submit", style: { marginRight: 10 }, children: "\u786E\u5B9A" }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { type: "default", onClick: onCancel, children: "\u53D6\u6D88" })] })] })); }); function UploadButton(_ref2) { var onFileChange = _ref2.onFileChange; return /*#__PURE__*/(0,jsx_runtime.jsxs)("label", { className: "upload-button", style: { cursor: "pointer" }, children: ["\u672C\u5730\u4E0A\u4F20", /*#__PURE__*/(0,jsx_runtime.jsx)("input", { type: "file", onChange: onFileChange })] }); } function uploadImage(file, callback) { if (!file) { throw new String('没有文件'); return; } var formData = new FormData(); formData.append('editormd-image-file', file); formData.append('file_param_name', 'editormd-image-file'); formData.append('byxhr', 'true'); var xhr = new window.XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener('load', function (response) { callback(JSON.parse(response.target.responseText), file); }, false); xhr.addEventListener('error', function (error) { console.error(error); }, false); xhr.open('POST', "".concat(util/* apiPref */.KI, "/api/attachments.json")); xhr.send(formData); } // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/row/index.js var row = __webpack_require__(95237); // EXTERNAL MODULE: ./src/components/ImageDimensions/index.tsx + 1 modules var ImageDimensions = __webpack_require__(1737); ;// CONCATENATED MODULE: ./src/components/markdown-editor/draw-image/index.tsx /* harmony default export */ var draw_image = (function (_ref) { var callback = _ref.callback, onCancel = _ref.onCancel; var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.width = 1000; canvas.height = 800; context.fillStyle = '#ffffff'; context.fillRect(0, 0, canvas.width, canvas.height); var base64Image = canvas.toDataURL('image/png'); return /*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, { style: { height: "100vh" }, children: /*#__PURE__*/(0,jsx_runtime.jsx)(ImageDimensions/* default */.Z, { fullWidth: true, noAssociationId: true, showFullTools: true, data: { src: base64Image, visible: true, title: String(Date.now()) }, onOk: function onOk(data) { callback({ src: data.url }); }, onClose: onCancel }) }); }); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/regeneratorRuntime.js var regeneratorRuntime = __webpack_require__(7557); var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/asyncToGenerator.js var asyncToGenerator = __webpack_require__(41498); var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator); // EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.6@@babel/runtime/helpers/toConsumableArray.js var toConsumableArray = __webpack_require__(37205); var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray); // EXTERNAL MODULE: ./node_modules/_gojs3@2.3.10@gojs3/release/go-module.js var go_module = __webpack_require__(12378); ;// CONCATENATED MODULE: ./public/js/go/DrawCommandHandler.js /* * Copyright (C) 1998-2023 by Northwoods Software Corporation. All Rights Reserved. */ /* * This is an extension and not part of the main GoJS library. * Note that the API for this class may change with any version, even point releases. * If you intend to use an extension in production, you should copy the code to your own source directory. * Extensions can be found in the GoJS kit under the extensions or extensionsJSM folders. * See the Extensions intro page (https://gojs.net/latest/intro/extensions.html) for more information. */ /** * @constructor * @extends CommandHandler * @class * This CommandHandler class allows the user to position selected Parts in a diagram * relative to the first part selected, in addition to overriding the doKeyDown method * of the CommandHandler for handling the arrow keys in additional manners. *

* Typical usage: *

*   new go.Diagram("myDiagramDiv",
*     {
*       commandHandler: $(DrawCommandHandler),
*       . . .
*     }
*   )
* 
* or: *
*    myDiagram.commandHandler = new DrawCommandHandler();
* 
*/ function DrawCommandHandler() { go.CommandHandler.call(this); this._arrowKeyBehavior = "move"; this._pasteOffset = new go.Point(10, 10); this._lastPasteOffset = new go.Point(0, 0); } go.Diagram.inherit(DrawCommandHandler, go.CommandHandler); /** * This controls whether or not the user can invoke the {@link #alignLeft}, {@link #alignRight}, * {@link #alignTop}, {@link #alignBottom}, {@link #alignCenterX}, {@link #alignCenterY} commands. * @this {DrawCommandHandler} * @return {boolean} * This returns true: * if the diagram is not {@link Diagram#isReadOnly}, * if the model is not {@link Model#isReadOnly}, and * if there are at least two selected {@link Part}s. */ DrawCommandHandler.prototype.canAlignSelection = function () { var diagram = this.diagram; if (diagram === null || diagram.isReadOnly || diagram.isModelReadOnly) return false; if (diagram.selection.count < 2) return false; return true; }; /** * Aligns selected parts along the left-most edge of the left-most part. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.alignLeft = function () { var diagram = this.diagram; diagram.startTransaction("aligning left"); var minPosition = Infinity; diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link minPosition = Math.min(current.position.x, minPosition); }); diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link current.move(new go.Point(minPosition, current.position.y)); }); diagram.commitTransaction("aligning left"); }; /** * Aligns selected parts at the right-most edge of the right-most part. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.alignRight = function () { var diagram = this.diagram; diagram.startTransaction("aligning right"); var maxPosition = -Infinity; diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link var rightSideLoc = current.actualBounds.x + current.actualBounds.width; maxPosition = Math.max(rightSideLoc, maxPosition); }); diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link current.move(new go.Point(maxPosition - current.actualBounds.width, current.position.y)); }); diagram.commitTransaction("aligning right"); }; /** * Aligns selected parts at the top-most edge of the top-most part. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.alignTop = function () { var diagram = this.diagram; diagram.startTransaction("alignTop"); var minPosition = Infinity; diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link minPosition = Math.min(current.position.y, minPosition); }); diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link current.move(new go.Point(current.position.x, minPosition)); }); diagram.commitTransaction("alignTop"); }; /** * Aligns selected parts at the bottom-most edge of the bottom-most part. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.alignBottom = function () { var diagram = this.diagram; diagram.startTransaction("aligning bottom"); var maxPosition = -Infinity; diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link var bottomSideLoc = current.actualBounds.y + current.actualBounds.height; maxPosition = Math.max(bottomSideLoc, maxPosition); }); diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link current.move(new go.Point(current.actualBounds.x, maxPosition - current.actualBounds.height)); }); diagram.commitTransaction("aligning bottom"); }; /** * Aligns selected parts at the x-value of the center point of the first selected part. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.alignCenterX = function () { var diagram = this.diagram; var firstSelection = diagram.selection.first(); if (!firstSelection) return; diagram.startTransaction("aligning Center X"); var centerX = firstSelection.actualBounds.x + firstSelection.actualBounds.width / 2; diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link current.move(new go.Point(centerX - current.actualBounds.width / 2, current.actualBounds.y)); }); diagram.commitTransaction("aligning Center X"); }; /** * Aligns selected parts at the y-value of the center point of the first selected part. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.alignCenterY = function () { var diagram = this.diagram; var firstSelection = diagram.selection.first(); if (!firstSelection) return; diagram.startTransaction("aligning Center Y"); var centerY = firstSelection.actualBounds.y + firstSelection.actualBounds.height / 2; diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link current.move(new go.Point(current.actualBounds.x, centerY - current.actualBounds.height / 2)); }); diagram.commitTransaction("aligning Center Y"); }; /** * Aligns selected parts top-to-bottom in order of the order selected. * Distance between parts can be specified. Default distance is 0. * @this {DrawCommandHandler} * @param {number} distance */ DrawCommandHandler.prototype.alignColumn = function (distance) { var diagram = this.diagram; diagram.startTransaction("align Column"); if (distance === undefined) distance = 0; // for aligning edge to edge distance = parseFloat(distance); var selectedParts = new Array(); diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link selectedParts.push(current); }); for (var i = 0; i < selectedParts.length - 1; i++) { var current = selectedParts[i]; // adds distance specified between parts var curBottomSideLoc = current.actualBounds.y + current.actualBounds.height + distance; var next = selectedParts[i + 1]; next.move(new go.Point(current.actualBounds.x, curBottomSideLoc)); } diagram.commitTransaction("align Column"); }; /** * Aligns selected parts left-to-right in order of the order selected. * Distance between parts can be specified. Default distance is 0. * @this {DrawCommandHandler} * @param {number} distance */ DrawCommandHandler.prototype.alignRow = function (distance) { if (distance === undefined) distance = 0; // for aligning edge to edge distance = parseFloat(distance); var diagram = this.diagram; diagram.startTransaction("align Row"); var selectedParts = new Array(); diagram.selection.each(function (current) { if (current instanceof go.Link) return; // skips over go.Link selectedParts.push(current); }); for (var i = 0; i < selectedParts.length - 1; i++) { var current = selectedParts[i]; // adds distance specified between parts var curRightSideLoc = current.actualBounds.x + current.actualBounds.width + distance; var next = selectedParts[i + 1]; next.move(new go.Point(curRightSideLoc, current.actualBounds.y)); } diagram.commitTransaction("align Row"); }; /** * This controls whether or not the user can invoke the {@link #rotate} command. * @this {DrawCommandHandler} * @param {number=} angle the positive (clockwise) or negative (counter-clockwise) change in the rotation angle of each Part, in degrees. * @return {boolean} * This returns true: * if the diagram is not {@link Diagram#isReadOnly}, * if the model is not {@link Model#isReadOnly}, and * if there is at least one selected {@link Part}. */ DrawCommandHandler.prototype.canRotate = function (number) { var diagram = this.diagram; if (diagram === null || diagram.isReadOnly || diagram.isModelReadOnly) return false; if (diagram.selection.count < 1) return false; return true; }; /** * Change the angle of the parts connected with the given part. This is in the command handler * so it can be easily accessed for the purpose of creating commands that change the rotation of a part. * @this {DrawCommandHandler} * @param {number=} angle the positive (clockwise) or negative (counter-clockwise) change in the rotation angle of each Part, in degrees. */ DrawCommandHandler.prototype.rotate = function (angle) { if (angle === undefined) angle = 90; var diagram = this.diagram; diagram.startTransaction("rotate " + angle.toString()); var diagram = this.diagram; diagram.selection.each(function (current) { if (current instanceof go.Link || current instanceof go.Group) return; // skips over Links and Groups current.angle += angle; }); diagram.commitTransaction("rotate " + angle.toString()); }; /** * Change the z-ordering of selected parts to pull them forward, in front of all other parts * in their respective layers. * All unselected parts in each layer with a selected Part with a non-numeric {@link Part#zOrder} will get a zOrder of zero. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.pullToFront = function () { var diagram = this.diagram; diagram.startTransaction("pullToFront"); // find the affected Layers var layers = new go.Map(); diagram.selection.each(function (part) { layers.set(part.layer, 0); }); // find the maximum zOrder in each Layer layers.iteratorKeys.each(function (layer) { var max = 0; layer.parts.each(function (part) { if (part.isSelected) return; var z = part.zOrder; if (isNaN(z)) { part.zOrder = 0; } else { max = Math.max(max, z); } }); layers.set(layer, max); }); // assign each selected Part.zOrder to the computed value for each Layer diagram.selection.each(function (part) { DrawCommandHandler._assignZOrder(part, layers.get(part.layer) + 1); }); diagram.commitTransaction("pullToFront"); }; /** * Change the z-ordering of selected parts to push them backward, behind of all other parts * in their respective layers. * All unselected parts in each layer with a selected Part with a non-numeric {@link Part#zOrder} will get a zOrder of zero. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype.pushToBack = function () { var diagram = this.diagram; diagram.startTransaction("pushToBack"); // find the affected Layers var layers = new go.Map(); diagram.selection.each(function (part) { layers.set(part.layer, 0); }); // find the minimum zOrder in each Layer layers.iteratorKeys.each(function (layer) { var min = 0; layer.parts.each(function (part) { if (part.isSelected) return; var z = part.zOrder; if (isNaN(z)) { part.zOrder = 0; } else { min = Math.min(min, z); } }); layers.set(layer, min); }); // assign each selected Part.zOrder to the computed value for each Layer diagram.selection.each(function (part) { DrawCommandHandler._assignZOrder(part, // make sure a group's nested nodes are also behind everything else layers.get(part.layer) - 1 - DrawCommandHandler._findGroupDepth(part)); }); diagram.commitTransaction("pushToBack"); }; DrawCommandHandler._assignZOrder = function (part, z, root) { if (root === undefined) root = part; if (part.layer === root.layer) part.zOrder = z; if (part instanceof go.Group) { part.memberParts.each(function (m) { DrawCommandHandler._assignZOrder(m, z + 1, root); }); } }; DrawCommandHandler._findGroupDepth = function (part) { if (part instanceof go.Group) { var d = 0; part.memberParts.each(function (m) { d = Math.max(d, DrawCommandHandler._findGroupDepth(m)); }); return d + 1; } else { return 0; } }; /** * This implements custom behaviors for arrow key keyboard events. * Set {@link #arrowKeyBehavior} to "select", "move" (the default), "scroll" (the standard behavior), or "none" * to affect the behavior when the user types an arrow key. * @this {DrawCommandHandler}*/ DrawCommandHandler.prototype.doKeyDown = function () { var diagram = this.diagram; if (diagram === null) return; var e = diagram.lastInput; // determines the function of the arrow keys if (e.key === "Up" || e.key === "Down" || e.key === "Left" || e.key === "Right") { var behavior = this.arrowKeyBehavior; if (behavior === "none") { // no-op return; } else if (behavior === "select") { this._arrowKeySelect(); return; } else if (behavior === "move") { this._arrowKeyMove(); return; } else if (behavior === "tree") { this._arrowKeyTree(); return; } // otherwise drop through to get the default scrolling behavior } // otherwise still does all standard commands go.CommandHandler.prototype.doKeyDown.call(this); }; /** * Collects in an Array all of the non-Link Parts currently in the Diagram. * @this {DrawCommandHandler} * @return {Array} */ DrawCommandHandler.prototype._getAllParts = function () { var allParts = new Array(); this.diagram.nodes.each(function (node) { allParts.push(node); }); this.diagram.parts.each(function (part) { allParts.push(part); }); // note that this ignores Links return allParts; }; /** * To be called when arrow keys should move the Diagram.selection. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype._arrowKeyMove = function () { var diagram = this.diagram; var e = diagram.lastInput; // moves all selected parts in the specified direction var vdistance = 0; var hdistance = 0; // if control is being held down, move pixel by pixel. Else, moves by grid cell size if (e.control || e.meta) { vdistance = 1; hdistance = 1; } else if (diagram.grid !== null) { var cellsize = diagram.grid.gridCellSize; hdistance = cellsize.width; vdistance = cellsize.height; } diagram.startTransaction("arrowKeyMove"); diagram.selection.each(function (part) { if (e.key === "Up") { part.move(new go.Point(part.actualBounds.x, part.actualBounds.y - vdistance)); } else if (e.key === "Down") { part.move(new go.Point(part.actualBounds.x, part.actualBounds.y + vdistance)); } else if (e.key === "Left") { part.move(new go.Point(part.actualBounds.x - hdistance, part.actualBounds.y)); } else if (e.key === "Right") { part.move(new go.Point(part.actualBounds.x + hdistance, part.actualBounds.y)); } }); diagram.commitTransaction("arrowKeyMove"); }; /** * To be called when arrow keys should change selection. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype._arrowKeySelect = function () { var diagram = this.diagram; var e = diagram.lastInput; // with a part selected, arrow keys change the selection // arrow keys + shift selects the additional part in the specified direction // arrow keys + control toggles the selection of the additional part var nextPart = null; if (e.key === "Up") { nextPart = this._findNearestPartTowards(270); } else if (e.key === "Down") { nextPart = this._findNearestPartTowards(90); } else if (e.key === "Left") { nextPart = this._findNearestPartTowards(180); } else if (e.key === "Right") { nextPart = this._findNearestPartTowards(0); } if (nextPart !== null) { if (e.shift) { nextPart.isSelected = true; } else if (e.control || e.meta) { nextPart.isSelected = !nextPart.isSelected; } else { diagram.select(nextPart); } } }; /** * Finds the nearest selectable Part in the specified direction, based on their center points. * if it doesn't find anything, it just returns the current Part. * @this {DrawCommandHandler} * @param {number} dir the direction, in degrees * @return {Part} the closest Part found in the given direction */ DrawCommandHandler.prototype._findNearestPartTowards = function (dir) { var originalPart = this.diagram.selection.first(); if (originalPart === null) return null; var originalPoint = originalPart.actualBounds.center; var allParts = this._getAllParts(); var closestDistance = Infinity; var closest = originalPart; // if no parts meet the criteria, the same part remains selected for (var i = 0; i < allParts.length; i++) { var nextPart = allParts[i]; if (nextPart === originalPart) continue; // skips over currently selected part if (!nextPart.canSelect()) continue; var nextPoint = nextPart.actualBounds.center; var angle = originalPoint.directionPoint(nextPoint); var anglediff = this._angleCloseness(angle, dir); if (anglediff <= 45) { // if this part's center is within the desired direction's sector, var distance = originalPoint.distanceSquaredPoint(nextPoint); distance *= 1 + Math.sin(anglediff * Math.PI / 180); // the more different from the intended angle, the further it is if (distance < closestDistance) { // and if it's closer than any other part, closestDistance = distance; // remember it as a better choice closest = nextPart; } } } return closest; }; /** * @this {DrawCommandHandler} * @param {number} a * @param {number} dir * @return {number} */ DrawCommandHandler.prototype._angleCloseness = function (a, dir) { return Math.min(Math.abs(dir - a), Math.min(Math.abs(dir + 360 - a), Math.abs(dir - 360 - a))); }; /** * To be called when arrow keys should change the selected node in a tree and expand or collapse subtrees. * @this {DrawCommandHandler} */ DrawCommandHandler.prototype._arrowKeyTree = function () { var diagram = this.diagram; var selected = diagram.selection.first(); if (!(selected instanceof go.Node)) return; var e = diagram.lastInput; if (e.key === "Right") { if (selected.isTreeLeaf) { // no-op } else if (!selected.isTreeExpanded) { if (diagram.commandHandler.canExpandTree(selected)) { diagram.commandHandler.expandTree(selected); // expands the tree } } else { // already expanded -- select the first child node var first = this._sortTreeChildrenByY(selected).first(); if (first !== null) diagram.select(first); } } else if (e.key === "Left") { if (!selected.isTreeLeaf && selected.isTreeExpanded) { if (diagram.commandHandler.canCollapseTree(selected)) { diagram.commandHandler.collapseTree(selected); // collapses the tree } } else { // either a leaf or is already collapsed -- select the parent node var parent = selected.findTreeParentNode(); if (parent !== null) diagram.select(parent); } } else if (e.key === "Up") { var parent = selected.findTreeParentNode(); if (parent !== null) { var list = this._sortTreeChildrenByY(parent); var idx = list.indexOf(selected); if (idx > 0) { // if there is a previous sibling var prev = list.elt(idx - 1); // keep looking at the last child until it's a leaf or collapsed while (prev !== null && prev.isTreeExpanded && !prev.isTreeLeaf) { var children = this._sortTreeChildrenByY(prev); prev = children.last(); } if (prev !== null) diagram.select(prev); } else { // no previous sibling -- select parent diagram.select(parent); } } } else if (e.key === "Down") { // if at an expanded parent, select the first child if (selected.isTreeExpanded && !selected.isTreeLeaf) { var first = this._sortTreeChildrenByY(selected).first(); if (first !== null) diagram.select(first); } else { while (selected !== null) { var parent = selected.findTreeParentNode(); if (parent === null) break; var list = this._sortTreeChildrenByY(parent); var idx = list.indexOf(selected); if (idx < list.length - 1) { // select next lower node diagram.select(list.elt(idx + 1)); break; } else { // already at bottom of list of children selected = parent; } } } } // make sure the selection is now in the viewport, but not necessarily centered var sel = diagram.selection.first(); if (sel !== null) diagram.scrollToRect(sel.actualBounds); }; DrawCommandHandler.prototype._sortTreeChildrenByY = function (node) { var list = new go.List().addAll(node.findTreeChildrenNodes()); list.sort(function (a, b) { var aloc = a.location; var bloc = b.location; if (aloc.y < bloc.y) return -1; if (aloc.y > bloc.y) return 1; if (aloc.x < bloc.x) return -1; if (aloc.x > bloc.x) return 1; return 0; }); return list; }; /** * Reset the last offset for pasting. * @this {DrawCommandHandler} * @param {Iterable.} coll a collection of {@link Part}s. */ DrawCommandHandler.prototype.copyToClipboard = function (coll) { go.CommandHandler.prototype.copyToClipboard.call(this, coll); this._lastPasteOffset.set(this.pasteOffset); }; /** * Paste from the clipboard with an offset incremented on each paste, and reset when copied. * @this {DrawCommandHandler} * @return {Set.} a collection of newly pasted {@link Part}s */ DrawCommandHandler.prototype.pasteFromClipboard = function () { var coll = go.CommandHandler.prototype.pasteFromClipboard.call(this); this.diagram.moveParts(coll, this._lastPasteOffset); this._lastPasteOffset.add(this.pasteOffset); return coll; }; /** * Gets or sets the arrow key behavior. Possible values are "move", "select", "scroll", and "tree". * The default value is "move". * @name DrawCommandHandler#arrowKeyBehavior * @return {string} */ Object.defineProperty(DrawCommandHandler.prototype, "arrowKeyBehavior", { get: function get() { return this._arrowKeyBehavior; }, set: function set(val) { if (val !== "move" && val !== "select" && val !== "scroll" && val !== "tree" && val !== "none") { throw new Error("DrawCommandHandler.arrowKeyBehavior must be either \"move\", \"select\", \"scroll\", \"tree\", or \"none\", not: " + val); } this._arrowKeyBehavior = val; } }); /** * Gets or sets the offset at which each repeated pasteSelection() puts the new copied parts from the clipboard. * The default value is (10,10). * @name DrawCommandHandler#pasteOffset * @return {Point} */ Object.defineProperty(DrawCommandHandler.prototype, "pasteOffset", { get: function get() { return this._pasteOffset; }, set: function set(val) { if (!(val instanceof go.Point)) throw new Error("DrawCommandHandler.pasteOffset must be a Point, not: " + val); this._pasteOffset.set(val); } }); /* harmony default export */ var go_DrawCommandHandler = (DrawCommandHandler); // EXTERNAL MODULE: ./public/js/go/Figures.js var Figures = __webpack_require__(77409); // EXTERNAL MODULE: ./node_modules/_gojs-react@1.1.2@gojs-react/lib/esm/gojsreact.js + 1 modules var gojsreact = __webpack_require__(85160); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules var es_modal = __webpack_require__(84228); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/col/index.js var col = __webpack_require__(43604); // EXTERNAL MODULE: ./src/utils/fetch.ts var fetch = __webpack_require__(41686); ;// CONCATENATED MODULE: ./src/components/markdown-editor/flow-chart/index.less?modules // extracted by mini-css-extract-plugin /* harmony default export */ var flow_chartmodules = ({"myPaletteDiv":"myPaletteDiv___Xjz2I","maxH60":"maxH60___Pd4Re"}); ;// CONCATENATED MODULE: ./src/components/markdown-editor/flow-chart/index.tsx window.go = go_module; function FlowChart(_ref) { var onCancel = _ref.onCancel, callback = _ref.callback; var myDiagram = (0,_react_17_0_2_react.useRef)(); var myDiagramDivRef = (0,_react_17_0_2_react.useRef)(); var myPaletteDivRef = (0,_react_17_0_2_react.useRef)(); var hidedenContentRef = (0,_react_17_0_2_react.useRef)(false); var modalRef = (0,_react_17_0_2_react.useRef)(false); var _useState = (0,_react_17_0_2_react.useState)(0), _useState2 = slicedToArray_default()(_useState, 2), updateModal = _useState2[0], setUpdateModal = _useState2[1]; function initDiagram() { var $ = go_module.GraphObject.make; var colors = { red: "#ff3333", blue: "#3358ff", green: "#25ad23", magenta: "#d533ff", purple: "#7d33ff", orange: "#ff6233", brown: "#8e571e", white: "#ffffff", black: "#000000", beige: "#fffcd5", extralightblue: "#d5ebff", extralightred: "#f2dfe0", lightblue: "#a5d2fa", lightgray: "#cccccc", lightgreen: "#b3e6b3", lightred: "#fcbbbd" }; myDiagram.current = new go_module.Diagram(myDiagramDivRef.current, { padding: 20, // extra space when scrolled all the way grid: $(go_module.Panel, "Grid", // a simple 10x10 grid $(go_module.Shape, "LineH", { stroke: "lightgray", strokeWidth: 0.5 }), $(go_module.Shape, "LineV", { stroke: "lightgray", strokeWidth: 0.5 })), "draggingTool.isGridSnapEnabled": true, handlesDragDropForTopLevelParts: true, mouseDrop: function mouseDrop(e) { var ok = e.diagram.commandHandler.addTopLevelParts(e.diagram.selection, true); if (!ok) e.diagram.currentTool.doCancel(); }, commandHandler: $(go_DrawCommandHandler), // support offset copy-and-paste "clickCreatingTool.archetypeNodeData": { text: "未命名", fill: null, stroke: null, borderColor: "rgba(0,0,0,0)" }, // create a new node by double-clicking in background "PartCreated": function PartCreated(e) { var node = e.subject; // the newly inserted Node -- now need to snap its location to the grid node.location = node.location.copy().snapToGridPoint(e.diagram.grid.gridOrigin, e.diagram.grid.gridCellSize); setTimeout(function () { // and have the user start editing its text e.diagram.commandHandler.editTextBlock(); }, 20); }, "commandHandler.archetypeGroupData": { isGroup: true, text: "NEW GROUP" }, "SelectionGrouped": function SelectionGrouped(e) { var group = e.subject; setTimeout(function () { // and have the user start editing its text e.diagram.commandHandler.editTextBlock(); }); }, "LinkRelinked": function LinkRelinked(e) { // re-spread the connections of other links connected with both old and new nodes var oldnode = e.parameter.part; oldnode.invalidateConnectedLinks(); var link = e.subject; if (e.diagram.toolManager.linkingTool.isForwards) { link.toNode.invalidateConnectedLinks(); } else { link.fromNode.invalidateConnectedLinks(); } }, "undoManager.isEnabled": true }); // Node template myDiagram.current.nodeTemplate = $(go_module.Node, "Auto", { locationSpot: go_module.Spot.Center, locationObjectName: "SHAPE", desiredSize: new go_module.Size(120, 60), minSize: new go_module.Size(40, 40), resizable: true, resizeCellSize: new go_module.Size(10, 10), rotatable: true // rotateObjectName: "SHAPE", // rotate the Shape without rotating the label }, // these Bindings are TwoWay because the DraggingTool and ResizingTool modify the target properties new go_module.Binding("location", "loc", go_module.Point.parse).makeTwoWay(go_module.Point.stringify), new go_module.Binding("desiredSize", "size", go_module.Size.parse).makeTwoWay(go_module.Size.stringify), $(go_module.Shape, { // the border name: "SHAPE", fill: colors.white, cursor: "pointer", portId: "", fromLinkable: true, toLinkable: true, fromLinkableDuplicates: true, toLinkableDuplicates: true, fromSpot: go_module.Spot.AllSides, toSpot: go_module.Spot.AllSides }, new go_module.Binding("figure"), new go_module.Binding("fill"), new go_module.Binding("stroke", "borderColor"), new go_module.Binding("strokeWidth", "thickness"), new go_module.Binding("strokeDashArray", "dash")), // this Shape prevents mouse events from reaching the middle of the port $(go_module.Shape, { width: 100, height: 20, strokeWidth: 0, fill: "transparent" }), $(go_module.TextBlock, { margin: 1, textAlign: "center", overflow: go_module.TextBlock.OverflowEllipsis, editable: true }, // this Binding is TwoWay due to the user editing the text with the TextEditingTool new go_module.Binding("text").makeTwoWay(), new go_module.Binding("stroke", "color"))); myDiagram.current.nodeTemplate.toolTip = $("ToolTip", // show some detailed information $(go_module.Panel, "Vertical", { maxSize: new go_module.Size(200, NaN) }, // limit width but not height $(go_module.TextBlock, { font: "bold 10pt sans-serif", textAlign: "center" }, new go_module.Binding("text")), $(go_module.TextBlock, { font: "10pt sans-serif", textAlign: "center" }, new go_module.Binding("text", "details")))); // Node selection adornment // Include four large triangular buttons so that the user can easily make a copy // of the node, move it to be in that direction relative to the original node, // and add a link to the new node. function makeArrowButton(spot, fig) { var maker = function maker(e, shape) { e.handled = true; e.diagram.model.commit(function (m) { var selnode = shape.part.adornedPart; // create a new node in the direction of the spot var p = new go_module.Point().setRectSpot(selnode.actualBounds, spot); p.subtract(selnode.location); p.scale(2, 2); p.x += Math.sign(p.x) * 130; p.y += Math.sign(p.y) * 130; p.add(selnode.location); p.snapToGridPoint(e.diagram.grid.gridOrigin, e.diagram.grid.gridCellSize); // make the new node a copy of the selected node var nodedata = m.copyNodeData(selnode.data); // add to same group as selected node m.setGroupKeyForNodeData(nodedata, m.getGroupKeyForNodeData(selnode.data)); m.addNodeData(nodedata); // add to model // create a link from the selected node to the new node var linkdata = { from: selnode.key, to: m.getKeyForNodeData(nodedata) }; m.addLinkData(linkdata); // add to model // move the new node to the computed location, select it, and start to edit it var newnode = e.diagram.findNodeForData(nodedata); newnode.location = p; e.diagram.select(newnode); setTimeout(function () { e.diagram.commandHandler.editTextBlock(); }, 20); }); }; return $(go_module.Shape, { figure: fig, alignment: spot, alignmentFocus: spot.opposite(), width: spot.equals(go_module.Spot.Top) || spot.equals(go_module.Spot.Bottom) ? 25 : 18, height: spot.equals(go_module.Spot.Top) || spot.equals(go_module.Spot.Bottom) ? 18 : 25, fill: "orange", stroke: colors.white, strokeWidth: 4, mouseEnter: function mouseEnter(e, shape) { return shape.fill = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.fill = "orange"; }, isActionable: true, // needed because it's in an Adornment click: maker, contextClick: maker }); } // create a button that brings up the context menu function CMButton(options) { return $(go_module.Shape, { fill: "orange", stroke: "rgba(0, 0, 0, 0)", strokeWidth: 15, background: "transparent", geometryString: "F1 M0 0 b 0 360 -4 0 4 z M10 0 b 0 360 -4 0 4 z M20 0 b 0 360 -4 0 4", // M10 0 A2 2 0 1 0 14 10 M20 0 A2 2 0 1 0 24 10, isActionable: true, cursor: "context-menu", mouseEnter: function mouseEnter(e, shape) { return shape.fill = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.fill = "orange"; }, click: function click(e, shape) { e.diagram.commandHandler.showContextMenu(shape.part.adornedPart); } }, options || {}); } myDiagram.current.nodeTemplate.selectionAdornmentTemplate = $(go_module.Adornment, "Spot", $(go_module.Placeholder, { padding: 10 }), makeArrowButton(go_module.Spot.Top, "TriangleUp"), makeArrowButton(go_module.Spot.Left, "TriangleLeft"), makeArrowButton(go_module.Spot.Right, "TriangleRight"), makeArrowButton(go_module.Spot.Bottom, "TriangleDown"), CMButton({ alignment: new go_module.Spot(0.75, 0) })); // Common context menu button definitions // All buttons in context menu work on both click and contextClick, // in case the user context-clicks on the button. // All buttons modify the node data, not the Node, so the Bindings need not be TwoWay. // A button-defining helper function that returns a click event handler. // PROPNAME is the name of the data property that should be set to the given VALUE. function ClickFunction(propname, value) { return function (e, obj) { e.handled = true; // don't let the click bubble up e.diagram.model.commit(function (m) { m.set(obj.part.adornedPart.data, propname, value); }); }; } // Create a context menu button for setting a data property with a color value. function ColorButton(color, propname) { if (!propname) propname = "color"; return $(go_module.Shape, { width: 16, height: 16, stroke: "lightgray", fill: color, margin: 1, background: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.stroke = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.stroke = "lightgray"; }, click: ClickFunction(propname, color), contextClick: ClickFunction(propname, color) }); } function LightFillButtons() { // used by multiple context menus return [$("ContextMenuButton", $(go_module.Panel, "Horizontal", ColorButton(colors.white, "fill"), ColorButton(colors.beige, "fill"), ColorButton(colors.extralightblue, "fill"), ColorButton(colors.extralightred, "fill"))), $("ContextMenuButton", $(go_module.Panel, "Horizontal", ColorButton(colors.lightgray, "fill"), ColorButton(colors.lightgreen, "fill"), ColorButton(colors.lightblue, "fill"), ColorButton(colors.lightred, "fill")))]; } function DarkColorButtons() { // used by multiple context menus return [$("ContextMenuButton", $(go_module.Panel, "Horizontal", ColorButton(colors.black), ColorButton(colors.green), ColorButton(colors.blue), ColorButton(colors.red))), $("ContextMenuButton", $(go_module.Panel, "Horizontal", ColorButton(colors.white), ColorButton(colors.magenta), ColorButton(colors.purple), ColorButton(colors.orange)))]; } // Create a context menu button for setting a data property with a stroke width value. function ThicknessButton(sw, propname) { if (!propname) propname = "thickness"; return $(go_module.Shape, "LineH", { width: 16, height: 16, strokeWidth: sw, margin: 1, background: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.background = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.background = "transparent"; }, click: ClickFunction(propname, sw), contextClick: ClickFunction(propname, sw) }); } // Create a context menu button for setting a data property with a stroke dash Array value. function DashButton(dash, propname) { if (!propname) propname = "dash"; return $(go_module.Shape, "LineH", { width: 24, height: 16, strokeWidth: 2, strokeDashArray: dash, margin: 1, background: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.background = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.background = "transparent"; }, click: ClickFunction(propname, dash), contextClick: ClickFunction(propname, dash) }); } function StrokeOptionsButtons() { // used by multiple context menus return [$("ContextMenuButton", $(go_module.Panel, "Horizontal", ThicknessButton(1), ThicknessButton(2), ThicknessButton(3), ThicknessButton(4))), $("ContextMenuButton", $(go_module.Panel, "Horizontal", DashButton(null), DashButton([2, 4]), DashButton([4, 4])))]; } // Node context menu function FigureButton(fig, propname) { if (!propname) propname = "figure"; return $(go_module.Shape, { width: 32, height: 32, scale: 0.5, fill: "lightgray", figure: fig, margin: 1, background: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.fill = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.fill = "lightgray"; }, click: ClickFunction(propname, fig), contextClick: ClickFunction(propname, fig) }); } myDiagram.current.nodeTemplate.contextMenu = $("ContextMenu", // $("ContextMenuButton", // $(go.TextBlock, 'Move Up', { // // Associate the custom command to move the node up // click: (e, obj) => { // const node = obj.part.adornedPart; // myDiagram.current.commandHandler['MoveNodeUp'].execute(myDiagram.current); // } // }) // ), // $("ContextMenuButton", // $(go.TextBlock, 'Move Up', { // // Associate the custom command to move the node up // click: (e, obj) => { // const node = obj.part.adornedPart; // myDiagram.current.commandHandler['moveNodeUpCommand'].execute(myDiagram.current); // } // }) // ), $("ContextMenuButton", $(go_module.Panel, "Horizontal", FigureButton("Rectangle"), FigureButton("RoundedRectangle"), FigureButton("Ellipse"), FigureButton("Diamond"))), $("ContextMenuButton", $(go_module.Panel, "Horizontal", FigureButton("Parallelogram2"), FigureButton("ManualOperation"), FigureButton("Procedure"), FigureButton("Cylinder1"))), $("ContextMenuButton", $(go_module.Panel, "Horizontal", FigureButton("Terminator"), FigureButton("CreateRequest"), FigureButton("Document"), FigureButton("TriangleDown"))), LightFillButtons(), DarkColorButtons(), StrokeOptionsButtons()); // Group template myDiagram.current.groupTemplate = $(go_module.Group, "Spot", { layerName: "Background", ungroupable: true, locationSpot: go_module.Spot.Center, selectionObjectName: "BODY", computesBoundsAfterDrag: true, // allow dragging out of a Group that uses a Placeholder handlesDragDropForMembers: true, // don't need to define handlers on Nodes and Links mouseDrop: function mouseDrop(e, grp) { // add dropped nodes as members of the group var ok = grp.addMembers(grp.diagram.selection, true); if (!ok) grp.diagram.currentTool.doCancel(); }, avoidable: false }, new go_module.Binding("location", "loc", go_module.Point.parse).makeTwoWay(go_module.Point.stringify), $(go_module.Panel, "Auto", { name: "BODY" }, $(go_module.Shape, { parameter1: 10, fill: colors.white, strokeWidth: 2, cursor: "pointer", fromLinkable: true, toLinkable: true, fromLinkableDuplicates: true, toLinkableDuplicates: true, fromSpot: go_module.Spot.AllSides, toSpot: go_module.Spot.AllSides }, new go_module.Binding("fill"), new go_module.Binding("stroke", "color"), new go_module.Binding("strokeWidth", "thickness"), new go_module.Binding("strokeDashArray", "dash")), $(go_module.Placeholder, { background: "transparent", margin: 20 })), $(go_module.TextBlock, { alignment: go_module.Spot.Top, alignmentFocus: go_module.Spot.Bottom, font: "bold 12pt sans-serif", editable: true }, new go_module.Binding("text"), new go_module.Binding("stroke", "color"))); myDiagram.current.groupTemplate.selectionAdornmentTemplate = $(go_module.Adornment, "Spot", $(go_module.Panel, "Auto", $(go_module.Shape, { fill: null, stroke: "dodgerblue", strokeWidth: 3 }), $(go_module.Placeholder, { margin: 1.5 })), CMButton({ alignment: go_module.Spot.TopRight, alignmentFocus: go_module.Spot.BottomRight })); // 右键 myDiagram.current.groupTemplate.contextMenu = $("ContextMenu", LightFillButtons(), DarkColorButtons(), StrokeOptionsButtons()); // Link template myDiagram.current.linkTemplate = $(go_module.Link, { layerName: "Foreground", routing: go_module.Link.AvoidsNodes, corner: 10, fromShortLength: 10, toShortLength: 15, // assume arrowhead at "to" end, need to avoid bad appearance when path is thick relinkableFrom: true, relinkableTo: true, reshapable: true, resegmentable: true }, new go_module.Binding("fromSpot", "fromSpot", go_module.Spot.parse), new go_module.Binding("toSpot", "toSpot", go_module.Spot.parse), new go_module.Binding("fromShortLength", "dir", function (dir) { return dir >= 1 ? 10 : 0; }), new go_module.Binding("toShortLength", "dir", function (dir) { return dir >= 1 ? 10 : 0; }), new go_module.Binding("points").makeTwoWay(), // TwoWay due to user reshaping with LinkReshapingTool $(go_module.Shape, { strokeWidth: 2 }, new go_module.Binding("stroke", "color"), new go_module.Binding("strokeWidth", "thickness"), new go_module.Binding("strokeDashArray", "dash")), $(go_module.Shape, // custom arrowheads to create the lifted effect { segmentIndex: 0, segmentOffset: new go_module.Point(15, 0), segmentOrientation: go_module.Link.OrientAlong, alignmentFocus: go_module.Spot.Right, figure: "circle", width: 10, strokeWidth: 0 }, new go_module.Binding("fill", "color"), new go_module.Binding("visible", "dir", function (dir) { return dir === 1; })), $(go_module.Shape, { segmentIndex: -1, segmentOffset: new go_module.Point(-10, 6), segmentOrientation: go_module.Link.OrientPlus90, alignmentFocus: go_module.Spot.Right, figure: "triangle", width: 12, height: 12, strokeWidth: 0 }, new go_module.Binding("fill", "color"), new go_module.Binding("visible", "dir", function (dir) { return dir >= 1; }), new go_module.Binding("width", "thickness", function (t) { return 7 + 3 * t; }), // custom arrowhead must scale with the size of the while new go_module.Binding("height", "thickness", function (t) { return 7 + 3 * t; }), // while remaining centered on line new go_module.Binding("segmentOffset", "thickness", function (t) { return new go_module.Point(-15, 4 + 1.5 * t); })), $(go_module.Shape, { segmentIndex: 0, segmentOffset: new go_module.Point(15, -6), segmentOrientation: go_module.Link.OrientMinus90, alignmentFocus: go_module.Spot.Right, figure: "triangle", width: 12, height: 12, strokeWidth: 0 }, new go_module.Binding("fill", "color"), new go_module.Binding("visible", "dir", function (dir) { return dir === 2; }), new go_module.Binding("width", "thickness", function (t) { return 7 + 3 * t; }), new go_module.Binding("height", "thickness", function (t) { return 7 + 3 * t; }), new go_module.Binding("segmentOffset", "thickness", function (t) { return new go_module.Point(-15, 4 + 1.5 * t); })), $(go_module.TextBlock, { alignmentFocus: new go_module.Spot(0, 1, -4, 0), editable: true }, new go_module.Binding("text").makeTwoWay(), // TwoWay due to user editing with TextEditingTool new go_module.Binding("stroke", "color"))); myDiagram.current.linkTemplate.selectionAdornmentTemplate = $(go_module.Adornment, // use a special selection Adornment that does not obscure the link path itself $(go_module.Shape, { // this uses a pathPattern with a gap in it, in order to avoid drawing on top of the link path Shape isPanelMain: true, stroke: "transparent", strokeWidth: 6, pathPattern: makeAdornmentPathPattern(2) // == thickness or strokeWidth }, new go_module.Binding("pathPattern", "thickness", makeAdornmentPathPattern)), CMButton({ alignmentFocus: new go_module.Spot(0, 0, -6, -4) })); function makeAdornmentPathPattern(w) { return $(go_module.Shape, { stroke: "dodgerblue", strokeWidth: 2, strokeCap: "square", geometryString: "M0 0 M4 2 H3 M4 " + (w + 4).toString() + " H3" }); } // Link context menu // All buttons in context menu work on both click and contextClick, // in case the user context-clicks on the button. // All buttons modify the link data, not the Link, so the Bindings need not be TwoWay. function ArrowButton(num) { var geo = "M0 0 M8 16 M0 8 L16 8 M12 11 L16 8 L12 5"; if (num === 0) { geo = "M0 0 M16 16 M0 8 L16 8"; } else if (num === 2) { geo = "M0 0 M16 16 M0 8 L16 8 M12 11 L16 8 L12 5 M4 11 L0 8 L4 5"; } return $(go_module.Shape, { geometryString: geo, margin: 2, background: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.background = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.background = "transparent"; }, click: ClickFunction("dir", num), contextClick: ClickFunction("dir", num) }); } function AllSidesButton(to) { var setter = function setter(e, shape) { e.handled = true; e.diagram.model.commit(function (m) { var link = shape.part.adornedPart; m.set(link.data, to ? "toSpot" : "fromSpot", go_module.Spot.stringify(go_module.Spot.AllSides)); // re-spread the connections of other links connected with the node (to ? link.toNode : link.fromNode).invalidateConnectedLinks(); }); }; return $(go_module.Shape, { width: 12, height: 12, fill: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.background = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.background = "transparent"; }, click: setter, contextClick: setter }); } function SpotButton(spot, to) { var ang = 0; var side = go_module.Spot.RightSide; if (spot.equals(go_module.Spot.Top)) { ang = 270; side = go_module.Spot.TopSide; } else if (spot.equals(go_module.Spot.Left)) { ang = 180; side = go_module.Spot.LeftSide; } else if (spot.equals(go_module.Spot.Bottom)) { ang = 90; side = go_module.Spot.BottomSide; } if (!to) ang -= 180; var setter = function setter(e, shape) { e.handled = true; e.diagram.model.commit(function (m) { var link = shape.part.adornedPart; m.set(link.data, to ? "toSpot" : "fromSpot", go_module.Spot.stringify(side)); // re-spread the connections of other links connected with the node (to ? link.toNode : link.fromNode).invalidateConnectedLinks(); }); }; return $(go_module.Shape, { alignment: spot, alignmentFocus: spot.opposite(), geometryString: "M0 0 M12 12 M12 6 L1 6 L4 4 M1 6 L4 8", angle: ang, background: "transparent", mouseEnter: function mouseEnter(e, shape) { return shape.background = "dodgerblue"; }, mouseLeave: function mouseLeave(e, shape) { return shape.background = "transparent"; }, click: setter, contextClick: setter }); } myDiagram.current.linkTemplate.contextMenu = $("ContextMenu", DarkColorButtons(), StrokeOptionsButtons(), $("ContextMenuButton", $(go_module.Panel, "Horizontal", ArrowButton(0), ArrowButton(1), ArrowButton(2))), $("ContextMenuButton", $(go_module.Panel, "Horizontal", $(go_module.Panel, "Spot", AllSidesButton(false), SpotButton(go_module.Spot.Top, false), SpotButton(go_module.Spot.Left, false), SpotButton(go_module.Spot.Right, false), SpotButton(go_module.Spot.Bottom, false)), $(go_module.Panel, "Spot", { margin: new go_module.Margin(0, 0, 0, 2) }, AllSidesButton(true), SpotButton(go_module.Spot.Top, true), SpotButton(go_module.Spot.Left, true), SpotButton(go_module.Spot.Right, true), SpotButton(go_module.Spot.Bottom, true))))); var initData = "{ \"class\": \"GraphLinksModel\",\n \"nodeDataArray\": [\n{\"text\":\"Find Problem\",\"key\":-9,\"loc\":\"-20 -140\",\"color\":\"#3358ff\",\"fill\":\"white\",\"figure\":\"Procedure\",\"thickness\":3},\n{\"text\":\"What do we want?\",\"key\":-10,\"loc\":\"-65 -324.305\",\"group\":-16,\"figure\":\"Ellipse\",\"fill\":\"white\"},\n{\"text\":\"What do our users want?\",\"key\":-11,\"loc\":\"105 -334.305\",\"group\":-20,\"figure\":\"Ellipse\",\"fill\":\"#ffffff\",\"color\":\"black\"},\n{\"text\":\"Meetings\",\"key\":-12,\"loc\":\"-65 -444.305\",\"group\":-16,\"figure\":\"TriangleDown\",\"fill\":\"#ffffff\"},\n{\"text\":\"Reviews\",\"key\":-13,\"loc\":\"105 -454.305\",\"group\":-20,\"figure\":\"TriangleDown\",\"fill\":\"#ffffff\",\"color\":\"black\"},\n{\"text\":\"Can we solve it?\",\"key\":-14,\"loc\":\"190 -140\",\"color\":\"#7d33ff\",\"fill\":\"#ffffff\",\"figure\":\"Diamond\",\"size\":\"140 80\",\"thickness\":3},\n{\"isGroup\":true,\"text\":\"Internal\",\"key\":-16,\"loc\":\"-65 -384.305\",\"fill\":\"#d5ebff\",\"dash\":null,\"thickness\":1,\"group\":-22},\n{\"isGroup\":true,\"text\":\"External\",\"key\":-20,\"loc\":\"105 -394.305\",\"fill\":\"#d5ebff\",\"dash\":null,\"thickness\":1,\"group\":-22},\n{\"isGroup\":true,\"text\":\"Sources\",\"key\":-22,\"loc\":\"20 -400\",\"fill\":\"#a5d2fa\",\"dash\":[4,4],\"color\":\"#3358ff\"}\n],\n \"linkDataArray\": [\n{\"from\":-12,\"to\":-10,\"points\":[-65,-414.305,-65,-404.305,-65,-384.305,-65,-384.305,-65,-364.305,-65,-354.305],\"dash\":null,\"dir\":1},\n{\"from\":-13,\"to\":-11,\"points\":[105,-424.305,105,-414.305,105,-394.305,105,-394.305,105,-374.305,105,-364.305],\"dash\":null,\"color\":\"#000000\",\"dir\":1},\n{\"from\":-10,\"to\":-9,\"points\":[-65,-294.305,-65,-284.305,-65,-232.1525,-40,-232.1525,-40,-180,-40,-170],\"dir\":2,\"dash\":[4,4]},\n{\"from\":-11,\"to\":-9,\"points\":[105,-304.305,105,-294.305,105,-237.1525,0,-237.1525,0,-180,0,-170],\"dash\":[4,4],\"dir\":2},\n{\"from\":-9,\"to\":-14,\"points\":[40,-150,58,-150,80,-150,80,-153.33333333333331,102,-153.33333333333331,120,-153.33333333333331],\"dir\":1,\"color\":\"#3358ff\"},\n{\"from\":-14,\"to\":-9,\"points\":[190,-100,190,-90,-20,-90,-20,-95,-20,-100,-20,-110],\"fromSpot\":\"BottomSide\",\"toSpot\":\"BottomSide\",\"text\":\"No\",\"color\":\"#ff3333\",\"thickness\":2,\"dir\":1},\n{\"from\":-9,\"to\":-14,\"points\":[40,-130,58,-130,80,-130,80,-126.66666666666666,102,-126.66666666666666,120,-126.66666666666666]}\n]}"; // myDiagram.current.model = go.Model.fromJson(initData); // start var builtIn = ["Rectangle", "Square", "RoundedRectangle", "Border", "Ellipse", "Circle", "TriangleRight", "TriangleDown", "TriangleLeft", "TriangleUp", "Triangle", "Diamond", "LineH", "LineV", "None", "BarH", "BarV", "MinusLine", "PlusLine", "XLine", "LineRight", "LineDown", "LineLeft", "LineUp"]; function isBuiltIn(shapeName) { console.log("shapeName:", shapeName); return builtIn.indexOf(shapeName) >= 0; } var myPalette = new go_module.Palette(myPaletteDivRef.current, // must name or refer to the DIV HTML element { maxSelectionCount: 1, // nodeTemplateMap: myDiagram.current.nodeTemplateMap, // share the templates used by myDiagram.current linkTemplate: // simplify the link template, just in this Palette $(go_module.Link, { // because the GridLayout.alignment is Location and the nodes have locationSpot == Spot.Center, // to line up the Link in the same manner we have to pretend the Link has the same location spot locationSpot: go_module.Spot.Center, selectionAdornmentTemplate: $(go_module.Adornment, "Link", { locationSpot: go_module.Spot.Center }, $(go_module.Shape, { isPanelMain: true, fill: null, stroke: "deepskyblue", strokeWidth: 0 }), $(go_module.Shape, // the arrowhead { toArrow: "Standard", stroke: null })) }, { routing: go_module.Link.AvoidsNodes, curve: go_module.Link.JumpOver, corner: 5, toShortLength: 4 }, new go_module.Binding("points"), $(go_module.Shape, // the link path shape { isPanelMain: true, strokeWidth: 2 }), $(go_module.Shape, // the arrowhead { toArrow: "Standard", stroke: null })), model: new go_module.GraphLinksModel([ // specify the contents of the Palette { text: "未命名", "size": "100 100", fill: null, stroke: "#000" }].concat(toConsumableArray_default()(go_module.Shape.getFigureGenerators().toArray().map(function (item) { return { text: "未命名", "size": "100 100", figure: item.key, fill: "white", stroke: "#666", borderColor: "#000" }; })))) // [ // // the Palette also has a disconnected Link, which the user can drag-and-drop // { points: new go.List(/*go.Point*/).addAll([new go.Point(0, 0), new go.Point(30, 0), new go.Point(30, 40), new go.Point(60, 40)]) } // ] }); // $("ContextMenuButton", // $(go.Panel, "Horizontal", // FigureButton("Rectangle"), FigureButton("RoundedRectangle"), FigureButton("Ellipse"), FigureButton("Diamond") // ) // ), // $("ContextMenuButton", // $(go.Panel, "Horizontal", // FigureButton("Parallelogram2"), FigureButton("ManualOperation"), FigureButton("Procedure"), FigureButton("Cylinder1") // ) // ), // $("ContextMenuButton", // $(go.Panel, "Horizontal", // FigureButton("Terminator"), FigureButton("CreateRequest"), FigureButton("Document"), FigureButton("TriangleDown") // ) // ), myPalette.nodeTemplate = $(go_module.Node, "Auto", { locationSpot: go_module.Spot.Center }, new go_module.Binding("location", "location", go_module.Point.parse).makeTwoWay(go_module.Point.stringify), $(go_module.Shape, "Circle", { fill: "white", stroke: "gray", strokeWidth: 2, width: 20, height: 20, portId: "", fromLinkable: true, toLinkable: true, fromLinkableDuplicates: true, toLinkableDuplicates: true, fromLinkableSelfNode: true, toLinkableSelfNode: true }, new go_module.Binding("stroke").makeTwoWay(), new go_module.Binding("fill").makeTwoWay(), new go_module.Binding("figure")), $(go_module.TextBlock, { margin: new go_module.Margin(5, 5, 3, 5), font: "10pt sans-serif", minSize: new go_module.Size(16, 16), maxSize: new go_module.Size(10, NaN), textAlign: "center", editable: true }, new go_module.Binding("key").makeTwoWay())); // end setTimeout(function () { myDiagram.current.grid = $(go_module.Panel, "Grid", $(go_module.Shape, "LineH", { stroke: "lightgray", strokeWidth: 0.5 }), $(go_module.Shape, "LineV", { stroke: "lightgray", strokeWidth: 0.5 })); myDiagram.current.grid.visible = true; // 隐藏网格 myDiagram.current.grid.gridCellStroke = "darkgray"; // 设置网格线的颜色 myDiagram.current.grid.gridCellStrokeWidth = 1; // 设置网格线的粗细 }, 300); window.myDiagrams = myDiagram.current; return myDiagram.current; } var save = /*#__PURE__*/function () { var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() { var imgs, res; return regeneratorRuntime_default()().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: // console.log(JSON.stringify(myDiagram.current.model.toJson())) imgs = myDiagram.current.makeImage(); _context.next = 3; return (0,fetch/* default */.ZP)('/api/attachments.json', { method: 'post', body: { file_type: 'base64', original_filename: Date.now(), file: imgs.src } }); case 3: res = _context.sent; callback({ src: res.url }); case 5: case "end": return _context.stop(); } }, _callee); })); return function save() { return _ref2.apply(this, arguments); }; }(); (0,_react_17_0_2_react.useEffect)(function () { setUpdateModal(updateModal + 1); }, []); return /*#__PURE__*/(0,jsx_runtime.jsx)("div", { ref: modalRef, className: hidedenContentRef.current ? "".concat(flow_chartmodules.maxH60, " body-overflow-initial") : "body-overflow-initial", children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, { width: 1200, icon: null, footer: null, closable: true, visible: !!updateModal, destroyOnClose: true, maskClosable: false, getContainer: modalRef.current, rootClassName: "zIndex-9999", title: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, { children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { flex: 1, children: "\u63D2\u5165\u6D41\u7A0B\u56FE" }), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { onClick: function onClick() { hidedenContentRef.current = !hidedenContentRef.current; setUpdateModal(updateModal + 1); }, children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", { className: "current c-blue mr30", style: { fontWeight: 400 }, children: "\u5C55\u5F00/\u6536\u8D77" }) })] }), onCancel: onCancel, children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { style: { width: "100%", height: "80vh", overflow: "hidden", position: "relative" }, children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", { style: { display: "flex", height: "100%" }, children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", { style: { width: "300px", height: "100%" }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", { style: { background: "#fff", position: "relative", zIndex: 12, fontSize: 16, color: "#3061d0" }, children: "\u56FE\u5F62\u5E93" }), /*#__PURE__*/(0,jsx_runtime.jsx)("div", { style: { height: "calc(100% - 50px)" }, className: flow_chartmodules.myPaletteDiv, ref: myPaletteDivRef })] }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { style: { flex: 1, position: "relative" }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)(gojsreact/* ReactDiagram */.FI, { initDiagram: initDiagram, divClassName: "diagram-component", style: { height: "80vh" } }), /*#__PURE__*/(0,jsx_runtime.jsx)("div", { ref: myDiagramDivRef })] })] }), /*#__PURE__*/(0,jsx_runtime.jsx)("div", { className: "tr", children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { size: "large", onClick: save, style: { position: "absolute", right: 0, bottom: 0, zIndex: 8 }, type: "primary", children: "\u4FDD\u5B58\u5230\u7F16\u8F91\u5668" }) })] }) }) }); } /* harmony default export */ var flow_chart = (FlowChart); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/radio/index.js + 5 modules var es_radio = __webpack_require__(5112); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/input-number/index.js + 14 modules var input_number = __webpack_require__(85731); ;// CONCATENATED MODULE: ./src/components/markdown-editor/add-table-panel/index.tsx var RadioGroup = es_radio/* default.Group */.ZP.Group; var add_table_panel_style = { margin: '0 8px' }; /* harmony default export */ var add_table_panel = (function (_ref) { var callback = _ref.callback, onCancel = _ref.onCancel; function onSubmit(values) { callback(values); } return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, { className: "add-table-panel", initialValues: { row: 3, col: 2, align: 'default' }, onFinish: onSubmit, children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "flex-container", style: { alignItems: "baseline" }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", { style: add_table_panel_style, children: "\u5355\u5143\u683C\u6570\uFF1A" }), /*#__PURE__*/(0,jsx_runtime.jsx)("span", { style: add_table_panel_style, children: "\u884C\u6570" }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { name: "row", rules: [{ required: true, message: '请输入行数' }], children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {}) }), /*#__PURE__*/(0,jsx_runtime.jsx)("span", { style: add_table_panel_style, children: "\u5217\u6570" }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { name: "col", rules: [{ required: true, message: '请输入列数' }], children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {}) })] }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "flex-container", style: { marginTop: 12, alignItems: "baseline" }, children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", { style: add_table_panel_style, children: "\u5BF9\u9F50\u65B9\u5F0F\uFF1A" }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z.Item, { name: "align", children: /*#__PURE__*/(0,jsx_runtime.jsxs)(RadioGroup, { children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, { value: "default", children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "fa fa-align-justify" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, { value: "left", children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "fa fa-align-left" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, { value: "center", children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "fa fa-align-center" }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, { value: "right", children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", { className: "fa fa-align-right" }) })] }) })] }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", { className: "flex-container flex-end", children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { type: "primary", htmlType: "submit", style: { marginRight: 10 }, children: "\u786E\u5B9A" }), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { type: "ghost", onClick: onCancel, children: "\u53D6\u6D88" })] })] }); }); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/switch/index.js + 2 modules var es_switch = __webpack_require__(78673); // EXTERNAL MODULE: ./src/components/MathematicalGraphics/js/index.js var js = __webpack_require__(28871); var js_default = /*#__PURE__*/__webpack_require__.n(js); ;// CONCATENATED MODULE: ./src/components/MathematicalGraphics/index.tsx var MathematicalGraphics_FlowChart = /*#__PURE__*/(0,_react_17_0_2_react.forwardRef)(function (_ref, ref) { var use3d = _ref.use3d, width = _ref.width, height = _ref.height, callback = _ref.callback, showSaveButton = _ref.showSaveButton; var ggbAppletRef = (0,_react_17_0_2_react.useRef)(); var appletRef = (0,_react_17_0_2_react.useRef)(); var _useState = (0,_react_17_0_2_react.useState)(false), _useState2 = slicedToArray_default()(_useState, 2), is3D = _useState2[0], setIs3d = _useState2[1]; var parameters = (0,_react_17_0_2_react.useRef)({ "id": ggbAppletRef, "appName": "graphing", "width": width || 1000, "height": height || 600, "showToolBar": true, "showMenuBar": true, "allowStyleBar": true, "showAlgebraInput": true, "enableLabelDrags": false, "enableShiftDragZoom": true, "showToolBarHelp": false, "errorDialogsActive": true, "showTutorialLink": true, "showLogging": true, "useBrowserForJS": false }); (0,_react_17_0_2_react.useEffect)(function () { appletRef.current = new (js_default())(parameters.current, true); window.onload = function () { appletRef.current.inject('applet_container'); }; }, []); var getImgData = function getImgData() { var str = window.ggbApplet.getPNGBase64(1, true, 72); callback && callback(str); return str; }; (0,_react_17_0_2_react.useEffect)(function () { parameters.current.appName = is3D ? "3D" : "graphing"; appletRef.current.inject('applet_container'); }, [is3D]); (0,_react_17_0_2_react.useEffect)(function () { setIs3d(use3d); }, [use3d]); (0,_react_17_0_2_react.useImperativeHandle)(ref, function () { return { getImgData: getImgData }; }); return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", { style: { width: "100%", height: "100%" }, id: "applet_container", ref: ggbAppletRef }), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, { align: "middle", children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { flex: 1, children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_switch/* default */.Z, { size: "default", checkedChildren: "\u5173\u95ED3D\u56FE\u50CF", unCheckedChildren: "\u5F00\u542F3D\u56FE\u50CF", checked: is3D, onChange: function onChange(e) { return setIs3d(e); } }) }), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, { children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, { size: "large", onClick: getImgData, style: { zIndex: 8, marginTop: 10 }, type: "primary", children: "\u4FDD\u5B58\u5230\u7F16\u8F91\u5668" }) })] })] }); }); /* harmony default export */ var MathematicalGraphics = (MathematicalGraphics_FlowChart); // EXTERNAL MODULE: ./src/components/MathsLatexKeybords/keybords.tsx var keybords = __webpack_require__(70118); // EXTERNAL MODULE: ./src/utils/env.ts + 1 modules var env = __webpack_require__(83877); ;// CONCATENATED MODULE: ./src/components/markdown-editor/constant.ts var LINK = 'link'; var UPLOAD_IMAGE = 'upload-image'; var ADD_FLOWCHART = 'add-flowchart'; var DRAW_IMAGE = 'draw-image'; var FLOW_CHART = 'add-flowchart'; var CODE_BLOCK = 'code-block'; var ADD_TABLE = 'add-table'; var HRLINE = '------------'; var ALIGNSIGN = { "default": HRLINE, left: ":".concat(HRLINE), center: ":".concat(HRLINE, ":"), right: "".concat(HRLINE, ":") }; // EXTERNAL MODULE: ./src/components/useInterval.tsx var useInterval = __webpack_require__(94158); ;// CONCATENATED MODULE: ./src/components/markdown-editor/index.tsx function noop() {} var pending = 0; var StorageTimeTicket = 10000; var NULL_CH = '▁'; var ADD_MULTI = '@▁▁@'; var ADD_SINGLE = '@▁@'; var TEMP1 = '\n**模板标题**\n模板正文内容,可输入文本内容和粘贴图片等操作'; //课程须知模板 var officeSix = ["pptm", "pptx", "ppt", "pot", "pps", "ppa", "potx", "ppsx", "ppam", "pptm", "potm", "ppsm", "doc", "docx", "dot", "dotx", "docm", "dotm", "xls", "xlsx", "csv", "xlt", "xla", "xltx", "xlsm", "xltm", "xlam", "xlsb"]; function processSize(size) { return !/^\d+$/.test(size) ? size : "".concat(size, "px"); } var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0; var key = isMac ? 'Cmd' : 'Ctrl'; var DEFAULTKEYMAP = defineProperty_default()(defineProperty_default()({}, key + '-B', 'bold'), key + '-I', 'italic'); var TitleDesc = defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()({}, LINK, '添加链接'), CODE_BLOCK, '添加代码块'), UPLOAD_IMAGE, '添加图片'), DRAW_IMAGE, '添加画图'), ADD_FLOWCHART, '插入流程图'), ADD_TABLE, '添加表格'), 'maths-latex', "数学图像"), 'inline-latex', "LATEX公式"); //https://codemirror.net/demo //The height can be set through CSS (by giving the .CodeMirror class a height property), or by calling the cm's setSize method. /* harmony default export */ var markdown_editor = (function (_ref) { var _ref$defaultValue = _ref.defaultValue, defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue, onChange = _ref.onChange, _ref$width = _ref.width, width = _ref$width === void 0 ? '100%' : _ref$width, _ref$height = _ref.height, height = _ref$height === void 0 ? 400 : _ref$height, _ref$miniToolbar = _ref.miniToolbar, miniToolbar = _ref$miniToolbar === void 0 ? false : _ref$miniToolbar, _ref$isFocus = _ref.isFocus, isFocus = _ref$isFocus === void 0 ? false : _ref$isFocus, watch = _ref.watch, insertTemp = _ref.insertTemp, _ref$mode = _ref.mode, mode = _ref$mode === void 0 ? "markdown" : _ref$mode, _ref$id = _ref.id, id = _ref$id === void 0 ? 'markdown-editor-id' : _ref$id, _ref$showResizeBar = _ref.showResizeBar, showResizeBar = _ref$showResizeBar === void 0 ? false : _ref$showResizeBar, _ref$noStorage = _ref.noStorage, noStorage = _ref$noStorage === void 0 ? false : _ref$noStorage, _ref$showNullButton = _ref.showNullButton, showNullButton = _ref$showNullButton === void 0 ? false : _ref$showNullButton, _ref$showNullProgramB = _ref.showNullProgramButton, showNullProgramButton = _ref$showNullProgramB === void 0 ? false : _ref$showNullProgramB, _ref$hidetoolBar = _ref.hidetoolBar, hidetoolBar = _ref$hidetoolBar === void 0 ? false : _ref$hidetoolBar, _ref$fullScreen = _ref.fullScreen, fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen, onBlur = _ref.onBlur, onCMBeforeChange = _ref.onCMBeforeChange, onFullScreen = _ref.onFullScreen, _ref$className = _ref.className, className = _ref$className === void 0 ? '' : _ref$className, _ref$disablePaste = _ref.disablePaste, disablePaste = _ref$disablePaste === void 0 ? false : _ref$disablePaste, _ref$disabled = _ref.disabled, disabled = _ref$disabled === void 0 ? false : _ref$disabled, _ref$disabledFill = _ref.disabledFill, disabledFill = _ref$disabledFill === void 0 ? false : _ref$disabledFill, _ref$placeholder = _ref.placeholder, placeholder = _ref$placeholder === void 0 ? '' : _ref$placeholder, _ref$values = _ref.values, values = _ref$values === void 0 ? '' : _ref$values, extraUse = _ref.extraUse; var _useState = (0,_react_17_0_2_react.useState)(null), _useState2 = slicedToArray_default()(_useState, 2), cm = _useState2[0], setCm = _useState2[1]; var _useState3 = (0,_react_17_0_2_react.useState)(defaultValue), _useState4 = slicedToArray_default()(_useState3, 2), value = _useState4[0], setValue = _useState4[1]; var _useState5 = (0,_react_17_0_2_react.useState)(watch), _useState6 = slicedToArray_default()(_useState5, 2), preview = _useState6[0], setPreview = _useState6[1]; var _useState7 = (0,_react_17_0_2_react.useState)(fullScreen), _useState8 = slicedToArray_default()(_useState7, 2), isFull = _useState8[0], setIsFull = _useState8[1]; var _useState9 = (0,_react_17_0_2_react.useState)(''), _useState10 = slicedToArray_default()(_useState9, 2), action = _useState10[0], setAction = _useState10[1]; var _useState11 = (0,_react_17_0_2_react.useState)(0), _useState12 = slicedToArray_default()(_useState11, 2), lastedUpdateTime = _useState12[0], setLastedUpdateTime = _useState12[1]; var _useState13 = (0,_react_17_0_2_react.useState)(height), _useState14 = slicedToArray_default()(_useState13, 2), h = _useState14[0], setH = _useState14[1]; var _useState15 = (0,_react_17_0_2_react.useState)(false), _useState16 = slicedToArray_default()(_useState15, 2), tip = _useState16[0], setTip = _useState16[1]; var cmEl = (0,_react_17_0_2_react.useRef)(); var containerEl = (0,_react_17_0_2_react.useRef)(); var resizeBarEl = (0,_react_17_0_2_react.useRef)(); var previewEl = (0,_react_17_0_2_react.useRef)(); // useEffect(() => { // setValue(defaultValue) // cm?.setValue(defaultValue) // },[]) (0,_react_17_0_2_react.useEffect)(function () { var scrollTop = window.scrollY || window.pageYOffset; setValue(values); cm === null || cm === void 0 || cm.setValue(values); window.scrollTo(0, scrollTop); }, [values]); (0,_react_17_0_2_react.useEffect)(function () { onFullScreen === null || onFullScreen === void 0 || onFullScreen(isFull); }, [isFull]); (0,_react_17_0_2_react.useEffect)(function () { if (cmEl.current) { var onPaste = function onPaste(_, e) { if (disablePaste) { e.preventDefault(); return; } var clipboardData = e.clipboardData; if (clipboardData) { var types = clipboardData.types.toString(); var items = clipboardData.items; if (types === 'Files' || clipboardData.types.indexOf("Files") > -1) { e.preventDefault(); if (mode == "stex") return; try { var _items$; var item = items[1]; if (((_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.kind) === 'file') { item = items[0]; } var file = item.getAsFile(); var fileSix = file.name.split(".").pop(); // console.log("item:", item, file, item?.type?.match(/^video\//i)) uploadImage(file, function (data) { if (data.id) { var _file$type, _file$type2, _file$type3; if ((file === null || file === void 0 || (_file$type = file.type) === null || _file$type === void 0 ? void 0 : _file$type.indexOf("image")) > -1) { instance.replaceSelection("![,](/api/attachments/".concat(data.id, "?type=").concat(data.content_type, ")")); } else if ((file === null || file === void 0 || (_file$type2 = file.type) === null || _file$type2 === void 0 ? void 0 : _file$type2.indexOf("video")) > -1) { instance.replaceSelection("")); } else if ((file === null || file === void 0 || (_file$type3 = file.type) === null || _file$type3 === void 0 ? void 0 : _file$type3.indexOf("pdf")) > -1) { instance.replaceSelection("").concat(file.name, "")); } else if (officeSix.includes(fileSix)) { instance.replaceSelection("").concat(file.name, "")); } else { instance.replaceSelection("[".concat(file.name, "](").concat(env/* default */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(data.content_type, ")")); } } else { if ((data === null || data === void 0 ? void 0 : data.status) === 401) document.location.href = '/user/login'; } }); } catch (e) { message/* default */.ZP.warning("请使用chrome浏览器粘贴"); } return true; } else { //toMarkdown ? // let html = clipboardData.getData('text/html') return true; } } return true; }; var instance = codemirror_default().fromTextArea(cmEl.current, { mode: mode, // inputStyle: 'contenteditable', lineNumbers: miniToolbar ? false : true, lineWrapping: true, value: defaultValue, autoCloseTags: true, autoCloseBrackets: true }); instance.on("keyup", function (cm, event) { if (event.keyCode === 8) { if (cm.getValue() == "") { instance.setOption("placeholder", placeholder); } else { instance.setOption("placeholder", null); } } }); instance.on("keydown", function (cm, event) { if (event.keyCode === 8) { var pos = deleteAtSymbol(cm); if (pos) { event.preventDefault(); } } }); isFocus && instance.focus(); instance.on('paste', onPaste); if (disabled) { instance.on("beforeChange", function (instances, change) { if (change.origin === "paste" || change.origin === "+input") { change.cancel(); } }); } setCm(instance); return function () { instance.off('paste', onPaste); }; } }, []); var resizeEditorBodyHeight = (0,_react_17_0_2_react.useCallback)(function () { if (containerEl.current) { try { // let toolH = containerEl.current.getElementsByClassName('markdown-toolbar-container')[0].offsetHeight // let mdBody = containerEl.current.getElementsByClassName('markdown-editor-body')[0] // if (!isFull) { // mdBody.style.height = `${h - toolH}px` // } else { // mdBody.style.height = `calc(100vh - ${toolH}px)` // } } catch (error) { console.log(error, '---- to set md editor body height'); } } }, [h, containerEl, isFull]); (0,_react_17_0_2_react.useEffect)(function () { function onLayout() { var ro = new ResizeObserver_es/* default */.Z(function (entries) { var _iterator = createForOfIteratorHelper_default()(entries), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var entry = _step.value; if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) { resizeEditorBodyHeight(); cm.setSize('100%', '100%'); cm.refresh(); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } }); ro.observe(cmEl.current.parentElement); return ro; } if (cm) { var ro = onLayout(); return function () { var _cmEl$current, _cmEl$current2; if ((_cmEl$current = cmEl.current) !== null && _cmEl$current !== void 0 && _cmEl$current.parentElement) ro.unobserve((_cmEl$current2 = cmEl.current) === null || _cmEl$current2 === void 0 ? void 0 : _cmEl$current2.parentElement); }; } }, [cm, resizeEditorBodyHeight]); //keymap (0,_react_17_0_2_react.useEffect)(function () { if (cm) { var keymap = []; var _loop = function _loop() { var _Object$entries$_i = slicedToArray_default()(_Object$entries[_i], 2), k = _Object$entries$_i[0], value = _Object$entries$_i[1]; var map = defineProperty_default()({}, k, function () { onActionCallback(value); }); keymap.push(map); cm.addKeyMap(map); }; for (var _i = 0, _Object$entries = Object.entries(DEFAULTKEYMAP); _i < _Object$entries.length; _i++) { _loop(); } return function () { for (var _i2 = 0, _keymap = keymap; _i2 < _keymap.length; _i2++) { var m = _keymap[_i2]; cm.removeKeyMap(m); } }; } }, [cm]); (0,_react_17_0_2_react.useEffect)(function () { if (fullScreen !== isFull) { setIsFull(fullScreen); } }, [fullScreen]); (0,useInterval/* default */.Z)(function () { if (!noStorage && lastedUpdateTime > 0) { var currentTime = new Date().getTime(); var lastedValue = window.sessionStorage.getItem(id); if (currentTime >= lastedUpdateTime + StorageTimeTicket && (!lastedValue || lastedValue !== value)) { window.sessionStorage.setItem(id, value); setTip(true); } } }, StorageTimeTicket); (0,_react_17_0_2_react.useEffect)(function () { setPreview(watch); }, [cm, watch]); (0,_react_17_0_2_react.useEffect)(function () { if (cm) { isFocus && cm.focus(); } }, [cm, isFocus]); (0,_react_17_0_2_react.useEffect)(function () { if (preview && cm) { var syncScroll = function syncScroll(e) { var target = e.target; if (previewEl.current) { var ratio = target.scrollTop / target.scrollHeight; previewEl.current.scrollTop = previewEl.current.scrollHeight * ratio; } }; var scrollEl = cm.getScrollerElement(); scrollEl.addEventListener('scroll', syncScroll); return function () { scrollEl.removeEventListener('scroll', syncScroll); }; } }, [cm, preview]); (0,_react_17_0_2_react.useEffect)(function () { if (cm && onCMBeforeChange) { var onChangeHandler = function onChangeHandler(cm, change) { onCMBeforeChange(cm, change); }; cm.on('beforeChange', onChangeHandler); return function () { cm.off('beforeChange', onChangeHandler); }; } }, [cm, onCMBeforeChange]); (0,_react_17_0_2_react.useEffect)(function () { if (cm && onBlur) { var onBlurHandler = function onBlurHandler() { onBlur(cm.getValue()); }; cm.on('blur', onBlurHandler); return function () { cm.off('blur', onBlurHandler); }; } }, [cm, onBlur]); function deleteAtSymbol(cm, change) { var doc = cm.getDoc(); var cursor = doc.getCursor(); var line = doc.getLine(cursor.line); var ch = line.charAt(cursor.ch - 1); var p1 = line.lastIndexOf("@▁@", cursor.ch); var p2 = line.lastIndexOf("@▁▁@", cursor.ch); var posStart = p1 > p2 ? p1 : p2; var n = p1 > p2 ? 3 : 4; if (ADD_MULTI.indexOf(ch) === -1) return null; console.log("change1:", change, cm, line, cursor, posStart, p1, p2, ch); if (posStart >= 0 && cursor.ch - posStart < 5) { var posEnd = posStart + n; doc.replaceRange("", { line: cursor.line, ch: posStart }, { line: cursor.line, ch: posEnd }); return { line: cursor.line, ch: posEnd }; } return null; } (0,_react_17_0_2_react.useEffect)(function () { if (cm) { var onChangeHandler = function onChangeHandler(cm, change) { var content = cm.getValue(); setValue(content); setLastedUpdateTime(new Date().getTime()); cm.getScrollerElement().dispatchEvent(new CustomEvent('scroll')); if (onChange) { if (showNullProgramButton) { onChange(content, formatProgramFill(content)); } else { onChange(content); } } }; cm.on('change', onChangeHandler); return function () { cm.off('change', onChangeHandler); }; } }, [cm, onChange]); (0,_react_17_0_2_react.useEffect)(function () { if (cm) { // isFocus && cm.focus() if (defaultValue === null || defaultValue === undefined) { cm.setValue(''); setValue(''); } else { var scrollTop = window.scrollY || window.pageYOffset; if (defaultValue !== cm.getValue()) { cm.setValue(defaultValue); setValue(defaultValue); cm.setCursor(disabled ? 1 : cm.lineCount(), 0); window.scrollTo(0, scrollTop); } } } }, [cm, defaultValue]); var onActionCallback = (0,_react_17_0_2_react.useCallback)(function (actionName) { var cursor = cm.getCursor(); var selection = cm.getSelection(); var selectionText = selection.split('\n'); switch (actionName) { case 'bold': cm.replaceSelection('**' + selection + '**'); if (selection === '') { cm.setCursor(cursor.line, cursor.ch + 2); } return cm.focus(); case 'italic': cm.replaceSelection('*' + selection + '*'); if (selection === '') { cm.setCursor(cursor.line, cursor.ch + 1); } return cm.focus(); case 'code': cm.replaceSelection('`' + selection + '`'); if (selection === '') { cm.setCursor(cursor.line, cursor.ch + 1); } return cm.focus(); case 'inline-latex': setAction("inline-latex"); // cm.replaceSelection('`$$' + selection + '$$`') // if (selection === '') { // cm.setCursor(cursor.line, cursor.ch + 3) // } return cm.focus(); case 'latex': cm.replaceSelection("```latex\n" + selection + "\n```"); cm.setCursor(cursor.line + 1, selection.length + 1); return cm.focus(); case 'line-break': cm.replaceSelection('
\n'); return cm.focus(); case 'list-ul': if (selection === '') { cm.replaceSelection('- ' + selection); } else { cm.replaceSelection(selectionText.map(function (item) { return item === '' ? '' : "- ".concat(item); }).join('\n')); } return cm.focus(); case 'list-ol': if (selection === '') { cm.replaceSelection('1. ' + selection); } else { cm.replaceSelection(selectionText.map(function (item, index) { return item === '' ? '' : "".concat(index + 1, ". ").concat(item); }).join('\n')); } return cm.focus(); case 'add-null-ch': if (selection === '') { cm.setCursor(cursor.line, cursor.ch); } cm.replaceSelection(NULL_CH); return cm.focus(); case 'add-signal': if (selection === '') { cm.setCursor(cursor.line, cursor.ch); } cm.replaceSelection(ADD_SINGLE); return cm.focus(); case 'add-multiple': if (selection === '') { cm.setCursor(cursor.line, cursor.ch); } cm.replaceSelection(ADD_MULTI); return cm.focus(); case 'inster-template-1': if (selection === '') { cm.setCursor(cursor.line, cursor.ch); } cm.replaceSelection(TEMP1); return cm.focus(); case 'eraser': cm.setValue(''); return cm.focus(); case 'trigger-watch': setPreview(!preview); return cm.focus(); case 'trigger-full-screen': setIsFull(!isFull); return cm.focus(); case LINK: setAction(LINK); return; case CODE_BLOCK: setAction(CODE_BLOCK); return; case UPLOAD_IMAGE: setAction(UPLOAD_IMAGE); return; case DRAW_IMAGE: setAction(DRAW_IMAGE); return; case "maths-latex": setAction("maths-latex"); return; case ADD_FLOWCHART: setAction(ADD_FLOWCHART); return; case ADD_TABLE: setAction(ADD_TABLE); return; default: throw new Error(); } }, [cm, preview, isFull]); var ExecutePluginAction = (0,_react_17_0_2_react.useCallback)(function (values, currentFile) { var _file$name, _file$name$pop, _file$type4, _file$type5, _file$type6; setAction(''); switch (action) { case LINK: var title = values.title, link = values.link; cm.replaceSelection("[".concat(title, "](").concat(link, ")")); return cm.focus(); case CODE_BLOCK: var language = values.language, content = values.content; cm.replaceSelection(['```' + language, content, '```'].join('\n')); return cm.focus(); case "maths-latex": var binaryString = atob(values); var uint8Array = new Uint8Array(binaryString.length); for (var i = 0; i < binaryString.length; i++) { uint8Array[i] = binaryString.charCodeAt(i); } var files = new Blob([uint8Array], { type: "image/png" }); uploadImage(files, function (data) { if (data.id) { cm.replaceSelection("![,](/api/attachments/".concat(data.id, "?type=").concat(data.content_type, ")")); } else { if ((data === null || data === void 0 ? void 0 : data.status) === 401) document.location.href = '/user/login'; } }); break; case "inline-latex": cm.replaceSelection("`$$" + values + "$$`"); break; case UPLOAD_IMAGE: case DRAW_IMAGE: case FLOW_CHART: var src = values.src, alt = values.alt; var file = currentFile; var fileSix = file === null || file === void 0 || (_file$name = file.name) === null || _file$name === void 0 || (_file$name = _file$name.split(".")) === null || _file$name === void 0 || (_file$name$pop = _file$name.pop) === null || _file$name$pop === void 0 ? void 0 : _file$name$pop.call(_file$name); if ((file === null || file === void 0 || (_file$type4 = file.type) === null || _file$type4 === void 0 ? void 0 : _file$type4.indexOf("image")) > -1 || !(file !== null && file !== void 0 && file.type)) { if (alt) { cm.replaceSelection("![ ".concat(alt, " ]( ").concat(src, " \"").concat(alt, "\" )")); } else { cm.replaceSelection("![,](".concat(src, ")")); } } else if ((file === null || file === void 0 || (_file$type5 = file.type) === null || _file$type5 === void 0 ? void 0 : _file$type5.indexOf("video")) > -1) { cm.replaceSelection("")); } else if ((file === null || file === void 0 || (_file$type6 = file.type) === null || _file$type6 === void 0 ? void 0 : _file$type6.indexOf("pdf")) > -1) { cm.replaceSelection("").concat(file.name, "")); } else if (officeSix.includes(fileSix)) { cm.replaceSelection("").concat(file.name, "")); } else { cm.replaceSelection("[".concat(file.name, "](").concat(env/* default */.Z.API_SERVER).concat(src, ")")); } return cm.focus(); case ADD_TABLE: var row = values.row, col = values.col, align = values.align; var table = '\n'; for (var r = 0; r < row; r++) { var rows = []; var heads = []; for (var c = 0; c < col; c++) { if (r === 1) { heads.push(ALIGNSIGN[align]); } rows.push(' '); } if (r === 1) { table += "| ".concat(heads.join(' | '), " |\n"); } table += "| ".concat(rows.join(col === 1 ? '' : ' | '), " |\n"); } cm.replaceSelection(table + '\n'); return cm.focus(); default: throw new Error(); } }, [cm, action]); var PluginEl = (0,_react_17_0_2_react.useMemo)(function () { switch (action) { case LINK: return /*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor_link, { callback: ExecutePluginAction, onCancel: onCancel }); case CODE_BLOCK: return /*#__PURE__*/(0,jsx_runtime.jsx)(code_block/* default */.Z, { callback: ExecutePluginAction, onCancel: onCancel }); case UPLOAD_IMAGE: return /*#__PURE__*/(0,jsx_runtime.jsx)(upload_image, { callback: ExecutePluginAction, onCancel: onCancel }); case ADD_FLOWCHART: return /*#__PURE__*/(0,jsx_runtime.jsx)(flow_chart, { callback: ExecutePluginAction, onCancel: onCancel }) //