kt.js 0.13.0 → 0.13.2

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.
@@ -48,22 +48,22 @@ if (typeof Promise === 'undefined') {
48
48
  }
49
49
  const $isThenable = (o) => typeof o === 'object' && o !== null && typeof o.then === 'function';
50
50
 
51
- function booleanHandler(element, key, value) {
51
+ const booleanHandler = (element, key, value) => {
52
52
  if (key in element) {
53
53
  element[key] = !!value;
54
54
  }
55
55
  else {
56
56
  element.setAttribute(key, value);
57
57
  }
58
- }
59
- function valueHandler(element, key, value) {
58
+ };
59
+ const valueHandler = (element, key, value) => {
60
60
  if (key in element) {
61
61
  element[key] = value;
62
62
  }
63
63
  else {
64
64
  element.setAttribute(key, value);
65
65
  }
66
- }
66
+ };
67
67
  // Attribute handlers map for optimized lookup
68
68
  const handlers = {
69
69
  checked: booleanHandler,
@@ -86,13 +86,18 @@ const handlers = {
86
86
  muted: booleanHandler,
87
87
  defer: booleanHandler,
88
88
  async: booleanHandler,
89
- hidden: function (element, _key, value) {
90
- element.hidden = !!value;
91
- },
89
+ hidden: (element, _key, value) => (element.hidden = !!value),
92
90
  };
93
- const defaultHandler = function (element, key, value) {
94
- return element.setAttribute(key, value);
91
+ const ktEventHandlers = {
92
+ 'on:ktchange': (element, handler) => element.addEventListener('change', () => handler(element.value)),
93
+ 'ontrim:ktchange': (element, handler) => element.addEventListener('change', () => handler(element.value.trim())),
94
+ 'on:ktchangenumber': (element, handler) => element.addEventListener('change', () => handler(Number(element.value))),
95
+ 'on:ktinput': (element, handler) => element.addEventListener('input', () => handler(element.value)),
96
+ 'ontrim:ktinput': (element, handler) => element.addEventListener('input', () => handler(element.value.trim())),
97
+ 'on:ktinputnumber': (element, handler) => element.addEventListener('input', () => handler(Number(element.value))),
95
98
  };
99
+
100
+ const defaultHandler = (element, key, value) => element.setAttribute(key, value);
96
101
  function attrIsObject(element, attr) {
97
102
  const classValue = attr.class;
98
103
  const style = attr.style;
@@ -112,11 +117,19 @@ function attrIsObject(element, attr) {
112
117
  delete attr.style;
113
118
  }
114
119
  const keys = $keys(attr);
120
+ // todo 这里的处理每次遍历都要if所有的情况,能否用map或者对象来优化?
115
121
  for (let i = keys.length - 1; i >= 0; i--) {
116
122
  const key = keys[i];
117
123
  const o = attr[key];
118
124
  // force register on:xxx as an event handler
119
125
  // !if o is not valid, the throwing job will be done by `on`, not kt.js
126
+ // # special handling for kt.js specific events
127
+ const ktEvent = ktEventHandlers[key];
128
+ if (ktEvent) {
129
+ ktEvent(element, o);
130
+ continue;
131
+ }
132
+ // # normal event handler
120
133
  if (key.startsWith('on:')) {
121
134
  element.addEventListener(key.slice(3), o); // chop off the `@`
122
135
  continue;
@@ -203,7 +216,7 @@ function applyContent(element, content) {
203
216
  * ## About
204
217
  * @package @ktjs/core
205
218
  * @author Kasukabe Tsumugi <futami16237@gmail.com>
206
- * @version 0.13.0 (Last Update: 2026.01.15 16:05:51.084)
219
+ * @version 0.13.2 (Last Update: 2026.01.16 19:38:40.621)
207
220
  * @license MIT
208
221
  * @link https://github.com/baendlorel/kt.js
209
222
  * @link https://baendlorel.github.io/ Welcome to my site!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kt.js",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "author": {
5
5
  "name": "Kasukabe Tsumugi",
6
6
  "email": "futami16237@gmail.com"
@@ -41,8 +41,8 @@
41
41
  ],
42
42
  "license": "MIT",
43
43
  "dependencies": {
44
- "@ktjs/core": "0.13.0",
45
- "@ktjs/shortcuts": "0.7.3"
44
+ "@ktjs/shortcuts": "0.7.3",
45
+ "@ktjs/core": "0.13.2"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "rollup -c rollup.config.mjs",