168 lines
5.6 KiB
JavaScript
Raw Normal View History

2024-10-31 01:32:52 +08:00
"use strict";
import {MyBiz} from './biz/MyBiz.js'
import {MyUtils} from './common/MyUtils.js'
import {MyEventListener} from "./event/MyEventListener.js";
2024-10-31 15:07:34 +08:00
(function () {
2024-10-31 01:32:52 +08:00
//init
window.myEdit = {
/**
* 优先初始化 工具
*/
utils: new MyUtils(),
2024-10-31 15:07:34 +08:00
2024-10-31 01:32:52 +08:00
/**
* 其次初始化 事件监听
*/
2024-10-31 15:07:34 +08:00
eventListener: new MyEventListener(),
2024-10-31 01:32:52 +08:00
2024-10-31 15:07:34 +08:00
/**
* ctx
*/
2024-10-31 01:32:52 +08:00
ctx: {
2024-10-31 15:07:34 +08:00
/**
* 默认body front-size 单位px
*/
2024-10-31 20:22:46 +08:00
editFrontSize: 14,
2024-10-31 15:07:34 +08:00
/**
* 设计稿宽度 375
*/
designWith: 1280,
2024-10-31 01:32:52 +08:00
/**
* 文档的根节点
*/
2024-10-31 15:07:34 +08:00
MyRoot: null,
2024-10-31 01:32:52 +08:00
/**
* 文档的结构树
*/
MyDocMap: new Map(),
getMapItem: function (orderNo) {
return this.MyDocMap.get(orderNo);
},
/**
* 最新修改的元素. 当前只支持撤销一次
*/
latestOpDoc: null,
/**
* 行增加记录 行号
*/
rowNo: 0,
incrementNumThenReturn: function () {
return this.rowNo++;
},
/**
* 是否开始输入中文
*/
inCompositionEvent: false,
showTestText: function () {
//显示用户的输入内容
let userInput = document.getElementById("testInput");
if (userInput) {
let obj = {}
for (let [k, v] of this.MyDocMap.entries()) {
if (v["data-hidden"] && v["data-hidden"] === true) {
continue
}
obj[k] = v
}
// console.log("userInput : ", userInput)
userInput.innerText = JSON.stringify(obj)
}
}
},
2024-10-31 15:07:34 +08:00
/**
* 业务处理
*/
biz: new MyBiz()
2024-10-31 01:32:52 +08:00
}
2024-10-31 19:01:59 +08:00
// 直接调用工具函数获取 A4 纸的像素尺寸
let a4_size = window.myEdit.utils.A4SizeInPixels();
window.myEdit.ctx.designWith = a4_size.width;
2024-10-31 01:32:52 +08:00
/**
* 业务处理
*/
window.myEdit.biz = new MyBiz();
2024-10-31 15:07:34 +08:00
/**
* 窗口重载&文档重载事件 for 响应式
*/
window.myEdit.utils.RefreshRootFrontSize();
2024-10-31 20:22:46 +08:00
window.myEdit.utils.RefreshEditFrontSize();
2024-10-31 15:07:34 +08:00
document.addEventListener('DOMContentLoaded', window.myEdit.utils.RefreshRootFrontSize);
2024-10-31 20:22:46 +08:00
document.addEventListener('DOMContentLoaded', window.myEdit.utils.RefreshEditFrontSize);
2024-10-31 15:07:34 +08:00
window.addEventListener('pageshow', function (e) {
if (e.persisted) {
window.myEdit.utils.RefreshRootFrontSize();
2024-10-31 20:22:46 +08:00
window.myEdit.utils.RefreshEditFrontSize();
2024-10-31 15:07:34 +08:00
}
});
window.addEventListener('resize', window.myEdit.utils.RefreshRootFrontSize);
2024-10-31 20:22:46 +08:00
window.addEventListener('resize', window.myEdit.utils.RefreshEditFrontSize);
2024-10-31 15:07:34 +08:00
/**
2024-10-31 19:28:20 +08:00
* 窗口撤销事件.
* js中的键盘事件只有三种keydownkeyupkeypress它们触发的顺序是keydown -> keypress -> keyup当按下一个键不放开一般会重复地触发 keydown+keypress直到放开后触发一个 keyup 事件
*
2024-10-31 15:07:34 +08:00
*/
2024-10-31 20:22:46 +08:00
window.addEventListener('keydown', window.myEdit.eventListener.WindowsKeydownOrTouchendHandle, true);
window.addEventListener('touchend', window.myEdit.eventListener.WindowsKeydownOrTouchendHandle, true);
2024-10-31 15:07:34 +08:00
}());
/**
* 加载完成后执行
*/
window.onload = function () {
//样式事件监听
let styleList = document.getElementsByClassName("fixStyleInnerSpan");
2024-10-31 19:01:59 +08:00
// console.log("styleList : ", styleList);
2024-10-31 15:07:34 +08:00
if (styleList && styleList.length > 0) {
for (let i = 0; i < styleList.length; i++) {
2024-10-31 19:01:59 +08:00
// console.log(styleList[i]);
2024-10-31 15:07:34 +08:00
styleList[i].addEventListener('click', window.myEdit.eventListener.SurroundContentsByStyleListener, true);
}
}
//ctx
window.myEdit.ctx.MyRoot = document.getElementById("noteshare");
// 初始化第一个输入框
let newParagraph = document.createElement("p");
newParagraph.setAttribute("contenteditable", "true");
let uuid = window.myEdit.utils.Uuid()
let curOrder = window.myEdit.ctx.incrementNumThenReturn();
newParagraph.setAttribute("data-id", uuid)
newParagraph.setAttribute("id", uuid)
newParagraph.setAttribute("data-order", curOrder)
2024-10-31 19:28:20 +08:00
newParagraph.onkeyup = window.myEdit.eventListener.KeydownListener
2024-10-31 15:07:34 +08:00
// newParagraph.innerHTML = "<br>"
//添加一行
window.myEdit.utils.AddNewParagraph(newParagraph);
/**
* 输入事件
*/
window.myEdit.eventListener.RegisterEventHandle('input', window.myEdit.eventListener.InputListener);
window.myEdit.eventListener.RegisterEventHandle('compositionstart', window.myEdit.eventListener.CompositionstartListener);
window.myEdit.eventListener.RegisterEventHandle('compositionend', window.myEdit.eventListener.CompositionendListener);
2024-10-31 01:32:52 +08:00
//监听鼠标抬起事件
2024-10-31 20:22:46 +08:00
document.getElementById("noteshare").addEventListener("mouseup", window.myEdit.eventListener.MouseUpOrTouchend, true);
//监听手指抬起事件
document.getElementById("noteshare").addEventListener("touchend", window.myEdit.eventListener.MouseUpOrTouchend, true);
2024-10-31 15:52:17 +08:00
//这里监听鼠标按下事件
document.getElementById("_style_utils").addEventListener("mousedown", function (e) {
const event = window.myEdit.utils.ParseEvent(e);
console.log("mousedown: ", event)
window.myEdit.utils.ProhibitDefaultEvent(event);
}, false);
2024-10-31 01:32:52 +08:00
}