@cgboiler/biz-basic 1.0.27 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/index.d.ts CHANGED
@@ -5,6 +5,6 @@ declare namespace _default {
5
5
  }
6
6
  export default _default;
7
7
  export function install(app: any): void;
8
- export const version: "1.0.26";
8
+ export const version: "1.0.28";
9
9
  import RichTextEditor from './rich-text-editor';
10
10
  export { RichTextEditor };
package/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import RichTextEditor from "./rich-text-editor";
2
- const version = "1.0.26";
2
+ const version = "1.0.28";
3
3
  function install(app) {
4
4
  const components = [
5
5
  RichTextEditor
@@ -1,3 +1,23 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
1
21
  import { createVNode as _createVNode } from "vue";
2
22
  import "./_atomic.css";
3
23
  import { defineComponent, onMounted, onBeforeUnmount, ref, watch, nextTick } from "vue";
@@ -5,6 +25,7 @@ import { Editor, EditorContent } from "@tiptap/vue-3";
5
25
  import Viewer from "viewerjs";
6
26
  import "viewerjs/dist/viewer.css";
7
27
  import { useExtensions } from "./useExtensions";
28
+ import localforage from "localforage";
8
29
  import { richTextEditorProps } from "./types";
9
30
  import "./index.css";
10
31
  var stdin_default = defineComponent({
@@ -118,8 +139,48 @@ var stdin_default = defineComponent({
118
139
  event.preventDefault();
119
140
  }
120
141
  };
142
+ const HISTORY_METADATA_KEY = "rich_text_editor_history_metadata";
143
+ const MAX_HISTORY_ITEMS = 10;
144
+ let saveTimeoutId = null;
145
+ const noteId = ref("");
146
+ const historyStore = localforage.createInstance({
147
+ name: "RichTextEditorHistory",
148
+ storeName: "notes"
149
+ });
150
+ const saveLoop = () => __async(this, null, function* () {
151
+ if (editor.value && !editor.value.isDestroyed && editor.value.isEditable) {
152
+ const content = editor.value.getHTML();
153
+ const now = /* @__PURE__ */ new Date();
154
+ const formattedTime = `${now.toLocaleDateString()} ${now.toLocaleTimeString()}`;
155
+ const noteTitle = `\u7B14\u8BB0 at ${formattedTime}`;
156
+ yield historyStore.setItem(noteId.value, {
157
+ title: noteTitle,
158
+ content
159
+ });
160
+ let metadata = (yield historyStore.getItem(HISTORY_METADATA_KEY)) || [];
161
+ const existingNoteIndex = metadata.findIndex((meta) => meta.id === noteId.value);
162
+ if (existingNoteIndex === -1) {
163
+ metadata.push({
164
+ id: noteId.value,
165
+ timestamp: now.getTime()
166
+ });
167
+ metadata.sort((a, b) => b.timestamp - a.timestamp);
168
+ if (metadata.length > MAX_HISTORY_ITEMS) {
169
+ const itemsToRemove = metadata.splice(MAX_HISTORY_ITEMS);
170
+ for (const item of itemsToRemove) {
171
+ yield historyStore.removeItem(item.id);
172
+ }
173
+ }
174
+ yield historyStore.setItem(HISTORY_METADATA_KEY, metadata);
175
+ }
176
+ }
177
+ saveTimeoutId = setTimeout(saveLoop, 1e4);
178
+ });
121
179
  onMounted(() => {
122
180
  initEditor();
181
+ const now = /* @__PURE__ */ new Date();
182
+ noteId.value = `note-${now.getTime()}`;
183
+ saveLoop();
123
184
  nextTick(() => {
124
185
  var _a, _b;
125
186
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
@@ -130,6 +191,9 @@ var stdin_default = defineComponent({
130
191
  });
131
192
  onBeforeUnmount(() => {
132
193
  var _a, _b, _c;
194
+ if (saveTimeoutId) {
195
+ clearTimeout(saveTimeoutId);
196
+ }
133
197
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
134
198
  if (editorElement) {
135
199
  editorElement.removeEventListener("click", imageClickHandler);
package/lib/index.d.ts CHANGED
@@ -5,6 +5,6 @@ declare namespace _default {
5
5
  }
6
6
  export default _default;
7
7
  export function install(app: any): void;
8
- export const version: "1.0.26";
8
+ export const version: "1.0.28";
9
9
  import RichTextEditor from './rich-text-editor';
10
10
  export { RichTextEditor };
package/lib/index.js CHANGED
@@ -36,7 +36,7 @@ __export(stdin_exports, {
36
36
  module.exports = __toCommonJS(stdin_exports);
37
37
  var import_rich_text_editor = __toESM(require("./rich-text-editor"));
38
38
  __reExport(stdin_exports, require("./rich-text-editor"), module.exports);
39
- const version = "1.0.26";
39
+ const version = "1.0.28";
40
40
  function install(app) {
41
41
  const components = [
42
42
  import_rich_text_editor.default
@@ -25,6 +25,26 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  mod
26
26
  ));
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var __async = (__this, __arguments, generator) => {
29
+ return new Promise((resolve, reject) => {
30
+ var fulfilled = (value) => {
31
+ try {
32
+ step(generator.next(value));
33
+ } catch (e) {
34
+ reject(e);
35
+ }
36
+ };
37
+ var rejected = (value) => {
38
+ try {
39
+ step(generator.throw(value));
40
+ } catch (e) {
41
+ reject(e);
42
+ }
43
+ };
44
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
45
+ step((generator = generator.apply(__this, __arguments)).next());
46
+ });
47
+ };
28
48
  var stdin_exports = {};
29
49
  __export(stdin_exports, {
30
50
  default: () => stdin_default
@@ -37,6 +57,7 @@ var import_vue_3 = require("@tiptap/vue-3");
37
57
  var import_viewerjs = __toESM(require("viewerjs"));
38
58
  var import_viewer = require("viewerjs/dist/viewer.css");
39
59
  var import_useExtensions = require("./useExtensions");
60
+ var import_localforage = __toESM(require("localforage"));
40
61
  var import_types = require("./types");
41
62
  var import_index = require("./index.css");
42
63
  var stdin_default = (0, import_vue2.defineComponent)({
@@ -150,8 +171,48 @@ var stdin_default = (0, import_vue2.defineComponent)({
150
171
  event.preventDefault();
151
172
  }
152
173
  };
174
+ const HISTORY_METADATA_KEY = "rich_text_editor_history_metadata";
175
+ const MAX_HISTORY_ITEMS = 10;
176
+ let saveTimeoutId = null;
177
+ const noteId = (0, import_vue2.ref)("");
178
+ const historyStore = import_localforage.default.createInstance({
179
+ name: "RichTextEditorHistory",
180
+ storeName: "notes"
181
+ });
182
+ const saveLoop = () => __async(this, null, function* () {
183
+ if (editor.value && !editor.value.isDestroyed && editor.value.isEditable) {
184
+ const content = editor.value.getHTML();
185
+ const now = /* @__PURE__ */ new Date();
186
+ const formattedTime = `${now.toLocaleDateString()} ${now.toLocaleTimeString()}`;
187
+ const noteTitle = `\u7B14\u8BB0 at ${formattedTime}`;
188
+ yield historyStore.setItem(noteId.value, {
189
+ title: noteTitle,
190
+ content
191
+ });
192
+ let metadata = (yield historyStore.getItem(HISTORY_METADATA_KEY)) || [];
193
+ const existingNoteIndex = metadata.findIndex((meta) => meta.id === noteId.value);
194
+ if (existingNoteIndex === -1) {
195
+ metadata.push({
196
+ id: noteId.value,
197
+ timestamp: now.getTime()
198
+ });
199
+ metadata.sort((a, b) => b.timestamp - a.timestamp);
200
+ if (metadata.length > MAX_HISTORY_ITEMS) {
201
+ const itemsToRemove = metadata.splice(MAX_HISTORY_ITEMS);
202
+ for (const item of itemsToRemove) {
203
+ yield historyStore.removeItem(item.id);
204
+ }
205
+ }
206
+ yield historyStore.setItem(HISTORY_METADATA_KEY, metadata);
207
+ }
208
+ }
209
+ saveTimeoutId = setTimeout(saveLoop, 1e4);
210
+ });
153
211
  (0, import_vue2.onMounted)(() => {
154
212
  initEditor();
213
+ const now = /* @__PURE__ */ new Date();
214
+ noteId.value = `note-${now.getTime()}`;
215
+ saveLoop();
155
216
  (0, import_vue2.nextTick)(() => {
156
217
  var _a, _b;
157
218
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
@@ -162,6 +223,9 @@ var stdin_default = (0, import_vue2.defineComponent)({
162
223
  });
163
224
  (0, import_vue2.onBeforeUnmount)(() => {
164
225
  var _a, _b, _c;
226
+ if (saveTimeoutId) {
227
+ clearTimeout(saveTimeoutId);
228
+ }
165
229
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
166
230
  if (editorElement) {
167
231
  editorElement.removeEventListener("click", imageClickHandler);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cgboiler/biz-basic",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -52,7 +52,8 @@
52
52
  "@tiptap/starter-kit": "3.3.0",
53
53
  "@tiptap/vue-3": "3.3.0",
54
54
  "tiptap-markdown": "^0.8.10",
55
- "viewerjs": "^1.11.7"
55
+ "viewerjs": "^1.11.7",
56
+ "localforage": "^1.10.0"
56
57
  },
57
58
  "browserslist": [
58
59
  "Chrome >= 51",