2024-11-07 14:16:50 +08:00

145 lines
4.3 KiB
JavaScript

"use strict";
define(function (require, exports, module) {
console.log(("import ctx"))
class MyCtx {
#MyRoot = null;
constructor() {
console.log(("ctx init"));
//可以修改的
let editFrontSize = localStorage.getItem('editFrontSize');
if (editFrontSize !== undefined && editFrontSize !== null) {
this.editFrontSize = editFrontSize;
} else {
this.editFrontSize = 14;
}
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() {
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();
})