@cgboiler/biz-basic 1.0.27 → 1.0.28

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.27";
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.27";
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,47 @@ 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 saveIntervalId = null;
145
+ const noteId = ref("");
146
+ const historyStore = localforage.createInstance({
147
+ name: "RichTextEditorHistory",
148
+ storeName: "notes"
149
+ });
121
150
  onMounted(() => {
122
151
  initEditor();
152
+ const now = /* @__PURE__ */ new Date();
153
+ const formattedTime = `${now.toLocaleDateString()} ${now.toLocaleTimeString()}`;
154
+ noteId.value = `note-${now.getTime()}`;
155
+ const noteTitle = `\u7B14\u8BB0 at ${formattedTime}`;
156
+ saveIntervalId = setInterval(() => __async(this, null, function* () {
157
+ if (!editor.value || editor.value.isDestroyed || !editor.value.isEditable) {
158
+ return;
159
+ }
160
+ const content = editor.value.getHTML();
161
+ console.log("content: ", content);
162
+ yield historyStore.setItem(noteId.value, {
163
+ title: noteTitle,
164
+ content
165
+ });
166
+ let metadata = (yield historyStore.getItem(HISTORY_METADATA_KEY)) || [];
167
+ const existingNoteIndex = metadata.findIndex((meta) => meta.id === noteId.value);
168
+ if (existingNoteIndex === -1) {
169
+ metadata.push({
170
+ id: noteId.value,
171
+ timestamp: now.getTime()
172
+ });
173
+ metadata.sort((a, b) => b.timestamp - a.timestamp);
174
+ if (metadata.length > MAX_HISTORY_ITEMS) {
175
+ const itemsToRemove = metadata.splice(MAX_HISTORY_ITEMS);
176
+ for (const item of itemsToRemove) {
177
+ yield historyStore.removeItem(item.id);
178
+ }
179
+ }
180
+ yield historyStore.setItem(HISTORY_METADATA_KEY, metadata);
181
+ }
182
+ }), 1e4);
123
183
  nextTick(() => {
124
184
  var _a, _b;
125
185
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
@@ -130,6 +190,9 @@ var stdin_default = defineComponent({
130
190
  });
131
191
  onBeforeUnmount(() => {
132
192
  var _a, _b, _c;
193
+ if (saveIntervalId) {
194
+ clearInterval(saveIntervalId);
195
+ }
133
196
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
134
197
  if (editorElement) {
135
198
  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.27";
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.27";
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,47 @@ 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 saveIntervalId = null;
177
+ const noteId = (0, import_vue2.ref)("");
178
+ const historyStore = import_localforage.default.createInstance({
179
+ name: "RichTextEditorHistory",
180
+ storeName: "notes"
181
+ });
153
182
  (0, import_vue2.onMounted)(() => {
154
183
  initEditor();
184
+ const now = /* @__PURE__ */ new Date();
185
+ const formattedTime = `${now.toLocaleDateString()} ${now.toLocaleTimeString()}`;
186
+ noteId.value = `note-${now.getTime()}`;
187
+ const noteTitle = `\u7B14\u8BB0 at ${formattedTime}`;
188
+ saveIntervalId = setInterval(() => __async(this, null, function* () {
189
+ if (!editor.value || editor.value.isDestroyed || !editor.value.isEditable) {
190
+ return;
191
+ }
192
+ const content = editor.value.getHTML();
193
+ console.log("content: ", content);
194
+ yield historyStore.setItem(noteId.value, {
195
+ title: noteTitle,
196
+ content
197
+ });
198
+ let metadata = (yield historyStore.getItem(HISTORY_METADATA_KEY)) || [];
199
+ const existingNoteIndex = metadata.findIndex((meta) => meta.id === noteId.value);
200
+ if (existingNoteIndex === -1) {
201
+ metadata.push({
202
+ id: noteId.value,
203
+ timestamp: now.getTime()
204
+ });
205
+ metadata.sort((a, b) => b.timestamp - a.timestamp);
206
+ if (metadata.length > MAX_HISTORY_ITEMS) {
207
+ const itemsToRemove = metadata.splice(MAX_HISTORY_ITEMS);
208
+ for (const item of itemsToRemove) {
209
+ yield historyStore.removeItem(item.id);
210
+ }
211
+ }
212
+ yield historyStore.setItem(HISTORY_METADATA_KEY, metadata);
213
+ }
214
+ }), 1e4);
155
215
  (0, import_vue2.nextTick)(() => {
156
216
  var _a, _b;
157
217
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
@@ -162,6 +222,9 @@ var stdin_default = (0, import_vue2.defineComponent)({
162
222
  });
163
223
  (0, import_vue2.onBeforeUnmount)(() => {
164
224
  var _a, _b, _c;
225
+ if (saveIntervalId) {
226
+ clearInterval(saveIntervalId);
227
+ }
165
228
  const editorElement = (_b = (_a = editor.value) == null ? void 0 : _a.view) == null ? void 0 : _b.dom;
166
229
  if (editorElement) {
167
230
  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.28",
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",