@ktjs/core 0.19.1 → 0.20.1
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/README.md +2 -3
- package/dist/index.d.ts +224 -181
- package/dist/index.iife.js +39 -50
- package/dist/index.legacy.js +42 -85
- package/dist/index.mjs +40 -50
- package/dist/jsx/index.d.ts +203 -161
- package/dist/jsx/index.mjs +40 -50
- package/dist/jsx/jsx-runtime.d.ts +11 -1197
- package/dist/jsx/jsx-runtime.mjs +40 -50
- package/package.json +2 -2
package/dist/index.legacy.js
CHANGED
|
@@ -11,6 +11,7 @@ var __ktjs_core__ = (function (exports) {
|
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
// DOM manipulation utilities
|
|
14
|
+
// # dom natives
|
|
14
15
|
/**
|
|
15
16
|
* & Remove `bind` because it is shockingly slower than wrapper
|
|
16
17
|
* & `window.document` is safe because it is not configurable and its setter is undefined
|
|
@@ -46,10 +47,11 @@ var __ktjs_core__ = (function (exports) {
|
|
|
46
47
|
$appendChild.call(this, fragment);
|
|
47
48
|
}
|
|
48
49
|
};
|
|
50
|
+
const { get: $buttonDisabledGetter, set: $buttonDisabledSetter } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
|
|
49
51
|
|
|
50
52
|
// Shared utilities and cached native methods for kt.js framework
|
|
51
53
|
// Re-export all utilities
|
|
52
|
-
Object.defineProperty(window, '@ktjs/shared', { value: '0.
|
|
54
|
+
Object.defineProperty(window, '@ktjs/shared', { value: '0.20.0' });
|
|
53
55
|
|
|
54
56
|
var booleanHandler = function (element, key, value) {
|
|
55
57
|
if (key in element) {
|
|
@@ -92,7 +94,9 @@ var __ktjs_core__ = (function (exports) {
|
|
|
92
94
|
hidden: function (element, _key, value) { return (element.hidden = !!value); },
|
|
93
95
|
};
|
|
94
96
|
|
|
95
|
-
var defaultHandler = function (element, key, value) {
|
|
97
|
+
var defaultHandler = function (element, key, value) {
|
|
98
|
+
return element.setAttribute(key, value);
|
|
99
|
+
};
|
|
96
100
|
function attrIsObject(element, attr) {
|
|
97
101
|
var classValue = attr.class || attr.className;
|
|
98
102
|
if (classValue !== undefined) {
|
|
@@ -195,7 +199,14 @@ var __ktjs_core__ = (function (exports) {
|
|
|
195
199
|
}
|
|
196
200
|
}
|
|
197
201
|
|
|
198
|
-
|
|
202
|
+
document.createElement('div');
|
|
203
|
+
var htmlCreator = function (tag) { return document.createElement(tag); };
|
|
204
|
+
var svgCreator = function (tag) { return document.createElementNS('http://www.w3.org/2000/svg', tag); };
|
|
205
|
+
var mathMLCreator = function (tag) { return document.createElementNS('http://www.w3.org/1998/Math/MathML', tag); };
|
|
206
|
+
var creator = htmlCreator;
|
|
207
|
+
// # consts
|
|
208
|
+
var SVG_ATTR_FLAG = '__kt_svg__';
|
|
209
|
+
var MATHML_ATTR_FLAG = '__kt_mathml__';
|
|
199
210
|
/**
|
|
200
211
|
* Create an enhanced HTMLElement.
|
|
201
212
|
* - Only supports HTMLElements, **NOT** SVGElements or other Elements.
|
|
@@ -206,7 +217,7 @@ var __ktjs_core__ = (function (exports) {
|
|
|
206
217
|
* ## About
|
|
207
218
|
* @package @ktjs/core
|
|
208
219
|
* @author Kasukabe Tsumugi <futami16237@gmail.com>
|
|
209
|
-
* @version 0.
|
|
220
|
+
* @version 0.20.1 (Last Update: 2026.02.01 16:38:49.148)
|
|
210
221
|
* @license MIT
|
|
211
222
|
* @link https://github.com/baendlorel/kt.js
|
|
212
223
|
* @link https://baendlorel.github.io/ Welcome to my site!
|
|
@@ -217,51 +228,35 @@ var __ktjs_core__ = (function (exports) {
|
|
|
217
228
|
if (typeof tag !== 'string') {
|
|
218
229
|
$throw('tagName must be a string.');
|
|
219
230
|
}
|
|
231
|
+
if (attr) {
|
|
232
|
+
if (SVG_ATTR_FLAG in attr) {
|
|
233
|
+
delete attr[SVG_ATTR_FLAG];
|
|
234
|
+
creator = svgCreator;
|
|
235
|
+
}
|
|
236
|
+
else if (MATHML_ATTR_FLAG in attr) {
|
|
237
|
+
delete attr[MATHML_ATTR_FLAG];
|
|
238
|
+
creator = mathMLCreator;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
creator = htmlCreator;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
220
244
|
// * start creating the element
|
|
221
|
-
var element =
|
|
245
|
+
var element = creator(tag);
|
|
222
246
|
// * Handle content
|
|
223
247
|
applyAttr(element, attr);
|
|
224
248
|
applyContent(element, content);
|
|
225
|
-
if (tag === 'svg') {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
249
|
+
// if (tag === 'svg') {
|
|
250
|
+
// tempWrapper.innerHTML = element.outerHTML;
|
|
251
|
+
// return tempWrapper.firstChild as HTML<T>;
|
|
252
|
+
// }
|
|
253
|
+
// if (tag === 'math') {
|
|
254
|
+
// tempWrapper.innerHTML = element.outerHTML;
|
|
255
|
+
// return tempWrapper.firstChild as HTML<T>;
|
|
256
|
+
// }
|
|
229
257
|
return element;
|
|
230
258
|
};
|
|
231
259
|
|
|
232
|
-
/******************************************************************************
|
|
233
|
-
Copyright (c) Microsoft Corporation.
|
|
234
|
-
|
|
235
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
236
|
-
purpose with or without fee is hereby granted.
|
|
237
|
-
|
|
238
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
239
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
240
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
241
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
242
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
243
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
244
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
245
|
-
***************************************************************************** */
|
|
246
|
-
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
var __assign = function() {
|
|
250
|
-
__assign = Object.assign || function __assign(t) {
|
|
251
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
252
|
-
s = arguments[i];
|
|
253
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
254
|
-
}
|
|
255
|
-
return t;
|
|
256
|
-
};
|
|
257
|
-
return __assign.apply(this, arguments);
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
261
|
-
var e = new Error(message);
|
|
262
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
263
|
-
};
|
|
264
|
-
|
|
265
260
|
var KTRef = /** @class */ (function () {
|
|
266
261
|
function KTRef(_value, _onChanges) {
|
|
267
262
|
/**
|
|
@@ -327,22 +322,13 @@ var __ktjs_core__ = (function (exports) {
|
|
|
327
322
|
* @param props properties/attributes
|
|
328
323
|
*/
|
|
329
324
|
function jsx(tag, props) {
|
|
330
|
-
var _a
|
|
331
|
-
if (props === void 0) { props = {}; }
|
|
325
|
+
var _a;
|
|
332
326
|
var ref = ((_a = props.ref) === null || _a === void 0 ? void 0 : _a.isKT) ? props.ref : dummyRef;
|
|
333
327
|
var el;
|
|
334
|
-
var redraw = function (newProps) {
|
|
335
|
-
props = newProps ? __assign(__assign({}, props), newProps) : props;
|
|
336
|
-
el = jsx(tag, props);
|
|
337
|
-
if (ref !== dummyRef) {
|
|
338
|
-
ref.value = el; // & ref setter automatically replaces old element in DOM
|
|
339
|
-
}
|
|
340
|
-
return el;
|
|
341
|
-
};
|
|
342
328
|
if ('k-if' in props && !props['k-if']) {
|
|
329
|
+
// & make comment placeholder in case that ref might be redrawn later
|
|
343
330
|
el = document.createComment('k-if');
|
|
344
|
-
ref.value = el;
|
|
345
|
-
el.redraw = redraw;
|
|
331
|
+
ref.value = el;
|
|
346
332
|
return el;
|
|
347
333
|
}
|
|
348
334
|
// Handle function components
|
|
@@ -352,7 +338,6 @@ var __ktjs_core__ = (function (exports) {
|
|
|
352
338
|
else {
|
|
353
339
|
el = h(tag, props, props.children);
|
|
354
340
|
}
|
|
355
|
-
(_b = el.redraw) !== null && _b !== void 0 ? _b : (el.redraw = redraw);
|
|
356
341
|
ref.value = el;
|
|
357
342
|
return el;
|
|
358
343
|
}
|
|
@@ -400,32 +385,6 @@ var __ktjs_core__ = (function (exports) {
|
|
|
400
385
|
* This is called when using jsx: "react-jsx" or "react-jsxdev"
|
|
401
386
|
*/
|
|
402
387
|
var jsxs = jsx;
|
|
403
|
-
/**
|
|
404
|
-
* A helper to create redrawable elements
|
|
405
|
-
* ```tsx
|
|
406
|
-
* export function MyComponent() {
|
|
407
|
-
* let aa = 10;
|
|
408
|
-
* // ...
|
|
409
|
-
* // aa might be changed
|
|
410
|
-
* return createRedrawableNoref(() => <div>{aa}</div>);
|
|
411
|
-
* }
|
|
412
|
-
* ```
|
|
413
|
-
* Then the returned element has a `redraw` method to redraw itself with new values.
|
|
414
|
-
* @param creator a simple creator function that returns an element
|
|
415
|
-
* @returns created element
|
|
416
|
-
*/
|
|
417
|
-
function createRedrawableNoref(creator) {
|
|
418
|
-
var el = creator();
|
|
419
|
-
var redraw = function () {
|
|
420
|
-
var old = el;
|
|
421
|
-
el = creator();
|
|
422
|
-
old.replaceWith(el);
|
|
423
|
-
el.redraw = redraw;
|
|
424
|
-
return el;
|
|
425
|
-
};
|
|
426
|
-
el.redraw = redraw;
|
|
427
|
-
return el;
|
|
428
|
-
}
|
|
429
388
|
/**
|
|
430
389
|
* A helper to create redrawable elements
|
|
431
390
|
* ```tsx
|
|
@@ -442,13 +401,12 @@ var __ktjs_core__ = (function (exports) {
|
|
|
442
401
|
*/
|
|
443
402
|
function createRedrawable(creator) {
|
|
444
403
|
var elRef = ref();
|
|
445
|
-
elRef.value = creator();
|
|
446
404
|
var redraw = function () {
|
|
447
405
|
elRef.value = creator(); // ref setter automatically calls replaceWith
|
|
448
|
-
elRef.
|
|
406
|
+
elRef.redraw = redraw;
|
|
449
407
|
return elRef.value;
|
|
450
408
|
};
|
|
451
|
-
|
|
409
|
+
redraw();
|
|
452
410
|
return elRef;
|
|
453
411
|
}
|
|
454
412
|
|
|
@@ -685,7 +643,6 @@ var __ktjs_core__ = (function (exports) {
|
|
|
685
643
|
exports.KTRef = KTRef;
|
|
686
644
|
exports.createElement = h;
|
|
687
645
|
exports.createRedrawable = createRedrawable;
|
|
688
|
-
exports.createRedrawableNoref = createRedrawableNoref;
|
|
689
646
|
exports.h = h;
|
|
690
647
|
exports.jsx = jsx;
|
|
691
648
|
exports.jsxDEV = jsxDEV;
|
package/dist/index.mjs
CHANGED
|
@@ -8,6 +8,7 @@ const $throw = (message) => {
|
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
// DOM manipulation utilities
|
|
11
|
+
// # dom natives
|
|
11
12
|
/**
|
|
12
13
|
* & Remove `bind` because it is shockingly slower than wrapper
|
|
13
14
|
* & `window.document` is safe because it is not configurable and its setter is undefined
|
|
@@ -43,10 +44,11 @@ const $append = // for ie 9/10/11
|
|
|
43
44
|
$appendChild.call(this, fragment);
|
|
44
45
|
}
|
|
45
46
|
};
|
|
47
|
+
const { get: $buttonDisabledGetter, set: $buttonDisabledSetter } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
|
|
46
48
|
|
|
47
49
|
// Shared utilities and cached native methods for kt.js framework
|
|
48
50
|
// Re-export all utilities
|
|
49
|
-
Object.defineProperty(window, '@ktjs/shared', { value: '0.
|
|
51
|
+
Object.defineProperty(window, '@ktjs/shared', { value: '0.20.0' });
|
|
50
52
|
|
|
51
53
|
const booleanHandler = (element, key, value) => {
|
|
52
54
|
if (key in element) {
|
|
@@ -189,7 +191,14 @@ function applyContent(element, content) {
|
|
|
189
191
|
}
|
|
190
192
|
}
|
|
191
193
|
|
|
192
|
-
|
|
194
|
+
document.createElement('div');
|
|
195
|
+
const htmlCreator = (tag) => document.createElement(tag);
|
|
196
|
+
const svgCreator = (tag) => document.createElementNS('http://www.w3.org/2000/svg', tag);
|
|
197
|
+
const mathMLCreator = (tag) => document.createElementNS('http://www.w3.org/1998/Math/MathML', tag);
|
|
198
|
+
let creator = htmlCreator;
|
|
199
|
+
// # consts
|
|
200
|
+
const SVG_ATTR_FLAG = '__kt_svg__';
|
|
201
|
+
const MATHML_ATTR_FLAG = '__kt_mathml__';
|
|
193
202
|
/**
|
|
194
203
|
* Create an enhanced HTMLElement.
|
|
195
204
|
* - Only supports HTMLElements, **NOT** SVGElements or other Elements.
|
|
@@ -200,7 +209,7 @@ const svgTempWrapper = document.createElement('div');
|
|
|
200
209
|
* ## About
|
|
201
210
|
* @package @ktjs/core
|
|
202
211
|
* @author Kasukabe Tsumugi <futami16237@gmail.com>
|
|
203
|
-
* @version 0.
|
|
212
|
+
* @version 0.20.1 (Last Update: 2026.02.01 16:38:49.148)
|
|
204
213
|
* @license MIT
|
|
205
214
|
* @link https://github.com/baendlorel/kt.js
|
|
206
215
|
* @link https://baendlorel.github.io/ Welcome to my site!
|
|
@@ -211,15 +220,32 @@ const h = (tag, attr, content) => {
|
|
|
211
220
|
if (typeof tag !== 'string') {
|
|
212
221
|
$throw('tagName must be a string.');
|
|
213
222
|
}
|
|
223
|
+
if (attr) {
|
|
224
|
+
if (SVG_ATTR_FLAG in attr) {
|
|
225
|
+
delete attr[SVG_ATTR_FLAG];
|
|
226
|
+
creator = svgCreator;
|
|
227
|
+
}
|
|
228
|
+
else if (MATHML_ATTR_FLAG in attr) {
|
|
229
|
+
delete attr[MATHML_ATTR_FLAG];
|
|
230
|
+
creator = mathMLCreator;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
creator = htmlCreator;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
214
236
|
// * start creating the element
|
|
215
|
-
const element =
|
|
237
|
+
const element = creator(tag);
|
|
216
238
|
// * Handle content
|
|
217
239
|
applyAttr(element, attr);
|
|
218
240
|
applyContent(element, content);
|
|
219
|
-
if (tag === 'svg') {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
241
|
+
// if (tag === 'svg') {
|
|
242
|
+
// tempWrapper.innerHTML = element.outerHTML;
|
|
243
|
+
// return tempWrapper.firstChild as HTML<T>;
|
|
244
|
+
// }
|
|
245
|
+
// if (tag === 'math') {
|
|
246
|
+
// tempWrapper.innerHTML = element.outerHTML;
|
|
247
|
+
// return tempWrapper.firstChild as HTML<T>;
|
|
248
|
+
// }
|
|
223
249
|
return element;
|
|
224
250
|
};
|
|
225
251
|
|
|
@@ -284,21 +310,13 @@ const dummyRef = { value: null };
|
|
|
284
310
|
* @param tag html tag or function component
|
|
285
311
|
* @param props properties/attributes
|
|
286
312
|
*/
|
|
287
|
-
function jsx(tag, props
|
|
313
|
+
function jsx(tag, props) {
|
|
288
314
|
const ref = props.ref?.isKT ? props.ref : dummyRef;
|
|
289
315
|
let el;
|
|
290
|
-
const redraw = (newProps) => {
|
|
291
|
-
props = newProps ? { ...props, ...newProps } : props;
|
|
292
|
-
el = jsx(tag, props);
|
|
293
|
-
if (ref !== dummyRef) {
|
|
294
|
-
ref.value = el; // & ref setter automatically replaces old element in DOM
|
|
295
|
-
}
|
|
296
|
-
return el;
|
|
297
|
-
};
|
|
298
316
|
if ('k-if' in props && !props['k-if']) {
|
|
317
|
+
// & make comment placeholder in case that ref might be redrawn later
|
|
299
318
|
el = document.createComment('k-if');
|
|
300
|
-
ref.value = el;
|
|
301
|
-
el.redraw = redraw;
|
|
319
|
+
ref.value = el;
|
|
302
320
|
return el;
|
|
303
321
|
}
|
|
304
322
|
// Handle function components
|
|
@@ -308,7 +326,6 @@ function jsx(tag, props = {}) {
|
|
|
308
326
|
else {
|
|
309
327
|
el = h(tag, props, props.children);
|
|
310
328
|
}
|
|
311
|
-
el.redraw ??= redraw;
|
|
312
329
|
ref.value = el;
|
|
313
330
|
return el;
|
|
314
331
|
}
|
|
@@ -352,32 +369,6 @@ const jsxDEV = (...args) => {
|
|
|
352
369
|
* This is called when using jsx: "react-jsx" or "react-jsxdev"
|
|
353
370
|
*/
|
|
354
371
|
const jsxs = jsx;
|
|
355
|
-
/**
|
|
356
|
-
* A helper to create redrawable elements
|
|
357
|
-
* ```tsx
|
|
358
|
-
* export function MyComponent() {
|
|
359
|
-
* let aa = 10;
|
|
360
|
-
* // ...
|
|
361
|
-
* // aa might be changed
|
|
362
|
-
* return createRedrawableNoref(() => <div>{aa}</div>);
|
|
363
|
-
* }
|
|
364
|
-
* ```
|
|
365
|
-
* Then the returned element has a `redraw` method to redraw itself with new values.
|
|
366
|
-
* @param creator a simple creator function that returns an element
|
|
367
|
-
* @returns created element
|
|
368
|
-
*/
|
|
369
|
-
function createRedrawableNoref(creator) {
|
|
370
|
-
let el = creator();
|
|
371
|
-
const redraw = () => {
|
|
372
|
-
const old = el;
|
|
373
|
-
el = creator();
|
|
374
|
-
old.replaceWith(el);
|
|
375
|
-
el.redraw = redraw;
|
|
376
|
-
return el;
|
|
377
|
-
};
|
|
378
|
-
el.redraw = redraw;
|
|
379
|
-
return el;
|
|
380
|
-
}
|
|
381
372
|
/**
|
|
382
373
|
* A helper to create redrawable elements
|
|
383
374
|
* ```tsx
|
|
@@ -394,13 +385,12 @@ function createRedrawableNoref(creator) {
|
|
|
394
385
|
*/
|
|
395
386
|
function createRedrawable(creator) {
|
|
396
387
|
const elRef = ref();
|
|
397
|
-
elRef.value = creator();
|
|
398
388
|
const redraw = () => {
|
|
399
389
|
elRef.value = creator(); // ref setter automatically calls replaceWith
|
|
400
|
-
elRef.
|
|
390
|
+
elRef.redraw = redraw;
|
|
401
391
|
return elRef.value;
|
|
402
392
|
};
|
|
403
|
-
|
|
393
|
+
redraw();
|
|
404
394
|
return elRef;
|
|
405
395
|
}
|
|
406
396
|
|
|
@@ -628,4 +618,4 @@ function getSequence(arr) {
|
|
|
628
618
|
return result;
|
|
629
619
|
}
|
|
630
620
|
|
|
631
|
-
export { Fragment, KTAsync, KTFor, KTRef, h as createElement, createRedrawable,
|
|
621
|
+
export { Fragment, KTAsync, KTFor, KTRef, h as createElement, createRedrawable, h, jsx, jsxDEV, jsxs, ref };
|