"use strict"; define(function (require, exports, module) { console.log(("import ctx")) class MyCtx { #MyRoot = null; constructor() { console.log(("ctx init")); //可以修改的 let editFrontSize = localStorage.getItem('refreshEditFrontSize'); if (editFrontSize !== undefined && editFrontSize !== null) { this.editFrontSize = editFrontSize; } else { this.editFrontSize = 14; } //refreshPFontSize let refreshPFontSize = localStorage.getItem('refreshPFontSize'); if (refreshPFontSize !== undefined && refreshPFontSize !== null) { this.refreshPFontSize = refreshPFontSize; } else { this.refreshPFontSize = { "font-weight": "normal", "font-size": "defaultFontSize", }; } //refreshEditBgColor let refreshEditBgColor = localStorage.getItem('refreshEditBgColor'); if (refreshEditBgColor !== undefined && refreshEditBgColor !== null) { this.refreshEditBgColor = refreshEditBgColor; } else { this.refreshEditBgColor = null; } this.usn = "syjSyj"; this.docType = 0; // 获取 User-Agent 字符串 const userAgent = window.navigator.userAgent; // 判断是否是手机 this.isMobile = /mobi|android|iphone|ipad|ipod/i.test(userAgent.toLocaleLowerCase()) || this.getScreenWidth() < 768; this.isIOS = /iphone|ipad|ipod/i.test(userAgent.toLocaleLowerCase()) || this.getScreenWidth() < 768; this.isAndroid = /android/i.test(userAgent.toLocaleLowerCase()) || this.getScreenWidth() < 768; // 判断是否是平板电脑 this.isTablet = /tablet/i.test(userAgent.toLocaleLowerCase()) || (this.getScreenWidth() >= 768 && this.getScreenWidth() < 1024); //屏幕宽高 this.screenWidth = 0; this.screenHeight = 0; //默认a4 纸 const a4Utils = require('./a4Utils'); this.designWith = a4Utils.width; //h5 this.MyRoot //文档map this.doc = new Map(); //行号 this.rowNo = 0; //是否开始输入中文 this.inCompositionEvent = false; //最近一次操作 this.latestOpDoc = null; //Compositionstart this.Compositionstart = false //初始化 } MyRoot() { if (this.#MyRoot === null) { this.#MyRoot = document.getElementById("yxl_note"); } return this.#MyRoot } getMapItem(orderNo) { return this.docMap.get(orderNo); } incrementNumThenReturn() { return this.rowNo++; } getCurRowNo() { return this.rowNo } getScreenWidth() { //vh 和 vw 都是相对于视窗的宽高度,“视窗”所指为浏览器内部的可视区域大小,即window.innerWidth/window.innerHeight大小 //不包含任务栏标题栏以及底部工具栏的浏览器区域大小。可以简单理解为屏幕百分比,1vh = 屏幕的1% //移动端浏览器对于 vh 单位的计算,是不包含地址栏的,也就是说 100vh 的高度会使带有地址栏的视图溢出。 return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; } getScreenHeight() { return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; } /** * 新增一个元素 * @param newParagraph */ addNewParagraph(newParagraph) { //docRoot this.MyRoot.appendChild(newParagraph); //mapRoot let myP = new MyDocItem(newParagraph); let curOrder = myP.parseOrder(); let uuid = myP.parseUuid(); this.doc.set(curOrder, new MyMapItem(uuid)) //收起选区到一个点,光标落在一个可编辑元素上 window.myEdit.utils.GetSelection().setPosition(newParagraph, 0); } /** * 同步某一行数据到对应的 map节点 * @param docP * @constructor */ SyncMapItemChildrenStyle(docP) { //子元素为空不处理 let items = docP.childNodes; if (items.length <= 0) { return } //构造参数 let curMyP = new MyDocItem(docP); let mapItem = window.myEdit.ctx.getMapItem(curMyP.parseOrder()); //清空重置 // console.log(mapItem); mapItem.getStyle().setChildrenStyleMapNull(); //遍历 for (let i = 0; i < items.length; i++) { let curItem = items[i]; let tmpClassList = curItem.classList; if (tmpClassList != null && tmpClassList.length > 0) { mapItem.getStyle().setChildrenStyle(i, tmpClassList); } } // console.log("sync docP : ", docP, " children: ", docP.children, " childrenMap: ", mapItem.getStyle().getChildrenStyleMap()) } /** * */ showTestText() { } } // 初始化一次 module.exports = new MyCtx(); })