haori 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.
- package/README.ja.md +1 -1
- package/README.md +1 -1
- package/dist/haori.cjs.js +10 -10
- package/dist/haori.es.js +191 -165
- package/dist/haori.iife.js +10 -10
- package/dist/index.d.ts +1 -1
- package/package.json +11 -3
- package/dist/haori.cjs.js.map +0 -1
- package/dist/haori.es.js.map +0 -1
- package/dist/haori.iife.js.map +0 -1
- package/dist/package.json +0 -70
- package/dist/src/builtins.d.ts +0 -100
- package/dist/src/builtins.d.ts.map +0 -1
- package/dist/src/builtins.js +0 -194
- package/dist/src/builtins.js.map +0 -1
- package/dist/src/core.d.ts +0 -505
- package/dist/src/core.d.ts.map +0 -1
- package/dist/src/core.js +0 -1817
- package/dist/src/core.js.map +0 -1
- package/dist/src/dev.d.ts +0 -35
- package/dist/src/dev.d.ts.map +0 -1
- package/dist/src/dev.js +0 -44
- package/dist/src/dev.js.map +0 -1
- package/dist/src/env.d.ts +0 -43
- package/dist/src/env.d.ts.map +0 -1
- package/dist/src/env.js +0 -108
- package/dist/src/env.js.map +0 -1
- package/dist/src/event.d.ts +0 -171
- package/dist/src/event.d.ts.map +0 -1
- package/dist/src/event.js +0 -235
- package/dist/src/event.js.map +0 -1
- package/dist/src/event_dispatcher.d.ts +0 -66
- package/dist/src/event_dispatcher.d.ts.map +0 -1
- package/dist/src/event_dispatcher.js +0 -167
- package/dist/src/event_dispatcher.js.map +0 -1
- package/dist/src/expression.d.ts +0 -260
- package/dist/src/expression.d.ts.map +0 -1
- package/dist/src/expression.js +0 -975
- package/dist/src/expression.js.map +0 -1
- package/dist/src/form.d.ts +0 -148
- package/dist/src/form.d.ts.map +0 -1
- package/dist/src/form.js +0 -428
- package/dist/src/form.js.map +0 -1
- package/dist/src/fragment.d.ts +0 -621
- package/dist/src/fragment.d.ts.map +0 -1
- package/dist/src/fragment.js +0 -1963
- package/dist/src/fragment.js.map +0 -1
- package/dist/src/haori.d.ts +0 -130
- package/dist/src/haori.d.ts.map +0 -1
- package/dist/src/haori.js +0 -215
- package/dist/src/haori.js.map +0 -1
- package/dist/src/import.d.ts +0 -19
- package/dist/src/import.d.ts.map +0 -1
- package/dist/src/import.js +0 -64
- package/dist/src/import.js.map +0 -1
- package/dist/src/index.d.ts +0 -27
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -30
- package/dist/src/index.js.map +0 -1
- package/dist/src/intersect.d.ts +0 -28
- package/dist/src/intersect.d.ts.map +0 -1
- package/dist/src/intersect.js +0 -201
- package/dist/src/intersect.js.map +0 -1
- package/dist/src/log.d.ts +0 -32
- package/dist/src/log.d.ts.map +0 -1
- package/dist/src/log.js +0 -43
- package/dist/src/log.js.map +0 -1
- package/dist/src/observer.d.ts +0 -24
- package/dist/src/observer.d.ts.map +0 -1
- package/dist/src/observer.js +0 -131
- package/dist/src/observer.js.map +0 -1
- package/dist/src/procedure.d.ts +0 -447
- package/dist/src/procedure.d.ts.map +0 -1
- package/dist/src/procedure.js +0 -1921
- package/dist/src/procedure.js.map +0 -1
- package/dist/src/queue.d.ts +0 -35
- package/dist/src/queue.d.ts.map +0 -1
- package/dist/src/queue.js +0 -202
- package/dist/src/queue.js.map +0 -1
- package/dist/src/url.d.ts +0 -14
- package/dist/src/url.d.ts.map +0 -1
- package/dist/src/url.js +0 -22
- package/dist/src/url.js.map +0 -1
- package/dist/tests/bind-arg-own-binding.test.d.ts +0 -2
- package/dist/tests/bind-arg-own-binding.test.d.ts.map +0 -1
- package/dist/tests/bind-arg-own-binding.test.js +0 -63
- package/dist/tests/bind-arg-own-binding.test.js.map +0 -1
- package/dist/tests/bindcomplete-and-scope.test.d.ts +0 -2
- package/dist/tests/bindcomplete-and-scope.test.d.ts.map +0 -1
- package/dist/tests/bindcomplete-and-scope.test.js +0 -115
- package/dist/tests/bindcomplete-and-scope.test.js.map +0 -1
- package/dist/tests/builtins.test.d.ts +0 -2
- package/dist/tests/builtins.test.d.ts.map +0 -1
- package/dist/tests/builtins.test.js +0 -152
- package/dist/tests/builtins.test.js.map +0 -1
- package/dist/tests/click-attributes.test.d.ts +0 -2
- package/dist/tests/click-attributes.test.d.ts.map +0 -1
- package/dist/tests/click-attributes.test.js +0 -113
- package/dist/tests/click-attributes.test.js.map +0 -1
- package/dist/tests/click-no-disabled.test.d.ts +0 -2
- package/dist/tests/click-no-disabled.test.d.ts.map +0 -1
- package/dist/tests/click-no-disabled.test.js +0 -67
- package/dist/tests/click-no-disabled.test.js.map +0 -1
- package/dist/tests/core.test.d.ts +0 -5
- package/dist/tests/core.test.d.ts.map +0 -1
- package/dist/tests/core.test.js +0 -1056
- package/dist/tests/core.test.js.map +0 -1
- package/dist/tests/data-bind-arg-reeval.test.d.ts +0 -2
- package/dist/tests/data-bind-arg-reeval.test.d.ts.map +0 -1
- package/dist/tests/data-bind-arg-reeval.test.js +0 -119
- package/dist/tests/data-bind-arg-reeval.test.js.map +0 -1
- package/dist/tests/data-bind-merge.test.d.ts +0 -2
- package/dist/tests/data-bind-merge.test.d.ts.map +0 -1
- package/dist/tests/data-bind-merge.test.js +0 -86
- package/dist/tests/data-bind-merge.test.js.map +0 -1
- package/dist/tests/data-click-defer.test.d.ts +0 -2
- package/dist/tests/data-click-defer.test.d.ts.map +0 -1
- package/dist/tests/data-click-defer.test.js +0 -57
- package/dist/tests/data-click-defer.test.js.map +0 -1
- package/dist/tests/data-click-run.test.d.ts +0 -5
- package/dist/tests/data-click-run.test.d.ts.map +0 -1
- package/dist/tests/data-click-run.test.js +0 -109
- package/dist/tests/data-click-run.test.js.map +0 -1
- package/dist/tests/data-derive.test.d.ts +0 -2
- package/dist/tests/data-derive.test.d.ts.map +0 -1
- package/dist/tests/data-derive.test.js +0 -999
- package/dist/tests/data-derive.test.js.map +0 -1
- package/dist/tests/data-each-browserlike.test.d.ts +0 -2
- package/dist/tests/data-each-browserlike.test.d.ts.map +0 -1
- package/dist/tests/data-each-browserlike.test.js +0 -48
- package/dist/tests/data-each-browserlike.test.js.map +0 -1
- package/dist/tests/data-each-fragment-debug.test.d.ts +0 -2
- package/dist/tests/data-each-fragment-debug.test.d.ts.map +0 -1
- package/dist/tests/data-each-fragment-debug.test.js +0 -119
- package/dist/tests/data-each-fragment-debug.test.js.map +0 -1
- package/dist/tests/data-each-table.test.d.ts +0 -2
- package/dist/tests/data-each-table.test.d.ts.map +0 -1
- package/dist/tests/data-each-table.test.js +0 -131
- package/dist/tests/data-each-table.test.js.map +0 -1
- package/dist/tests/data-each-template-recovery.test.d.ts +0 -2
- package/dist/tests/data-each-template-recovery.test.d.ts.map +0 -1
- package/dist/tests/data-each-template-recovery.test.js +0 -87
- package/dist/tests/data-each-template-recovery.test.js.map +0 -1
- package/dist/tests/data-event-prevent.test.d.ts +0 -2
- package/dist/tests/data-event-prevent.test.d.ts.map +0 -1
- package/dist/tests/data-event-prevent.test.js +0 -76
- package/dist/tests/data-event-prevent.test.js.map +0 -1
- package/dist/tests/data-fetch-form-input-binding.test.d.ts +0 -2
- package/dist/tests/data-fetch-form-input-binding.test.d.ts.map +0 -1
- package/dist/tests/data-fetch-form-input-binding.test.js +0 -202
- package/dist/tests/data-fetch-form-input-binding.test.js.map +0 -1
- package/dist/tests/data-fetch-tbody-dom.test.d.ts +0 -2
- package/dist/tests/data-fetch-tbody-dom.test.d.ts.map +0 -1
- package/dist/tests/data-fetch-tbody-dom.test.js +0 -82
- package/dist/tests/data-fetch-tbody-dom.test.js.map +0 -1
- package/dist/tests/data-form-container.test.d.ts +0 -2
- package/dist/tests/data-form-container.test.d.ts.map +0 -1
- package/dist/tests/data-form-container.test.js +0 -88
- package/dist/tests/data-form-container.test.js.map +0 -1
- package/dist/tests/data-if-dev-diagnostics.test.d.ts +0 -2
- package/dist/tests/data-if-dev-diagnostics.test.d.ts.map +0 -1
- package/dist/tests/data-if-dev-diagnostics.test.js +0 -55
- package/dist/tests/data-if-dev-diagnostics.test.js.map +0 -1
- package/dist/tests/data-if-falsy.test.d.ts +0 -2
- package/dist/tests/data-if-falsy.test.d.ts.map +0 -1
- package/dist/tests/data-if-falsy.test.js +0 -73
- package/dist/tests/data-if-falsy.test.js.map +0 -1
- package/dist/tests/data-load-on-show.test.d.ts +0 -2
- package/dist/tests/data-load-on-show.test.d.ts.map +0 -1
- package/dist/tests/data-load-on-show.test.js +0 -98
- package/dist/tests/data-load-on-show.test.js.map +0 -1
- package/dist/tests/derive-each-render-wait.test.d.ts +0 -2
- package/dist/tests/derive-each-render-wait.test.d.ts.map +0 -1
- package/dist/tests/derive-each-render-wait.test.js +0 -90
- package/dist/tests/derive-each-render-wait.test.js.map +0 -1
- package/dist/tests/dev.test.d.ts +0 -2
- package/dist/tests/dev.test.d.ts.map +0 -1
- package/dist/tests/dev.test.js +0 -51
- package/dist/tests/dev.test.js.map +0 -1
- package/dist/tests/each-update-event.test.d.ts +0 -2
- package/dist/tests/each-update-event.test.d.ts.map +0 -1
- package/dist/tests/each-update-event.test.js +0 -83
- package/dist/tests/each-update-event.test.js.map +0 -1
- package/dist/tests/each_arg.test.d.ts +0 -2
- package/dist/tests/each_arg.test.d.ts.map +0 -1
- package/dist/tests/each_arg.test.js +0 -41
- package/dist/tests/each_arg.test.js.map +0 -1
- package/dist/tests/env.test.d.ts +0 -2
- package/dist/tests/env.test.d.ts.map +0 -1
- package/dist/tests/env.test.js +0 -124
- package/dist/tests/env.test.js.map +0 -1
- package/dist/tests/evaluation-profile.test.d.ts +0 -2
- package/dist/tests/evaluation-profile.test.d.ts.map +0 -1
- package/dist/tests/evaluation-profile.test.js +0 -92
- package/dist/tests/evaluation-profile.test.js.map +0 -1
- package/dist/tests/event.test.d.ts +0 -2
- package/dist/tests/event.test.d.ts.map +0 -1
- package/dist/tests/event.test.js +0 -300
- package/dist/tests/event.test.js.map +0 -1
- package/dist/tests/expression-disallowed-keyword-hint.test.d.ts +0 -2
- package/dist/tests/expression-disallowed-keyword-hint.test.d.ts.map +0 -1
- package/dist/tests/expression-disallowed-keyword-hint.test.js +0 -45
- package/dist/tests/expression-disallowed-keyword-hint.test.js.map +0 -1
- package/dist/tests/expression-forbidden-hint.test.d.ts +0 -2
- package/dist/tests/expression-forbidden-hint.test.d.ts.map +0 -1
- package/dist/tests/expression-forbidden-hint.test.js +0 -37
- package/dist/tests/expression-forbidden-hint.test.js.map +0 -1
- package/dist/tests/expression.test.d.ts +0 -2
- package/dist/tests/expression.test.d.ts.map +0 -1
- package/dist/tests/expression.test.js +0 -482
- package/dist/tests/expression.test.js.map +0 -1
- package/dist/tests/fetch-and-procedure-scenarios.test.d.ts +0 -2
- package/dist/tests/fetch-and-procedure-scenarios.test.d.ts.map +0 -1
- package/dist/tests/fetch-and-procedure-scenarios.test.js +0 -195
- package/dist/tests/fetch-and-procedure-scenarios.test.js.map +0 -1
- package/dist/tests/form-number-type.test.d.ts +0 -2
- package/dist/tests/form-number-type.test.d.ts.map +0 -1
- package/dist/tests/form-number-type.test.js +0 -83
- package/dist/tests/form-number-type.test.js.map +0 -1
- package/dist/tests/form.test.d.ts +0 -2
- package/dist/tests/form.test.d.ts.map +0 -1
- package/dist/tests/form.test.js +0 -636
- package/dist/tests/form.test.js.map +0 -1
- package/dist/tests/fragment.test.d.ts +0 -2
- package/dist/tests/fragment.test.d.ts.map +0 -1
- package/dist/tests/fragment.test.js +0 -284
- package/dist/tests/fragment.test.js.map +0 -1
- package/dist/tests/haori.test.d.ts +0 -2
- package/dist/tests/haori.test.d.ts.map +0 -1
- package/dist/tests/haori.test.js +0 -149
- package/dist/tests/haori.test.js.map +0 -1
- package/dist/tests/helpers/async.d.ts +0 -20
- package/dist/tests/helpers/async.d.ts.map +0 -1
- package/dist/tests/helpers/async.js +0 -35
- package/dist/tests/helpers/async.js.map +0 -1
- package/dist/tests/import.test.d.ts +0 -2
- package/dist/tests/import.test.d.ts.map +0 -1
- package/dist/tests/import.test.js +0 -148
- package/dist/tests/import.test.js.map +0 -1
- package/dist/tests/intersect.test.d.ts +0 -2
- package/dist/tests/intersect.test.d.ts.map +0 -1
- package/dist/tests/intersect.test.js +0 -173
- package/dist/tests/intersect.test.js.map +0 -1
- package/dist/tests/log.test.d.ts +0 -2
- package/dist/tests/log.test.d.ts.map +0 -1
- package/dist/tests/log.test.js +0 -58
- package/dist/tests/log.test.js.map +0 -1
- package/dist/tests/observer.test.d.ts +0 -2
- package/dist/tests/observer.test.d.ts.map +0 -1
- package/dist/tests/observer.test.js +0 -64
- package/dist/tests/observer.test.js.map +0 -1
- package/dist/tests/placeholder-resolution.test.d.ts +0 -2
- package/dist/tests/placeholder-resolution.test.d.ts.map +0 -1
- package/dist/tests/placeholder-resolution.test.js +0 -463
- package/dist/tests/placeholder-resolution.test.js.map +0 -1
- package/dist/tests/procedure-action-operations.test.d.ts +0 -2
- package/dist/tests/procedure-action-operations.test.d.ts.map +0 -1
- package/dist/tests/procedure-action-operations.test.js +0 -1140
- package/dist/tests/procedure-action-operations.test.js.map +0 -1
- package/dist/tests/procedure-bind-append.test.d.ts +0 -2
- package/dist/tests/procedure-bind-append.test.d.ts.map +0 -1
- package/dist/tests/procedure-bind-append.test.js +0 -80
- package/dist/tests/procedure-bind-append.test.js.map +0 -1
- package/dist/tests/procedure-fetch-options.test.d.ts +0 -2
- package/dist/tests/procedure-fetch-options.test.d.ts.map +0 -1
- package/dist/tests/procedure-fetch-options.test.js +0 -255
- package/dist/tests/procedure-fetch-options.test.js.map +0 -1
- package/dist/tests/procedure.test.d.ts +0 -2
- package/dist/tests/procedure.test.d.ts.map +0 -1
- package/dist/tests/procedure.test.js +0 -137
- package/dist/tests/procedure.test.js.map +0 -1
- package/dist/tests/procedure_events.test.d.ts +0 -7
- package/dist/tests/procedure_events.test.d.ts.map +0 -1
- package/dist/tests/procedure_events.test.js +0 -261
- package/dist/tests/procedure_events.test.js.map +0 -1
- package/dist/tests/render-wait.test.d.ts +0 -2
- package/dist/tests/render-wait.test.d.ts.map +0 -1
- package/dist/tests/render-wait.test.js +0 -68
- package/dist/tests/render-wait.test.js.map +0 -1
- package/dist/tests/reset_each.test.d.ts +0 -2
- package/dist/tests/reset_each.test.d.ts.map +0 -1
- package/dist/tests/reset_each.test.js +0 -215
- package/dist/tests/reset_each.test.js.map +0 -1
- package/dist/tests/row-move.test.d.ts +0 -2
- package/dist/tests/row-move.test.d.ts.map +0 -1
- package/dist/tests/row-move.test.js +0 -220
- package/dist/tests/row-move.test.js.map +0 -1
- package/dist/tests/row-operations.test.d.ts +0 -2
- package/dist/tests/row-operations.test.d.ts.map +0 -1
- package/dist/tests/row-operations.test.js +0 -259
- package/dist/tests/row-operations.test.js.map +0 -1
- package/dist/tests/scheduled-evaluate-wait.test.d.ts +0 -2
- package/dist/tests/scheduled-evaluate-wait.test.d.ts.map +0 -1
- package/dist/tests/scheduled-evaluate-wait.test.js +0 -68
- package/dist/tests/scheduled-evaluate-wait.test.js.map +0 -1
- package/dist/tests/url.test.d.ts +0 -2
- package/dist/tests/url.test.d.ts.map +0 -1
- package/dist/tests/url.test.js +0 -150
- package/dist/tests/url.test.js.map +0 -1
- package/dist/vite.config.d.ts +0 -3
- package/dist/vite.config.d.ts.map +0 -1
- package/dist/vite.config.js +0 -28
- package/dist/vite.config.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -19
- package/dist/vitest.config.js.map +0 -1
package/dist/package.json
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "haori",
|
|
3
|
-
"version": "0.13.0",
|
|
4
|
-
"description": "A lightweight HTML-first UI engine powered by declarative data bindings and expressions.",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "vite",
|
|
7
|
-
"build": "vite build",
|
|
8
|
-
"dev:demo": "vite --config demo/vite.config.ts",
|
|
9
|
-
"build:demo": "vite build --config demo/vite.config.ts",
|
|
10
|
-
"preview:demo": "vite preview --config demo/vite.config.ts",
|
|
11
|
-
"test": "vitest run",
|
|
12
|
-
"test:watch": "vitest",
|
|
13
|
-
"lint": "eslint src",
|
|
14
|
-
"lint:fix": "eslint src --fix",
|
|
15
|
-
"format": "prettier --write src/**/*.{ts,js,json}",
|
|
16
|
-
"format:check": "prettier --check src/**/*.{ts,js,json}",
|
|
17
|
-
"type-check": "tsc --noEmit",
|
|
18
|
-
"preview": "vite preview",
|
|
19
|
-
"compile": "tsc",
|
|
20
|
-
"clean": "rm -rf dist",
|
|
21
|
-
"prepare": "npm run compile",
|
|
22
|
-
"pretest": "npm run compile",
|
|
23
|
-
"posttest": "npm run lint"
|
|
24
|
-
},
|
|
25
|
-
"repository": {
|
|
26
|
-
"type": "git",
|
|
27
|
-
"url": "git+https://github.com/meibinlab/haori-js.git"
|
|
28
|
-
},
|
|
29
|
-
"keywords": [
|
|
30
|
-
"html",
|
|
31
|
-
"template",
|
|
32
|
-
"binding",
|
|
33
|
-
"ui-engine",
|
|
34
|
-
"no-javascript",
|
|
35
|
-
"dom",
|
|
36
|
-
"declarative",
|
|
37
|
-
"frontend"
|
|
38
|
-
],
|
|
39
|
-
"author": "meibinlab",
|
|
40
|
-
"license": "MIT",
|
|
41
|
-
"type": "module",
|
|
42
|
-
"exports": {
|
|
43
|
-
".": {
|
|
44
|
-
"import": "./dist/haori.js"
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"main": "dist/haori.es.js",
|
|
48
|
-
"types": "./dist/index.d.ts",
|
|
49
|
-
"files": [
|
|
50
|
-
"dist"
|
|
51
|
-
],
|
|
52
|
-
"bugs": {
|
|
53
|
-
"url": "https://github.com/meibinlab/haori-js/issues"
|
|
54
|
-
},
|
|
55
|
-
"homepage": "https://github.com/meibinlab/haori-js#readme",
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"@eslint/js": "^9.31.0",
|
|
58
|
-
"@playwright/test": "^1.57.0",
|
|
59
|
-
"@types/node": "^22.7.5",
|
|
60
|
-
"eslint": "^9.31.0",
|
|
61
|
-
"http-server": "^14.1.1",
|
|
62
|
-
"jsdom": "^26.1.0",
|
|
63
|
-
"prettier": "^3.6.2",
|
|
64
|
-
"typescript": "^5.6.3",
|
|
65
|
-
"typescript-eslint": "^8.37.0",
|
|
66
|
-
"vite": "^7.0.4",
|
|
67
|
-
"vite-plugin-dts": "^4.5.4",
|
|
68
|
-
"vitest": "^3.2.4"
|
|
69
|
-
}
|
|
70
|
-
}
|
package/dist/src/builtins.d.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview テンプレート式から呼び出せる組み込みヘルパー
|
|
3
|
-
*
|
|
4
|
-
* 式中の予約名前空間 `haori` として注入される純粋関数群です。
|
|
5
|
-
* 日時・数値の整形、整数レンジ、ページネーション補助を提供します。
|
|
6
|
-
* いずれも副作用を持たず(DOM・通信・グローバル状態に触れない)、同じ入力に
|
|
7
|
-
* 対して常に同じ結果を返す冪等な関数のため、式の再評価で安全に利用できます。
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* ページネーション補助 `pages()` の動作を調整するオプションです。
|
|
11
|
-
*/
|
|
12
|
-
export interface PagesOptions {
|
|
13
|
-
/** 現在ページの前後に表示するページ数(既定 2) */
|
|
14
|
-
window?: number;
|
|
15
|
-
/** 先頭・末尾に常に表示するページ数(既定 1) */
|
|
16
|
-
boundary?: number;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* `pages()` が返す1要素分の情報です。
|
|
20
|
-
*/
|
|
21
|
-
export interface PageItem {
|
|
22
|
-
/** 0 始まりのページ番号。省略記号のときは null */
|
|
23
|
-
page: number | null;
|
|
24
|
-
/** 表示用ラベル。ページ項目は 1 始まりの番号、省略記号は '…' */
|
|
25
|
-
label: number | string;
|
|
26
|
-
/** 現在ページであれば true */
|
|
27
|
-
active: boolean;
|
|
28
|
-
/** 省略記号(…)であれば true */
|
|
29
|
-
ellipsis: boolean;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* ISO 文字列・エポックミリ秒・Date を指定フォーマットの文字列へ整形します。
|
|
33
|
-
*
|
|
34
|
-
* 解釈はブラウザのローカルタイムゾーンで行います。空・null・不正な日時は空文字を
|
|
35
|
-
* 返します。利用できるトークン(いずれもローカル時刻):
|
|
36
|
-
* `yyyy`(4桁年)`yy`(2桁年)`MM`/`M`(月)`dd`/`d`(日)`HH`/`H`(時・24時間)
|
|
37
|
-
* `mm`(分)`ss`(秒)。トークン以外の文字(区切りなど)はそのまま出力します。
|
|
38
|
-
*
|
|
39
|
-
* @param value 整形対象の日時(ISO 文字列・エポックミリ秒・Date)
|
|
40
|
-
* @param format フォーマット文字列(省略時は `yyyy/MM/dd HH:mm`)
|
|
41
|
-
* @returns 整形済み文字列。整形できない場合は空文字
|
|
42
|
-
*/
|
|
43
|
-
export declare function date(value: string | number | Date | null | undefined, format?: string): string;
|
|
44
|
-
/**
|
|
45
|
-
* 数値を桁区切り・小数桁付きの文字列へ整形します。
|
|
46
|
-
*
|
|
47
|
-
* 桁区切りは常に有効で、`en-US` ロケール(カンマ区切り・ドット小数)で出力します。
|
|
48
|
-
* `en-US` は区切り文字を決めるだけで小数桁は固定しません。数値文字列も受け付け、
|
|
49
|
-
* 数値に変換できない値・null・空文字は空文字を返します。
|
|
50
|
-
*
|
|
51
|
-
* `decimals` を省略した場合は `Intl.NumberFormat` の既定に従い、末尾ゼロ埋めはせず、
|
|
52
|
-
* 小数は最大 3 桁(`maximumFractionDigits = 3`)に丸められます(例 1234.56789 →
|
|
53
|
-
* "1,234.568")。4 桁以上をそのまま出したい場合は `decimals` を明示してください。
|
|
54
|
-
*
|
|
55
|
-
* @param value 整形対象(数値または数値文字列)
|
|
56
|
-
* @param decimals 小数桁数。指定するとその桁で固定(末尾ゼロ埋め)。省略時は最大3桁
|
|
57
|
-
* @returns 整形済み文字列。整形できない場合は空文字
|
|
58
|
-
*/
|
|
59
|
-
export declare function number(value: number | string | null | undefined, decimals?: number): string;
|
|
60
|
-
/**
|
|
61
|
-
* 整数の配列を生成します。終端は排他です(`range(2, 5)` は `[2, 3, 4]`)。
|
|
62
|
-
*
|
|
63
|
-
* - `range(n)` … `[0, 1, …, n-1]`
|
|
64
|
-
* - `range(start, end)` … `start` から `end` の手前まで(step は 1)
|
|
65
|
-
* - `range(start, end, step)` … 指定刻み。負の step で降順も可
|
|
66
|
-
*
|
|
67
|
-
* 引数が有限数でない・step が 0 の場合は空配列を返します。要素数は安全のため
|
|
68
|
-
* 上限({@link RANGE_MAX_LENGTH})で打ち切ります。
|
|
69
|
-
*
|
|
70
|
-
* @param start `end` 省略時は終端、指定時は開始値
|
|
71
|
-
* @param end 終端(排他)
|
|
72
|
-
* @param step 刻み幅(省略時は 1)
|
|
73
|
-
* @returns 整数配列
|
|
74
|
-
*/
|
|
75
|
-
export declare function range(start: number, end?: number, step?: number): number[];
|
|
76
|
-
/**
|
|
77
|
-
* 番号ページネーション用の表示要素列を生成します。
|
|
78
|
-
*
|
|
79
|
-
* 先頭・末尾の境界ページ、現在ページ周辺のページ、その間を埋める省略記号(…)を
|
|
80
|
-
* 含む配列を表示順に返します。`data-each` で繰り返して番号リンクを構築できます。
|
|
81
|
-
* `current` は 0 始まり(Spring の `Page.number` 等)を想定し、各要素の `label` は
|
|
82
|
-
* 表示用に 1 始まりへ変換した値になります。
|
|
83
|
-
*
|
|
84
|
-
* @param totalPages 総ページ数
|
|
85
|
-
* @param current 現在ページ(0 始まり)
|
|
86
|
-
* @param options 表示調整オプション(window・boundary)
|
|
87
|
-
* @returns 表示要素({@link PageItem})の配列
|
|
88
|
-
*/
|
|
89
|
-
export declare function pages(totalPages: number, current: number, options?: PagesOptions): PageItem[];
|
|
90
|
-
/**
|
|
91
|
-
* 式中の予約名前空間 `haori` として公開する組み込みヘルパー集合です。
|
|
92
|
-
*/
|
|
93
|
-
declare const Builtins: Readonly<{
|
|
94
|
-
date: typeof date;
|
|
95
|
-
number: typeof number;
|
|
96
|
-
pages: typeof pages;
|
|
97
|
-
range: typeof range;
|
|
98
|
-
}>;
|
|
99
|
-
export default Builtins;
|
|
100
|
-
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/builtins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB,uCAAuC;IACvC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB,qBAAqB;IACrB,MAAM,EAAE,OAAO,CAAC;IAEhB,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,EAChD,MAAM,GAAE,MAA4B,GACnC,MAAM,CAyBR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAeR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAmC1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,QAAQ,EAAE,CA2CZ;AAED;;GAEG;AACH,QAAA,MAAM,QAAQ;;;;;EAA8C,CAAC;AAE7D,eAAe,QAAQ,CAAC"}
|
package/dist/src/builtins.js
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview テンプレート式から呼び出せる組み込みヘルパー
|
|
3
|
-
*
|
|
4
|
-
* 式中の予約名前空間 `haori` として注入される純粋関数群です。
|
|
5
|
-
* 日時・数値の整形、整数レンジ、ページネーション補助を提供します。
|
|
6
|
-
* いずれも副作用を持たず(DOM・通信・グローバル状態に触れない)、同じ入力に
|
|
7
|
-
* 対して常に同じ結果を返す冪等な関数のため、式の再評価で安全に利用できます。
|
|
8
|
-
*/
|
|
9
|
-
/** date() の既定フォーマット */
|
|
10
|
-
const DEFAULT_DATE_FORMAT = 'yyyy/MM/dd HH:mm';
|
|
11
|
-
/** number() の桁区切り・小数表記に用いるロケール */
|
|
12
|
-
const NUMBER_LOCALE = 'en-US';
|
|
13
|
-
/** range() が一度に生成する要素数の上限(暴走防止) */
|
|
14
|
-
const RANGE_MAX_LENGTH = 10000;
|
|
15
|
-
/**
|
|
16
|
-
* 2桁ゼロ埋めした文字列を返します。
|
|
17
|
-
*
|
|
18
|
-
* @param value 対象の数値
|
|
19
|
-
* @returns 2桁ゼロ埋め文字列
|
|
20
|
-
*/
|
|
21
|
-
function pad2(value) {
|
|
22
|
-
return String(value).padStart(2, '0');
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* ISO 文字列・エポックミリ秒・Date を指定フォーマットの文字列へ整形します。
|
|
26
|
-
*
|
|
27
|
-
* 解釈はブラウザのローカルタイムゾーンで行います。空・null・不正な日時は空文字を
|
|
28
|
-
* 返します。利用できるトークン(いずれもローカル時刻):
|
|
29
|
-
* `yyyy`(4桁年)`yy`(2桁年)`MM`/`M`(月)`dd`/`d`(日)`HH`/`H`(時・24時間)
|
|
30
|
-
* `mm`(分)`ss`(秒)。トークン以外の文字(区切りなど)はそのまま出力します。
|
|
31
|
-
*
|
|
32
|
-
* @param value 整形対象の日時(ISO 文字列・エポックミリ秒・Date)
|
|
33
|
-
* @param format フォーマット文字列(省略時は `yyyy/MM/dd HH:mm`)
|
|
34
|
-
* @returns 整形済み文字列。整形できない場合は空文字
|
|
35
|
-
*/
|
|
36
|
-
export function date(value, format = DEFAULT_DATE_FORMAT) {
|
|
37
|
-
if (value === null || value === undefined || value === '') {
|
|
38
|
-
return '';
|
|
39
|
-
}
|
|
40
|
-
const parsed = value instanceof Date ? value : new Date(value);
|
|
41
|
-
if (Number.isNaN(parsed.getTime())) {
|
|
42
|
-
return '';
|
|
43
|
-
}
|
|
44
|
-
const tokens = {
|
|
45
|
-
yyyy: String(parsed.getFullYear()).padStart(4, '0'),
|
|
46
|
-
yy: pad2(parsed.getFullYear() % 100),
|
|
47
|
-
MM: pad2(parsed.getMonth() + 1),
|
|
48
|
-
M: String(parsed.getMonth() + 1),
|
|
49
|
-
dd: pad2(parsed.getDate()),
|
|
50
|
-
d: String(parsed.getDate()),
|
|
51
|
-
HH: pad2(parsed.getHours()),
|
|
52
|
-
H: String(parsed.getHours()),
|
|
53
|
-
mm: pad2(parsed.getMinutes()),
|
|
54
|
-
ss: pad2(parsed.getSeconds()),
|
|
55
|
-
};
|
|
56
|
-
// 長いトークンを先に並べ、`yyyy` が `yy` より、`MM` が `M` より優先されるようにする。
|
|
57
|
-
return format.replace(/yyyy|yy|MM|dd|HH|mm|ss|M|d|H/g, matched => tokens[matched]);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* 数値を桁区切り・小数桁付きの文字列へ整形します。
|
|
61
|
-
*
|
|
62
|
-
* 桁区切りは常に有効で、`en-US` ロケール(カンマ区切り・ドット小数)で出力します。
|
|
63
|
-
* `en-US` は区切り文字を決めるだけで小数桁は固定しません。数値文字列も受け付け、
|
|
64
|
-
* 数値に変換できない値・null・空文字は空文字を返します。
|
|
65
|
-
*
|
|
66
|
-
* `decimals` を省略した場合は `Intl.NumberFormat` の既定に従い、末尾ゼロ埋めはせず、
|
|
67
|
-
* 小数は最大 3 桁(`maximumFractionDigits = 3`)に丸められます(例 1234.56789 →
|
|
68
|
-
* "1,234.568")。4 桁以上をそのまま出したい場合は `decimals` を明示してください。
|
|
69
|
-
*
|
|
70
|
-
* @param value 整形対象(数値または数値文字列)
|
|
71
|
-
* @param decimals 小数桁数。指定するとその桁で固定(末尾ゼロ埋め)。省略時は最大3桁
|
|
72
|
-
* @returns 整形済み文字列。整形できない場合は空文字
|
|
73
|
-
*/
|
|
74
|
-
export function number(value, decimals) {
|
|
75
|
-
if (value === null || value === undefined || value === '') {
|
|
76
|
-
return '';
|
|
77
|
-
}
|
|
78
|
-
const numeric = typeof value === 'number' ? value : Number(value);
|
|
79
|
-
if (!Number.isFinite(numeric)) {
|
|
80
|
-
return '';
|
|
81
|
-
}
|
|
82
|
-
const options = {};
|
|
83
|
-
if (decimals !== undefined && Number.isFinite(decimals)) {
|
|
84
|
-
const digits = Math.max(0, Math.trunc(decimals));
|
|
85
|
-
options.minimumFractionDigits = digits;
|
|
86
|
-
options.maximumFractionDigits = digits;
|
|
87
|
-
}
|
|
88
|
-
return new Intl.NumberFormat(NUMBER_LOCALE, options).format(numeric);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* 整数の配列を生成します。終端は排他です(`range(2, 5)` は `[2, 3, 4]`)。
|
|
92
|
-
*
|
|
93
|
-
* - `range(n)` … `[0, 1, …, n-1]`
|
|
94
|
-
* - `range(start, end)` … `start` から `end` の手前まで(step は 1)
|
|
95
|
-
* - `range(start, end, step)` … 指定刻み。負の step で降順も可
|
|
96
|
-
*
|
|
97
|
-
* 引数が有限数でない・step が 0 の場合は空配列を返します。要素数は安全のため
|
|
98
|
-
* 上限({@link RANGE_MAX_LENGTH})で打ち切ります。
|
|
99
|
-
*
|
|
100
|
-
* @param start `end` 省略時は終端、指定時は開始値
|
|
101
|
-
* @param end 終端(排他)
|
|
102
|
-
* @param step 刻み幅(省略時は 1)
|
|
103
|
-
* @returns 整数配列
|
|
104
|
-
*/
|
|
105
|
-
export function range(start, end, step) {
|
|
106
|
-
let from;
|
|
107
|
-
let to;
|
|
108
|
-
let by;
|
|
109
|
-
if (end === undefined) {
|
|
110
|
-
from = 0;
|
|
111
|
-
to = start;
|
|
112
|
-
by = 1;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
from = start;
|
|
116
|
-
to = end;
|
|
117
|
-
by = step === undefined ? 1 : step;
|
|
118
|
-
}
|
|
119
|
-
if (!Number.isFinite(from) ||
|
|
120
|
-
!Number.isFinite(to) ||
|
|
121
|
-
!Number.isFinite(by) ||
|
|
122
|
-
by === 0) {
|
|
123
|
-
return [];
|
|
124
|
-
}
|
|
125
|
-
from = Math.trunc(from);
|
|
126
|
-
to = Math.trunc(to);
|
|
127
|
-
by = Math.trunc(by);
|
|
128
|
-
const result = [];
|
|
129
|
-
if (by > 0) {
|
|
130
|
-
for (let i = from; i < to && result.length < RANGE_MAX_LENGTH; i += by) {
|
|
131
|
-
result.push(i);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
for (let i = from; i > to && result.length < RANGE_MAX_LENGTH; i += by) {
|
|
136
|
-
result.push(i);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return result;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* 番号ページネーション用の表示要素列を生成します。
|
|
143
|
-
*
|
|
144
|
-
* 先頭・末尾の境界ページ、現在ページ周辺のページ、その間を埋める省略記号(…)を
|
|
145
|
-
* 含む配列を表示順に返します。`data-each` で繰り返して番号リンクを構築できます。
|
|
146
|
-
* `current` は 0 始まり(Spring の `Page.number` 等)を想定し、各要素の `label` は
|
|
147
|
-
* 表示用に 1 始まりへ変換した値になります。
|
|
148
|
-
*
|
|
149
|
-
* @param totalPages 総ページ数
|
|
150
|
-
* @param current 現在ページ(0 始まり)
|
|
151
|
-
* @param options 表示調整オプション(window・boundary)
|
|
152
|
-
* @returns 表示要素({@link PageItem})の配列
|
|
153
|
-
*/
|
|
154
|
-
export function pages(totalPages, current, options = {}) {
|
|
155
|
-
const total = Math.trunc(Number(totalPages));
|
|
156
|
-
if (!Number.isFinite(total) || total <= 0) {
|
|
157
|
-
return [];
|
|
158
|
-
}
|
|
159
|
-
const currentPage = Math.min(Math.max(Math.trunc(Number(current)) || 0, 0), total - 1);
|
|
160
|
-
const windowSize = Math.max(0, Math.trunc(options.window ?? 2));
|
|
161
|
-
const boundarySize = Math.max(0, Math.trunc(options.boundary ?? 1));
|
|
162
|
-
const indices = new Set();
|
|
163
|
-
for (let i = 0; i < boundarySize && i < total; i += 1) {
|
|
164
|
-
indices.add(i);
|
|
165
|
-
}
|
|
166
|
-
for (let i = Math.max(0, total - boundarySize); i < total; i += 1) {
|
|
167
|
-
indices.add(i);
|
|
168
|
-
}
|
|
169
|
-
for (let i = Math.max(0, currentPage - windowSize); i <= Math.min(total - 1, currentPage + windowSize); i += 1) {
|
|
170
|
-
indices.add(i);
|
|
171
|
-
}
|
|
172
|
-
const sorted = Array.from(indices).sort((a, b) => a - b);
|
|
173
|
-
const items = [];
|
|
174
|
-
let previous = null;
|
|
175
|
-
for (const index of sorted) {
|
|
176
|
-
if (previous !== null && index - previous > 1) {
|
|
177
|
-
items.push({ page: null, label: '…', active: false, ellipsis: true });
|
|
178
|
-
}
|
|
179
|
-
items.push({
|
|
180
|
-
page: index,
|
|
181
|
-
label: index + 1,
|
|
182
|
-
active: index === currentPage,
|
|
183
|
-
ellipsis: false,
|
|
184
|
-
});
|
|
185
|
-
previous = index;
|
|
186
|
-
}
|
|
187
|
-
return items;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* 式中の予約名前空間 `haori` として公開する組み込みヘルパー集合です。
|
|
191
|
-
*/
|
|
192
|
-
const Builtins = Object.freeze({ date, number, pages, range });
|
|
193
|
-
export default Builtins;
|
|
194
|
-
//# sourceMappingURL=builtins.js.map
|
package/dist/src/builtins.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/builtins.ts"],"names":[],"mappings":"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"}
|