@cimo/jsmvcfw 1.1.8 → 1.1.10

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.
Files changed (47) hide show
  1. package/README.md +2 -2
  2. package/dist/eslint.customRule.d.ts +20 -0
  3. package/dist/eslint.customRule.js +37 -0
  4. package/dist/eslint.customRule.js.map +1 -0
  5. package/dist/src/JsMvcFw.d.ts +13 -0
  6. package/dist/src/JsMvcFw.js +275 -0
  7. package/dist/src/JsMvcFw.js.map +1 -0
  8. package/dist/src/JsMvcFwDom.d.ts +3 -0
  9. package/dist/src/JsMvcFwDom.js +149 -0
  10. package/dist/src/JsMvcFwDom.js.map +1 -0
  11. package/dist/src/JsMvcFwEmitter.d.ts +6 -0
  12. package/dist/src/JsMvcFwEmitter.js +39 -0
  13. package/dist/src/JsMvcFwEmitter.js.map +1 -0
  14. package/dist/src/JsMvcFwForm.d.ts +1 -0
  15. package/dist/src/JsMvcFwForm.js +6 -0
  16. package/dist/src/JsMvcFwForm.js.map +1 -0
  17. package/dist/src/JsMvcFwInterface.d.ts +38 -0
  18. package/dist/{JsMvcFwInterface.js.map → src/JsMvcFwInterface.js.map} +1 -1
  19. package/dist/src/JsMvcFwJsx.d.ts +2 -0
  20. package/dist/src/JsMvcFwJsx.js +78 -0
  21. package/dist/src/JsMvcFwJsx.js.map +1 -0
  22. package/dist/src/JsMvcFwRouter.d.ts +3 -0
  23. package/dist/src/JsMvcFwRouter.js +107 -0
  24. package/dist/src/JsMvcFwRouter.js.map +1 -0
  25. package/dist/src/JsMvcFwStorage.d.ts +1 -0
  26. package/dist/src/JsMvcFwStorage.js +6 -0
  27. package/dist/src/JsMvcFwStorage.js.map +1 -0
  28. package/dist/src/Main.d.ts +8 -0
  29. package/dist/{Main.js → src/Main.js} +6 -2
  30. package/dist/src/Main.js.map +1 -0
  31. package/dist/tsconfig.tsbuildinfo +1 -0
  32. package/dist/tsconfig.tsc.tsbuildinfo +1 -0
  33. package/package.json +9 -7
  34. package/dist/JsMvcFw.d.ts +0 -16
  35. package/dist/JsMvcFw.js +0 -117
  36. package/dist/JsMvcFw.js.map +0 -1
  37. package/dist/JsMvcFwDom.d.ts +0 -2
  38. package/dist/JsMvcFwDom.js +0 -30
  39. package/dist/JsMvcFwDom.js.map +0 -1
  40. package/dist/JsMvcFwInterface.d.ts +0 -18
  41. package/dist/JsMvcFwRouter.d.ts +0 -3
  42. package/dist/JsMvcFwRouter.js +0 -126
  43. package/dist/JsMvcFwRouter.js.map +0 -1
  44. package/dist/Main.d.ts +0 -4
  45. package/dist/Main.js.map +0 -1
  46. package/dist/tsconfig.build.tsbuildinfo +0 -1
  47. /package/dist/{JsMvcFwInterface.js → src/JsMvcFwInterface.js} +0 -0
package/README.md CHANGED
@@ -5,8 +5,8 @@ Writed with native Typescript code and no dependencies are used.
5
5
 
6
6
  ## Pack
7
7
 
8
- 1. npm run pack
9
- 2. Copy the file "package_name-x.x.x.tgz" in the project root folder.
8
+ 1. npm run build
9
+ 2. Copy the file "/build/package_name-x.x.x.tgz" in the project root folder.
10
10
  3. In the "package.json" file insert: "@cimo/package_name": "file:package_name-x.x.x.tgz"
11
11
 
12
12
  ## Publish
@@ -0,0 +1,20 @@
1
+ import { TSESTree } from "@typescript-eslint/utils";
2
+ import { RuleContext } from "@typescript-eslint/utils/dist/ts-eslint";
3
+ export declare const rules: {
4
+ "disallow-array-for-object-type": {
5
+ meta: {
6
+ type: string;
7
+ docs: {
8
+ description: string;
9
+ recommended: boolean;
10
+ };
11
+ messages: {
12
+ disallowArrayForObjectType: string;
13
+ };
14
+ schema: never[];
15
+ };
16
+ create(context: RuleContext<"disallowArrayForObjectType", []>): {
17
+ TSArrayType(node: TSESTree.TSArrayType): void;
18
+ };
19
+ };
20
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rules = void 0;
4
+ const utils_1 = require("@typescript-eslint/utils");
5
+ exports.rules = {
6
+ "disallow-array-for-object-type": {
7
+ meta: {
8
+ type: "problem",
9
+ docs: {
10
+ description: "Disallow array for object type.",
11
+ recommended: false
12
+ },
13
+ messages: {
14
+ disallowArrayForObjectType: "Array for object type are disallowed."
15
+ },
16
+ schema: []
17
+ },
18
+ create(context) {
19
+ const parserServices = utils_1.ESLintUtils.getParserServices(context);
20
+ return {
21
+ TSArrayType(node) {
22
+ const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node.elementType);
23
+ const checker = parserServices.program.getTypeChecker();
24
+ const type = checker.getTypeAtLocation(tsNode);
25
+ const indexType = type.getStringIndexType();
26
+ if (indexType) {
27
+ context.report({
28
+ node,
29
+ messageId: "disallowArrayForObjectType"
30
+ });
31
+ }
32
+ }
33
+ };
34
+ }
35
+ }
36
+ };
37
+ //# sourceMappingURL=eslint.customRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.customRule.js","sourceRoot":"","sources":["../eslint.customRule.ts"],"names":[],"mappings":";;;AAAA,oDAAiE;AAGpD,QAAA,KAAK,GAAG;IACjB,gCAAgC,EAAE;QAC9B,IAAI,EAAE;YACF,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACF,WAAW,EAAE,iCAAiC;gBAC9C,WAAW,EAAE,KAAK;aACrB;YACD,QAAQ,EAAE;gBACN,0BAA0B,EAAE,uCAAuC;aACtE;YACD,MAAM,EAAE,EAAE;SACb;QACD,MAAM,CAAC,OAAsD;YACzD,MAAM,cAAc,GAAG,mBAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE9D,OAAO;gBACH,WAAW,CAAC,IAA0B;oBAClC,MAAM,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1E,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;oBACxD,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5C,IAAI,SAAS,EAAE,CAAC;wBACZ,OAAO,CAAC,MAAM,CAAC;4BACX,IAAI;4BACJ,SAAS,EAAE,4BAA4B;yBAC1C,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;aACJ,CAAC;QACN,CAAC;KACJ;CACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { IvariableBind, IvariableHook, Icontroller } from "./JsMvcFwInterface";
2
+ export declare const getIsDebug: () => boolean;
3
+ export declare const getElementRoot: () => HTMLElement | null;
4
+ export declare const getUrlRoot: () => string;
5
+ export declare const getControllerList: () => {
6
+ parent: Icontroller;
7
+ childrenList: Icontroller[];
8
+ }[];
9
+ export declare const frameworkInit: (isDebugValue: boolean, elementRootId: string, urlRootValue: string) => void;
10
+ export declare const renderTemplate: (controllerValue: Icontroller, controllerParent?: Icontroller, callback?: () => void) => void;
11
+ export declare const renderAfter: (controller: Icontroller) => Promise<void>;
12
+ export declare const variableHook: <T>(label: string, stateValue: T, controllerName: string) => IvariableHook<T>;
13
+ export declare const variableBind: <T extends Record<string, unknown>>(variableObject: T, controllerName: string) => { [A in keyof T]: IvariableBind<T[A]>; };
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.variableBind = exports.variableHook = exports.renderAfter = exports.renderTemplate = exports.frameworkInit = exports.getControllerList = exports.getUrlRoot = exports.getElementRoot = exports.getIsDebug = void 0;
7
+ const JsMvcFwDom_1 = require("./JsMvcFwDom");
8
+ const JsMvcFwEmitter_1 = __importDefault(require("./JsMvcFwEmitter"));
9
+ let isDebug = false;
10
+ let elementRoot = null;
11
+ let urlRoot = "";
12
+ const virtualNodeObject = {};
13
+ const renderTriggerObject = {};
14
+ const variableLoadedList = {};
15
+ const variableEditedList = {};
16
+ const variableRenderUpdateObject = {};
17
+ const variableHookObject = {};
18
+ const controllerList = [];
19
+ const cacheVariableProxyWeakMap = new WeakMap();
20
+ const emitterObject = {};
21
+ const variableRenderUpdate = (controllerName) => {
22
+ if (!variableRenderUpdateObject[controllerName]) {
23
+ variableRenderUpdateObject[controllerName] = true;
24
+ Promise.resolve().then(() => {
25
+ const renderTrigger = renderTriggerObject[controllerName];
26
+ if (renderTrigger) {
27
+ renderTrigger();
28
+ }
29
+ emitterObject[controllerName].emit("variableChanged");
30
+ variableRenderUpdateObject[controllerName] = false;
31
+ });
32
+ }
33
+ };
34
+ const variableProxy = (stateLabel, stateValue, controllerName) => {
35
+ if (typeof stateValue !== "object" || stateValue === null) {
36
+ return stateValue;
37
+ }
38
+ const cache = cacheVariableProxyWeakMap.get(stateValue);
39
+ if (cache) {
40
+ return cache;
41
+ }
42
+ const proxy = new Proxy(stateValue, {
43
+ get(target, property, receiver) {
44
+ const result = Reflect.get(target, property, receiver);
45
+ if (typeof result === "object" && result !== null) {
46
+ return variableProxy(stateLabel, result, controllerName);
47
+ }
48
+ return result;
49
+ },
50
+ set(target, property, newValue, receiver) {
51
+ if (!variableEditedList[controllerName].includes(stateLabel)) {
52
+ variableEditedList[controllerName].push(stateLabel);
53
+ }
54
+ const isSuccess = Reflect.set(target, property, newValue, receiver);
55
+ if (isSuccess) {
56
+ variableRenderUpdate(controllerName);
57
+ }
58
+ return isSuccess;
59
+ },
60
+ deleteProperty(target, property) {
61
+ if (!variableEditedList[controllerName].includes(stateLabel)) {
62
+ variableEditedList[controllerName].push(stateLabel);
63
+ }
64
+ const isSuccess = Reflect.deleteProperty(target, property);
65
+ if (isSuccess) {
66
+ variableRenderUpdate(controllerName);
67
+ }
68
+ return isSuccess;
69
+ }
70
+ });
71
+ cacheVariableProxyWeakMap.set(stateValue, proxy);
72
+ return proxy;
73
+ };
74
+ const variableBindItem = (label, stateValue, controllerName) => {
75
+ let _state = variableProxy(label, stateValue, controllerName);
76
+ let _listener = null;
77
+ return {
78
+ get state() {
79
+ return _state;
80
+ },
81
+ set state(value) {
82
+ if (!variableEditedList[controllerName].includes(label)) {
83
+ variableEditedList[controllerName].push(label);
84
+ }
85
+ _state = variableProxy(label, value, controllerName);
86
+ if (_listener) {
87
+ _listener(_state);
88
+ }
89
+ variableRenderUpdate(controllerName);
90
+ },
91
+ listener(callback) {
92
+ _listener = callback;
93
+ }
94
+ };
95
+ };
96
+ const variableWatch = (controllerName, callback) => {
97
+ if (!emitterObject[controllerName]) {
98
+ emitterObject[controllerName] = new JsMvcFwEmitter_1.default();
99
+ }
100
+ const emitter = emitterObject[controllerName];
101
+ emitter.on("variableChanged", () => {
102
+ const editedList = variableEditedList[controllerName] || [];
103
+ callback((groupObject) => {
104
+ for (const group of groupObject) {
105
+ let isAllEdited = true;
106
+ for (let b = 0; b < group.list.length; b++) {
107
+ const key = group.list[b];
108
+ if (editedList.indexOf(key) === -1) {
109
+ isAllEdited = false;
110
+ break;
111
+ }
112
+ }
113
+ if (isAllEdited) {
114
+ group.action();
115
+ for (const key of group.list) {
116
+ const index = editedList.indexOf(key);
117
+ if (index !== -1) {
118
+ editedList.splice(index, 1);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ variableEditedList[controllerName] = editedList;
124
+ });
125
+ });
126
+ };
127
+ const getIsDebug = () => isDebug;
128
+ exports.getIsDebug = getIsDebug;
129
+ const getElementRoot = () => elementRoot;
130
+ exports.getElementRoot = getElementRoot;
131
+ const getUrlRoot = () => urlRoot;
132
+ exports.getUrlRoot = getUrlRoot;
133
+ const getControllerList = () => controllerList;
134
+ exports.getControllerList = getControllerList;
135
+ const frameworkInit = (isDebugValue, elementRootId, urlRootValue) => {
136
+ isDebug = isDebugValue;
137
+ elementRoot = document.getElementById(elementRootId);
138
+ urlRoot = urlRootValue;
139
+ };
140
+ exports.frameworkInit = frameworkInit;
141
+ const renderTemplate = (controllerValue, controllerParent, callback) => {
142
+ const controllerName = controllerValue.constructor.name;
143
+ if (!controllerParent) {
144
+ controllerList.push({ parent: controllerValue, childrenList: [] });
145
+ }
146
+ else {
147
+ for (const controller of controllerList) {
148
+ if (controllerParent.constructor.name === controller.parent.constructor.name) {
149
+ controller.childrenList.push(controllerValue);
150
+ break;
151
+ }
152
+ }
153
+ }
154
+ controllerValue.variable();
155
+ const renderTrigger = () => {
156
+ const virtualNodeNew = controllerValue.view();
157
+ if (!virtualNodeNew || typeof virtualNodeNew !== "object" || !virtualNodeNew.tag) {
158
+ throw new Error(`@cimo/jsmvcfw - JsMvcFw.ts - renderTrigger() => Invalid virtual node returned by controller "${controllerName}"!`);
159
+ }
160
+ let elementContainer = null;
161
+ if (!controllerParent) {
162
+ if (!elementRoot) {
163
+ throw new Error("@cimo/jsmvcfw - JsMvcFw.ts - renderTrigger() => Root element #jsmvcfw_app not found!");
164
+ }
165
+ elementContainer = elementRoot;
166
+ }
167
+ else {
168
+ const parentContainer = document.querySelector(`[data-jsmvcfw-controllerName="${controllerParent.constructor.name}"]`);
169
+ if (!parentContainer) {
170
+ throw new Error(`@cimo/jsmvcfw - JsMvcFw.ts - renderTrigger() => Tag data-jsmvcfw-controllerName="${controllerParent.constructor.name}" not found!`);
171
+ }
172
+ elementContainer = parentContainer.querySelector(`[data-jsmvcfw-controllerName="${controllerName}"]`);
173
+ if (!elementContainer) {
174
+ throw new Error(`@cimo/jsmvcfw - JsMvcFw.ts - renderTrigger() => Tag data-jsmvcfw-controllerName="${controllerName}" not found inside data-jsmvcfw-controllerName="${controllerParent.constructor.name}"!`);
175
+ }
176
+ }
177
+ const virtualNodeOld = virtualNodeObject[controllerName];
178
+ if (!virtualNodeOld) {
179
+ if (elementContainer) {
180
+ const elementVirtualNode = (0, JsMvcFwDom_1.createVirtualNode)(virtualNodeNew);
181
+ elementContainer.innerHTML = "";
182
+ elementContainer.appendChild(elementVirtualNode);
183
+ if (callback) {
184
+ callback();
185
+ }
186
+ }
187
+ }
188
+ else {
189
+ if (elementContainer) {
190
+ const elementFirstChild = elementContainer.firstElementChild;
191
+ if (elementFirstChild) {
192
+ (0, JsMvcFwDom_1.updateVirtualNode)(elementFirstChild, virtualNodeOld, virtualNodeNew);
193
+ }
194
+ }
195
+ }
196
+ virtualNodeObject[controllerName] = virtualNodeNew;
197
+ };
198
+ renderTriggerObject[controllerName] = renderTrigger;
199
+ renderTrigger();
200
+ if (controllerValue.subControllerList) {
201
+ const subControllerList = controllerValue.subControllerList();
202
+ for (const subController of subControllerList) {
203
+ (0, exports.renderTemplate)(subController, controllerValue, () => {
204
+ subController.event();
205
+ (0, exports.renderAfter)(subController).then(() => {
206
+ subController.rendered();
207
+ });
208
+ });
209
+ }
210
+ }
211
+ variableWatch(controllerName, (watch) => {
212
+ controllerValue.variableEffect.call(controllerValue, watch);
213
+ });
214
+ };
215
+ exports.renderTemplate = renderTemplate;
216
+ const renderAfter = (controller) => {
217
+ return new Promise((resolve) => {
218
+ const check = () => {
219
+ const controllerName = controller.constructor.name;
220
+ const variableLoadedLength = variableLoadedList[controllerName].length;
221
+ const isRendering = variableRenderUpdateObject[controllerName];
222
+ if (variableLoadedLength > 0 && !isRendering) {
223
+ resolve();
224
+ }
225
+ else {
226
+ Promise.resolve().then(check);
227
+ }
228
+ };
229
+ check();
230
+ });
231
+ };
232
+ exports.renderAfter = renderAfter;
233
+ const variableHook = (label, stateValue, controllerName) => {
234
+ if (!(controllerName in variableHookObject)) {
235
+ if (!variableLoadedList[controllerName]) {
236
+ variableLoadedList[controllerName] = [];
237
+ variableEditedList[controllerName] = [];
238
+ }
239
+ if (variableLoadedList[controllerName].includes(label)) {
240
+ throw new Error(`@cimo/jsmvcfw - JsMvcFw.ts - variableHook() => The method variableHook use existing label "${label}"!`);
241
+ }
242
+ variableLoadedList[controllerName].push(label);
243
+ variableHookObject[controllerName] = variableProxy(label, stateValue, controllerName);
244
+ }
245
+ return {
246
+ state: variableHookObject[controllerName],
247
+ setState: (value) => {
248
+ if (!variableEditedList[controllerName].includes(label)) {
249
+ variableEditedList[controllerName].push(label);
250
+ }
251
+ variableHookObject[controllerName] = variableProxy(label, value, controllerName);
252
+ variableRenderUpdate(controllerName);
253
+ }
254
+ };
255
+ };
256
+ exports.variableHook = variableHook;
257
+ const variableBind = (variableObject, controllerName) => {
258
+ const result = {};
259
+ if (!variableLoadedList[controllerName]) {
260
+ variableLoadedList[controllerName] = [];
261
+ variableEditedList[controllerName] = [];
262
+ }
263
+ for (const key in variableObject) {
264
+ if (Object.prototype.hasOwnProperty.call(variableObject, key)) {
265
+ if (variableLoadedList[controllerName].includes(key)) {
266
+ throw new Error(`@cimo/jsmvcfw - JsMvcFw.ts - variableBind() => The method variableBind use existing label "${key}"!`);
267
+ }
268
+ variableLoadedList[controllerName].push(key);
269
+ result[key] = variableBindItem(key, variableObject[key], controllerName);
270
+ }
271
+ }
272
+ return result;
273
+ };
274
+ exports.variableBind = variableBind;
275
+ //# sourceMappingURL=JsMvcFw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsMvcFw.js","sourceRoot":"","sources":["../../src/JsMvcFw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { IvirtualNode } from "./JsMvcFwInterface";
2
+ export declare const createVirtualNode: (node: IvirtualNode) => HTMLElement;
3
+ export declare const updateVirtualNode: (element: Element, nodeOld: IvirtualNode, nodeNew: IvirtualNode) => void;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateVirtualNode = exports.createVirtualNode = void 0;
4
+ const applyProperty = (element, key, valueNew, valueOld) => {
5
+ if (key.startsWith("on") && typeof valueNew === "function") {
6
+ const eventName = key.slice(2).toLowerCase();
7
+ if (typeof valueOld === "function") {
8
+ element.removeEventListener(eventName, valueOld);
9
+ }
10
+ element.addEventListener(eventName, valueNew);
11
+ }
12
+ else if (typeof valueNew === "boolean") {
13
+ valueNew ? element.setAttribute(key, "") : element.removeAttribute(key);
14
+ }
15
+ else if (typeof valueNew === "string" || typeof valueNew === "number") {
16
+ element.setAttribute(key, valueNew.toString());
17
+ }
18
+ else if (Array.isArray(valueNew)) {
19
+ let stringValue = "";
20
+ for (const value of valueNew) {
21
+ if (typeof value === "string") {
22
+ stringValue += value + " ";
23
+ }
24
+ }
25
+ element.setAttribute(key, stringValue.trim());
26
+ }
27
+ else if (valueNew == null) {
28
+ element.removeAttribute(key);
29
+ }
30
+ };
31
+ const updateProperty = (element, oldList, newList) => {
32
+ for (const key in oldList) {
33
+ if (!(key in newList)) {
34
+ if (key.startsWith("on") && typeof oldList[key] === "function") {
35
+ element.removeEventListener(key.slice(2).toLowerCase(), oldList[key]);
36
+ }
37
+ else {
38
+ element.removeAttribute(key);
39
+ }
40
+ }
41
+ }
42
+ for (const [key, value] of Object.entries(newList)) {
43
+ const valueOld = oldList[key];
44
+ if (value !== valueOld) {
45
+ applyProperty(element, key, value, valueOld);
46
+ }
47
+ }
48
+ };
49
+ const updateChildren = (element, nodeOldListValue, nodeNewListValue) => {
50
+ const nodeOldList = Array.isArray(nodeOldListValue) ? nodeOldListValue : [];
51
+ const nodeNewList = Array.isArray(nodeNewListValue) ? nodeNewListValue : [];
52
+ const keyOldObject = {};
53
+ for (let a = 0; a < nodeOldList.length; a++) {
54
+ const node = nodeOldList[a];
55
+ if (typeof node === "object" && node.key) {
56
+ keyOldObject[node.key] = { node, dom: element.childNodes[a] };
57
+ }
58
+ }
59
+ const nodeMaxLength = Math.max(nodeOldList.length, nodeNewList.length);
60
+ for (let a = 0; a < nodeMaxLength; a++) {
61
+ const nodeOld = nodeOldList[a];
62
+ const nodeNew = nodeNewList[a];
63
+ const nodeDom = element.childNodes[a];
64
+ if (!nodeNew && nodeDom) {
65
+ const isControllerName = nodeDom.nodeType === Node.ELEMENT_NODE && nodeDom.hasAttribute("data-jsmvcfw-controllername");
66
+ if (!isControllerName) {
67
+ element.removeChild(nodeDom);
68
+ }
69
+ continue;
70
+ }
71
+ if (typeof nodeNew === "string") {
72
+ if (!nodeDom) {
73
+ element.appendChild(document.createTextNode(nodeNew));
74
+ }
75
+ else if (nodeDom.nodeType === Node.TEXT_NODE) {
76
+ if (nodeDom.textContent !== nodeNew) {
77
+ nodeDom.textContent = nodeNew;
78
+ }
79
+ }
80
+ else {
81
+ element.replaceChild(document.createTextNode(nodeNew), nodeDom);
82
+ }
83
+ }
84
+ else if (typeof nodeNew === "object") {
85
+ const isControllerName = nodeDom?.nodeType === Node.ELEMENT_NODE && nodeDom.hasAttribute("data-jsmvcfw-controllername");
86
+ if (isControllerName && !nodeNew.key) {
87
+ continue;
88
+ }
89
+ if (nodeNew.key && keyOldObject[nodeNew.key]) {
90
+ const { node, dom } = keyOldObject[nodeNew.key];
91
+ (0, exports.updateVirtualNode)(dom, node, nodeNew);
92
+ if (nodeDom !== dom) {
93
+ element.insertBefore(dom, nodeDom);
94
+ }
95
+ }
96
+ else if (typeof nodeOld === "object" && nodeOld.tag === nodeNew.tag && nodeDom) {
97
+ (0, exports.updateVirtualNode)(nodeDom, nodeOld, nodeNew);
98
+ }
99
+ else {
100
+ const domNew = (0, exports.createVirtualNode)(nodeNew);
101
+ if (nodeDom) {
102
+ element.replaceChild(domNew, nodeDom);
103
+ }
104
+ else {
105
+ element.appendChild(domNew);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ while (element.childNodes.length > nodeNewList.length) {
111
+ const nodeExtra = element.childNodes[nodeNewList.length];
112
+ const isControllerName = nodeExtra.nodeType === Node.ELEMENT_NODE && nodeExtra.hasAttribute("data-jsmvcfw-controllername");
113
+ if (!isControllerName) {
114
+ element.removeChild(nodeExtra);
115
+ }
116
+ else {
117
+ break;
118
+ }
119
+ }
120
+ };
121
+ const createVirtualNode = (node) => {
122
+ const element = document.createElement(node.tag);
123
+ for (const [key, value] of Object.entries(node.propertyObject || {})) {
124
+ applyProperty(element, key, value);
125
+ }
126
+ if (Array.isArray(node.childrenList)) {
127
+ for (const child of node.childrenList) {
128
+ if (typeof child === "string") {
129
+ element.appendChild(document.createTextNode(child));
130
+ }
131
+ else {
132
+ element.appendChild((0, exports.createVirtualNode)(child));
133
+ }
134
+ }
135
+ }
136
+ return element;
137
+ };
138
+ exports.createVirtualNode = createVirtualNode;
139
+ const updateVirtualNode = (element, nodeOld, nodeNew) => {
140
+ if (nodeOld.tag !== nodeNew.tag) {
141
+ const elementNew = (0, exports.createVirtualNode)(nodeNew);
142
+ element.replaceWith(elementNew);
143
+ return;
144
+ }
145
+ updateProperty(element, nodeOld.propertyObject || {}, nodeNew.propertyObject || {});
146
+ updateChildren(element, nodeOld.childrenList, nodeNew.childrenList);
147
+ };
148
+ exports.updateVirtualNode = updateVirtualNode;
149
+ //# sourceMappingURL=JsMvcFwDom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsMvcFwDom.js","sourceRoot":"","sources":["../../src/JsMvcFwDom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export default class Emitter<Events extends Record<string, unknown>> {
2
+ private listenerObject;
3
+ on<K extends keyof Events>(event: K, listener: (payload: Events[K]) => void): void;
4
+ emit<K extends keyof Events>(event: K, ...[payload]: Events[K] extends undefined ? [] : [Events[K]]): void;
5
+ off<K extends keyof Events>(event: K, listener: (payload: Events[K]) => void, isRemoveAll?: boolean): void;
6
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Emitter {
4
+ listenerObject = {};
5
+ on(event, listener) {
6
+ if (!this.listenerObject[event]) {
7
+ this.listenerObject[event] = [];
8
+ }
9
+ this.listenerObject[event].push(listener);
10
+ }
11
+ emit(event, ...[payload]) {
12
+ const listenerEventList = this.listenerObject[event];
13
+ if (listenerEventList) {
14
+ for (const listener of listenerEventList) {
15
+ listener(payload);
16
+ }
17
+ }
18
+ }
19
+ off(event, listener, isRemoveAll = false) {
20
+ const listenerEventList = this.listenerObject[event];
21
+ if (listenerEventList) {
22
+ if (isRemoveAll) {
23
+ for (let a = listenerEventList.length - 1; a >= 0; a--) {
24
+ if (listenerEventList[a] === listener) {
25
+ listenerEventList.splice(a, 1);
26
+ }
27
+ }
28
+ }
29
+ else {
30
+ const index = listenerEventList.indexOf(listener);
31
+ if (index !== -1) {
32
+ listenerEventList.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ exports.default = Emitter;
39
+ //# sourceMappingURL=JsMvcFwEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsMvcFwEmitter.js","sourceRoot":"","sources":["../../src/JsMvcFwEmitter.ts"],"names":[],"mappings":";;AAAA,MAAqB,OAAO;IAChB,cAAc,GAElB,EAAE,CAAC;IAEP,EAAE,CAAyB,KAAQ,EAAE,QAAsC;QACvE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAyB,KAAQ,EAAE,GAAG,CAAC,OAAO,CAAiD;QAC/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,iBAAiB,EAAE,CAAC;YACpB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;gBACvC,QAAQ,CAAC,OAAoB,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED,GAAG,CAAyB,KAAQ,EAAE,QAAsC,EAAE,cAAuB,KAAK;QACtG,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,iBAAiB,EAAE,CAAC;YACpB,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACpC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnC,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAElD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AA1CD,0BA0CC"}
@@ -0,0 +1 @@
1
+ export declare const formHook: () => void;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formHook = void 0;
4
+ const formHook = () => { };
5
+ exports.formHook = formHook;
6
+ //# sourceMappingURL=JsMvcFwForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsMvcFwForm.js","sourceRoot":"","sources":["../../src/JsMvcFwForm.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAApB,QAAA,QAAQ,YAAY"}
@@ -0,0 +1,38 @@
1
+ export interface IvirtualNode {
2
+ tag: string;
3
+ propertyObject: {
4
+ [key: string]: TvirtualNodeProperty;
5
+ };
6
+ childrenList: Array<IvirtualNode | string>;
7
+ key?: string;
8
+ }
9
+ export interface IvariableBind<T> {
10
+ state: T;
11
+ listener(callback: (value: T) => void): void;
12
+ }
13
+ export interface IvariableHook<T> {
14
+ state: T;
15
+ setState: (value: T) => void;
16
+ }
17
+ export interface IvariableEffect {
18
+ (groupObject: {
19
+ list: string[];
20
+ action: () => void;
21
+ }[]): void;
22
+ }
23
+ export interface Icontroller {
24
+ variable(): void;
25
+ variableEffect(watch: IvariableEffect): void;
26
+ view(): IvirtualNode;
27
+ event(): void;
28
+ subControllerList(): Icontroller[];
29
+ rendered(): void;
30
+ destroy(): void;
31
+ }
32
+ export interface Irouter {
33
+ title: string;
34
+ path: string;
35
+ controller(): Icontroller;
36
+ }
37
+ export type TvirtualNodeProperty = string | number | boolean | (string | IvirtualNode)[] | ((event: Event) => void) | null | undefined;
38
+ export type TvirtualNodeChildren = IvirtualNode | string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"JsMvcFwInterface.js","sourceRoot":"","sources":["../src/JsMvcFwInterface.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"JsMvcFwInterface.js","sourceRoot":"","sources":["../../src/JsMvcFwInterface.ts"],"names":[],"mappings":""}