@graview/core 0.1.29 → 0.1.32
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 +11 -1
- package/dist/app-places.d.ts +2 -2
- package/dist/app-places.d.ts.map +1 -1
- package/dist/app-places.js +53 -3
- package/dist/app-places.js.map +1 -1
- package/dist/app.d.ts +24 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/arrange.d.ts +3 -1
- package/dist/arrange.d.ts.map +1 -1
- package/dist/arrange.js +3 -1
- package/dist/arrange.js.map +1 -1
- package/dist/arrangement.d.ts +18 -0
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +34 -0
- package/dist/arrangement.js.map +1 -1
- package/dist/arranging.d.ts.map +1 -1
- package/dist/arranging.js +17 -6
- package/dist/arranging.js.map +1 -1
- package/dist/blocks.d.ts +1 -1
- package/dist/blocks.d.ts.map +1 -1
- package/dist/catalog.d.ts +312 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +459 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli/check/brand.d.ts.map +1 -1
- package/dist/cli/check/brand.js +29 -1
- package/dist/cli/check/brand.js.map +1 -1
- package/dist/cli/check/lenses.d.ts.map +1 -1
- package/dist/cli/check/lenses.js +6 -1
- package/dist/cli/check/lenses.js.map +1 -1
- package/dist/cli/check/relations.d.ts +23 -0
- package/dist/cli/check/relations.d.ts.map +1 -1
- package/dist/cli/check/relations.js +53 -3
- package/dist/cli/check/relations.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +32 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +27 -4
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor.d.ts +18 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +58 -5
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/document-schema.d.ts +2 -0
- package/dist/cli/document-schema.d.ts.map +1 -1
- package/dist/cli/document-schema.js +163 -5
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +6 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/conformance/fixtures.d.ts.map +1 -1
- package/dist/conformance/fixtures.js +165 -0
- package/dist/conformance/fixtures.js.map +1 -1
- package/dist/coverage-words.d.ts +18 -0
- package/dist/coverage-words.d.ts.map +1 -0
- package/dist/coverage-words.js +18 -0
- package/dist/coverage-words.js.map +1 -0
- package/dist/days.d.ts +7 -1
- package/dist/days.d.ts.map +1 -1
- package/dist/days.js +10 -4
- package/dist/days.js.map +1 -1
- package/dist/document/act-findings.d.ts.map +1 -1
- package/dist/document/act-findings.js +21 -3
- package/dist/document/act-findings.js.map +1 -1
- package/dist/document/blocks.d.ts +20 -7
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +85 -15
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/brand-check.d.ts +5 -0
- package/dist/document/brand-check.d.ts.map +1 -1
- package/dist/document/brand-check.js +16 -2
- package/dist/document/brand-check.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +12 -4
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts +0 -2
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +19 -17
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts +2 -0
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +51 -12
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/computed-values.d.ts +3 -0
- package/dist/document/computed-values.d.ts.map +1 -1
- package/dist/document/computed-values.js +12 -2
- package/dist/document/computed-values.js.map +1 -1
- package/dist/document/connection-findings.d.ts +6 -0
- package/dist/document/connection-findings.d.ts.map +1 -0
- package/dist/document/connection-findings.js +110 -0
- package/dist/document/connection-findings.js.map +1 -0
- package/dist/document/connection-spec.d.ts +38 -0
- package/dist/document/connection-spec.d.ts.map +1 -0
- package/dist/document/connection-spec.js +43 -0
- package/dist/document/connection-spec.js.map +1 -0
- package/dist/document/describe-coverage.d.ts +3 -0
- package/dist/document/describe-coverage.d.ts.map +1 -1
- package/dist/document/describe-coverage.js +12 -5
- package/dist/document/describe-coverage.js.map +1 -1
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +3 -1
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +39 -8
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +251 -15
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/evaluate.d.ts +25 -0
- package/dist/document/expr/evaluate.d.ts.map +1 -1
- package/dist/document/expr/evaluate.js +38 -0
- package/dist/document/expr/evaluate.js.map +1 -1
- package/dist/document/format-words.d.ts +1 -1
- package/dist/document/format-words.d.ts.map +1 -1
- package/dist/document/format-words.js +3 -1
- package/dist/document/format-words.js.map +1 -1
- package/dist/document/framework-path.d.ts +11 -0
- package/dist/document/framework-path.d.ts.map +1 -0
- package/dist/document/framework-path.js +122 -0
- package/dist/document/framework-path.js.map +1 -0
- package/dist/document/index.d.ts +2 -2
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/index.js +1 -1
- package/dist/document/index.js.map +1 -1
- package/dist/document/linked-findings.d.ts +5 -0
- package/dist/document/linked-findings.d.ts.map +1 -0
- package/dist/document/linked-findings.js +100 -0
- package/dist/document/linked-findings.js.map +1 -0
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +4 -1
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/policy-words.d.ts +2 -0
- package/dist/document/policy-words.d.ts.map +1 -1
- package/dist/document/policy-words.js +16 -1
- package/dist/document/policy-words.js.map +1 -1
- package/dist/document/right-names.d.ts +10 -0
- package/dist/document/right-names.d.ts.map +1 -0
- package/dist/document/right-names.js +57 -0
- package/dist/document/right-names.js.map +1 -0
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +13 -5
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +86 -8
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +64 -7
- package/dist/document/schema.js.map +1 -1
- package/dist/document/template-parse.d.ts.map +1 -1
- package/dist/document/template-parse.js +36 -3
- package/dist/document/template-parse.js.map +1 -1
- package/dist/document/template.d.ts +13 -1
- package/dist/document/template.d.ts.map +1 -1
- package/dist/document/template.js +29 -9
- package/dist/document/template.js.map +1 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +12 -0
- package/dist/document/to-document.js.map +1 -1
- package/dist/document/views.d.ts +36 -4
- package/dist/document/views.d.ts.map +1 -1
- package/dist/document/views.js +64 -21
- package/dist/document/views.js.map +1 -1
- package/dist/document.schema.json +1184 -51
- package/dist/field-sight.js +2 -2
- package/dist/field-sight.js.map +1 -1
- package/dist/forms.d.ts +1 -0
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +2 -0
- package/dist/forms.js.map +1 -1
- package/dist/graph/archived.d.ts +9 -0
- package/dist/graph/archived.d.ts.map +1 -1
- package/dist/graph/archived.js +9 -0
- package/dist/graph/archived.js.map +1 -1
- package/dist/graph/diff.d.ts +16 -0
- package/dist/graph/diff.d.ts.map +1 -1
- package/dist/graph/diff.js +18 -0
- package/dist/graph/diff.js.map +1 -1
- package/dist/graph/graph.d.ts.map +1 -1
- package/dist/graph/graph.js +5 -8
- package/dist/graph/graph.js.map +1 -1
- package/dist/grid-sort.d.ts +20 -0
- package/dist/grid-sort.d.ts.map +1 -0
- package/dist/grid-sort.js +58 -0
- package/dist/grid-sort.js.map +1 -0
- package/dist/history.d.ts +88 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +146 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +18 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/installation.d.ts +1 -1
- package/dist/kind-list.d.ts +78 -0
- package/dist/kind-list.d.ts.map +1 -0
- package/dist/kind-list.js +176 -0
- package/dist/kind-list.js.map +1 -0
- package/dist/linked.d.ts +95 -0
- package/dist/linked.d.ts.map +1 -0
- package/dist/linked.js +181 -0
- package/dist/linked.js.map +1 -0
- package/dist/mutations/arg-shape.d.ts +2 -0
- package/dist/mutations/arg-shape.d.ts.map +1 -1
- package/dist/mutations/arg-shape.js +4 -0
- package/dist/mutations/arg-shape.js.map +1 -1
- package/dist/mutations/derive-edits.d.ts.map +1 -1
- package/dist/mutations/derive-edits.js +89 -38
- package/dist/mutations/derive-edits.js.map +1 -1
- package/dist/mutations/derived-names.d.ts +3 -1
- package/dist/mutations/derived-names.d.ts.map +1 -1
- package/dist/mutations/derived-names.js +5 -3
- package/dist/mutations/derived-names.js.map +1 -1
- package/dist/mutations/edit-start.d.ts +28 -0
- package/dist/mutations/edit-start.d.ts.map +1 -0
- package/dist/mutations/edit-start.js +24 -0
- package/dist/mutations/edit-start.js.map +1 -0
- package/dist/mutations/form.d.ts +14 -0
- package/dist/mutations/form.d.ts.map +1 -1
- package/dist/mutations/form.js +5 -1
- package/dist/mutations/form.js.map +1 -1
- package/dist/mutations/kept-arguments.js +2 -2
- package/dist/mutations/kept-arguments.js.map +1 -1
- package/dist/mutations/types.d.ts +1 -1
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/navigate.d.ts +13 -0
- package/dist/navigate.d.ts.map +1 -0
- package/dist/navigate.js +13 -0
- package/dist/navigate.js.map +1 -0
- package/dist/ops/digest.d.ts +33 -0
- package/dist/ops/digest.d.ts.map +1 -0
- package/dist/ops/digest.js +47 -0
- package/dist/ops/digest.js.map +1 -0
- package/dist/ops/lineage.d.ts +13 -0
- package/dist/ops/lineage.d.ts.map +1 -1
- package/dist/ops/lineage.js +6 -4
- package/dist/ops/lineage.js.map +1 -1
- package/dist/ops/log.d.ts +6 -0
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js +19 -12
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/suggestions.d.ts +26 -0
- package/dist/ops/suggestions.d.ts.map +1 -0
- package/dist/ops/suggestions.js +21 -0
- package/dist/ops/suggestions.js.map +1 -0
- package/dist/ops/tidying.d.ts +48 -0
- package/dist/ops/tidying.d.ts.map +1 -0
- package/dist/ops/tidying.js +84 -0
- package/dist/ops/tidying.js.map +1 -0
- package/dist/ops/types.d.ts +17 -0
- package/dist/ops/types.d.ts.map +1 -1
- package/dist/ops/undo.d.ts.map +1 -1
- package/dist/ops/undo.js +10 -0
- package/dist/ops/undo.js.map +1 -1
- package/dist/past.d.ts +35 -0
- package/dist/past.d.ts.map +1 -0
- package/dist/past.js +173 -0
- package/dist/past.js.map +1 -0
- package/dist/permissions/policy.d.ts +8 -1
- package/dist/permissions/policy.d.ts.map +1 -1
- package/dist/permissions/policy.js +20 -5
- package/dist/permissions/policy.js.map +1 -1
- package/dist/places.d.ts +6 -2
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +48 -3
- package/dist/places.js.map +1 -1
- package/dist/scaffold/agents.d.ts.map +1 -1
- package/dist/scaffold/agents.js +13 -0
- package/dist/scaffold/agents.js.map +1 -1
- package/dist/scaffold/project.d.ts.map +1 -1
- package/dist/scaffold/project.js +8 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/ui.d.ts.map +1 -1
- package/dist/scaffold/ui.js +18 -5
- package/dist/scaffold/ui.js.map +1 -1
- package/dist/schema/app-address.d.ts +5 -0
- package/dist/schema/app-address.d.ts.map +1 -0
- package/dist/schema/app-address.js +10 -0
- package/dist/schema/app-address.js.map +1 -0
- package/dist/schema/app-link.d.ts +1 -4
- package/dist/schema/app-link.d.ts.map +1 -1
- package/dist/schema/app-link.js +5 -7
- package/dist/schema/app-link.js.map +1 -1
- package/dist/schema/define-node.d.ts +16 -0
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +6 -0
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/files.d.ts +8 -0
- package/dist/schema/files.d.ts.map +1 -1
- package/dist/schema/files.js.map +1 -1
- package/dist/schema/json-schema.d.ts.map +1 -1
- package/dist/schema/json-schema.js +19 -1
- package/dist/schema/json-schema.js.map +1 -1
- package/dist/schema/linked-field.d.ts +6 -0
- package/dist/schema/linked-field.d.ts.map +1 -0
- package/dist/schema/linked-field.js +34 -0
- package/dist/schema/linked-field.js.map +1 -0
- package/dist/schema/linked-reads.d.ts +20 -0
- package/dist/schema/linked-reads.d.ts.map +1 -0
- package/dist/schema/linked-reads.js +69 -0
- package/dist/schema/linked-reads.js.map +1 -0
- package/dist/schema/linked-schema.d.ts +5 -0
- package/dist/schema/linked-schema.d.ts.map +1 -0
- package/dist/schema/linked-schema.js +9 -0
- package/dist/schema/linked-schema.js.map +1 -0
- package/dist/schema/linked.d.ts +147 -0
- package/dist/schema/linked.d.ts.map +1 -0
- package/dist/schema/linked.js +151 -0
- package/dist/schema/linked.js.map +1 -0
- package/dist/schema/reading.d.ts.map +1 -1
- package/dist/schema/reading.js +82 -27
- package/dist/schema/reading.js.map +1 -1
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +11 -4
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/types.d.ts +17 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +30 -2
- package/dist/search.js.map +1 -1
- package/dist/seat-of.d.ts +9 -0
- package/dist/seat-of.d.ts.map +1 -0
- package/dist/seat-of.js +14 -0
- package/dist/seat-of.js.map +1 -0
- package/dist/seen.d.ts +0 -12
- package/dist/seen.d.ts.map +1 -1
- package/dist/seen.js +5 -0
- package/dist/seen.js.map +1 -1
- package/dist/store.d.ts +58 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +96 -11
- package/dist/store.js.map +1 -1
- package/dist/subscription-shape.d.ts +135 -0
- package/dist/subscription-shape.d.ts.map +1 -0
- package/dist/subscription-shape.js +55 -0
- package/dist/subscription-shape.js.map +1 -0
- package/dist/subscriptions.d.ts +68 -0
- package/dist/subscriptions.d.ts.map +1 -0
- package/dist/subscriptions.js +425 -0
- package/dist/subscriptions.js.map +1 -0
- package/dist/sync/connection-filter.d.ts +12 -0
- package/dist/sync/connection-filter.d.ts.map +1 -0
- package/dist/sync/connection-filter.js +34 -0
- package/dist/sync/connection-filter.js.map +1 -0
- package/dist/sync/connection.d.ts +65 -0
- package/dist/sync/connection.d.ts.map +1 -0
- package/dist/sync/connection.js +148 -0
- package/dist/sync/connection.js.map +1 -0
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +4 -0
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/google-calendar.d.ts +27 -2
- package/dist/sync/google-calendar.d.ts.map +1 -1
- package/dist/sync/google-calendar.js +55 -14
- package/dist/sync/google-calendar.js.map +1 -1
- package/dist/sync/index.d.ts +3 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/theme/derive.d.ts +16 -0
- package/dist/theme/derive.d.ts.map +1 -1
- package/dist/theme/derive.js +14 -0
- package/dist/theme/derive.js.map +1 -1
- package/dist/theme/marks.d.ts +19 -2
- package/dist/theme/marks.d.ts.map +1 -1
- package/dist/theme/marks.js +67 -2
- package/dist/theme/marks.js.map +1 -1
- package/dist/theme/types.d.ts +7 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/tidying.d.ts +62 -0
- package/dist/tidying.d.ts.map +1 -0
- package/dist/tidying.js +131 -0
- package/dist/tidying.js.map +1 -0
- package/dist/typed.d.ts +1 -1
- package/dist/typed.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/via.d.ts.map +1 -1
- package/dist/via.js +2 -1
- package/dist/via.js.map +1 -1
- package/dist/views/address.d.ts +13 -0
- package/dist/views/address.d.ts.map +1 -0
- package/dist/views/address.js +29 -0
- package/dist/views/address.js.map +1 -0
- package/dist/views/types.d.ts +52 -3
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js +4 -3
- package/dist/views/types.js.map +1 -1
- package/dist/wall-time.d.ts +60 -0
- package/dist/wall-time.d.ts.map +1 -0
- package/dist/wall-time.js +111 -0
- package/dist/wall-time.js.map +1 -0
- package/dist/when-typed.d.ts +15 -0
- package/dist/when-typed.d.ts.map +1 -0
- package/dist/when-typed.js +158 -0
- package/dist/when-typed.js.map +1 -0
- package/dist/words.d.ts +6 -1
- package/dist/words.d.ts.map +1 -1
- package/dist/words.js +6 -1
- package/dist/words.js.map +1 -1
- package/package.json +29 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** A section's words as an address carries them after `#`: lower-cased, hyphenated (`"Shipping soon"` → `shipping-soon`). */
|
|
2
|
+
export declare function sectionSlug(words: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* A PAGE'S ADDRESS, NARROWED AND TO A SECTION: a list's or a place's path
|
|
5
|
+
* with `?filter=` — the word the list's arranging line already writes
|
|
6
|
+
* (`stage:building`) — and `#<section>`, so where a view sent somebody is
|
|
7
|
+
* a link they can share. `/features?filter=stage%3Abuilding#shipping-soon`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function narrowedPath(path: string, also?: {
|
|
10
|
+
readonly filter?: string | undefined;
|
|
11
|
+
readonly section?: string | undefined;
|
|
12
|
+
}): string;
|
|
13
|
+
//# sourceMappingURL=address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/views/address.ts"],"names":[],"mappings":"AAOA,6HAA6H;AAC7H,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,GAAG,MAAM,CAO7I"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHERE A VIEW SENT SOMEBODY, AS AN ADDRESS: a list's or a place's path
|
|
3
|
+
* narrowed (`?filter=`) and to a section (`#…`). A file of its own, so the
|
|
4
|
+
* page that draws first carries none of it: the routed face and a worker
|
|
5
|
+
* view's host reach it, each fetched as it is drawn.
|
|
6
|
+
*/
|
|
7
|
+
/** A section's words as an address carries them after `#`: lower-cased, hyphenated (`"Shipping soon"` → `shipping-soon`). */
|
|
8
|
+
export function sectionSlug(words) {
|
|
9
|
+
return words
|
|
10
|
+
.toLowerCase()
|
|
11
|
+
.replace(/[^\p{L}\p{N}]+/gu, "-")
|
|
12
|
+
.replace(/^-|-$/g, "");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A PAGE'S ADDRESS, NARROWED AND TO A SECTION: a list's or a place's path
|
|
16
|
+
* with `?filter=` — the word the list's arranging line already writes
|
|
17
|
+
* (`stage:building`) — and `#<section>`, so where a view sent somebody is
|
|
18
|
+
* a link they can share. `/features?filter=stage%3Abuilding#shipping-soon`.
|
|
19
|
+
*/
|
|
20
|
+
export function narrowedPath(path, also = {}) {
|
|
21
|
+
const [pathname = "/", search = ""] = path.split("#")[0].split("?");
|
|
22
|
+
const params = new URLSearchParams(search);
|
|
23
|
+
if (also.filter)
|
|
24
|
+
params.set("filter", also.filter);
|
|
25
|
+
const query = params.toString();
|
|
26
|
+
const section = also.section ? sectionSlug(also.section) : "";
|
|
27
|
+
return `${pathname}${query ? `?${query}` : ""}${section ? `#${section}` : ""}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/views/address.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6HAA6H;AAC7H,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAwF,EAAE;IACnI,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACjF,CAAC"}
|
package/dist/views/types.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export interface ViewRegistration<V = unknown> {
|
|
|
30
30
|
readonly beside?: boolean;
|
|
31
31
|
/** Every kind the one picture is over, when it is over several (`ViewMeta.over`). */
|
|
32
32
|
readonly over?: readonly string[];
|
|
33
|
+
/** A place kept off the lists (`ViewMeta.hidden`). */
|
|
34
|
+
readonly hidden?: boolean;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* What a registration may say about itself beyond the cell it fills.
|
|
@@ -63,6 +65,15 @@ export interface ViewMeta {
|
|
|
63
65
|
* every list of places names it once.
|
|
64
66
|
*/
|
|
65
67
|
readonly over?: readonly string[];
|
|
68
|
+
/**
|
|
69
|
+
* A PLACE KEPT OFF THE LISTS: reached by its address, a link or
|
|
70
|
+
* `graview.navigate`, but not offered by the bar's places, the page list
|
|
71
|
+
* or the home's gallery — a link target of a custom home rather than a
|
|
72
|
+
* way of looking a person picks. It never takes its kind's own cell
|
|
73
|
+
* either: what a kind draws when an address names no picture is a place
|
|
74
|
+
* a person can find.
|
|
75
|
+
*/
|
|
76
|
+
readonly hidden?: boolean;
|
|
66
77
|
}
|
|
67
78
|
/** A named group view: somewhere to go, by name. */
|
|
68
79
|
export interface Place {
|
|
@@ -85,6 +96,8 @@ export interface Place {
|
|
|
85
96
|
* district goes in to it — and one place in every list (`onePerPicture`).
|
|
86
97
|
*/
|
|
87
98
|
readonly over?: readonly string[];
|
|
99
|
+
/** Kept off the lists (`ViewMeta.hidden`): reached by its address, a link or `navigate`, never offered. */
|
|
100
|
+
readonly hidden?: boolean;
|
|
88
101
|
}
|
|
89
102
|
/** A place as the lists compare it: its name, its kind, and every kind when it is one picture over several. */
|
|
90
103
|
type Pictured = {
|
|
@@ -240,9 +253,45 @@ export interface PagesArrangement {
|
|
|
240
253
|
*
|
|
241
254
|
* pages: { lists: { request: { filters: ["status", "area", "became.stage"] } } }
|
|
242
255
|
*/
|
|
243
|
-
readonly lists?: Readonly<Record<string,
|
|
244
|
-
|
|
245
|
-
|
|
256
|
+
readonly lists?: Readonly<Record<string, KindList>>;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* ONE KIND'S LIST, AS THE DECLARATION OPENS IT: what it offers to filter
|
|
260
|
+
* by, the order it opens in, and how it opens grouped. The order and the
|
|
261
|
+
* grouping are where the list starts, not a rule: a person sorts or groups
|
|
262
|
+
* it another way, and the address says so.
|
|
263
|
+
*
|
|
264
|
+
* lists: { request: {
|
|
265
|
+
* filters: ["status", "area"],
|
|
266
|
+
* sort: { by: "votes", direction: "desc", then: "label" },
|
|
267
|
+
* group: { by: "status", order: ["new", "planned", "done", "declined"], closed: ["done", "declined"] },
|
|
268
|
+
* } }
|
|
269
|
+
*/
|
|
270
|
+
export interface KindList {
|
|
271
|
+
readonly filters?: readonly string[];
|
|
272
|
+
/** A field, a computed field or `label`, lowest first — or with a direction and a tiebreak. */
|
|
273
|
+
readonly sort?: string | KindListSort;
|
|
274
|
+
/** A choice or yes-or-no field — or with the groups' order and which are closed. */
|
|
275
|
+
readonly group?: string | KindListGroup;
|
|
276
|
+
}
|
|
277
|
+
export interface KindListSort {
|
|
278
|
+
/** `label`, a field, or a computed field (a rank worked out from the record). */
|
|
279
|
+
readonly by: string;
|
|
280
|
+
/** `asc` (lowest, earliest, A to Z first) when unsaid. */
|
|
281
|
+
readonly direction?: "asc" | "desc";
|
|
282
|
+
/** What orders records that tie: a key, ascending, or `{ by, direction }`. */
|
|
283
|
+
readonly then?: string | {
|
|
284
|
+
readonly by: string;
|
|
285
|
+
readonly direction?: "asc" | "desc";
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
export interface KindListGroup {
|
|
289
|
+
/** A choice field, or a yes-or-no field (its values `"true"` and `"false"`). */
|
|
290
|
+
readonly by: string;
|
|
291
|
+
/** The groups in this order; the values it leaves out follow in their declared order. */
|
|
292
|
+
readonly order?: readonly string[];
|
|
293
|
+
/** The groups drawn last and closed, each said with its count ("done · 12"): what is finished with. */
|
|
294
|
+
readonly closed?: readonly string[];
|
|
246
295
|
}
|
|
247
296
|
export {};
|
|
248
297
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnE,2DAA2D;AAC3D,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAAiC,CAAC;AAE5E,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"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"}
|
package/dist/views/types.js
CHANGED
|
@@ -76,8 +76,8 @@ export function createViewRegistry(_schema) {
|
|
|
76
76
|
},
|
|
77
77
|
homeView: () => homeView,
|
|
78
78
|
register(kind, cell, view, meta) {
|
|
79
|
-
// One picture over several kinds says so on each registration and each place it makes.
|
|
80
|
-
const over = meta?.over?.[1] ? { over: meta.over } : {};
|
|
79
|
+
// One picture over several kinds says so on each registration and each place it makes; one kept off the lists, likewise.
|
|
80
|
+
const over = { ...(meta?.over?.[1] ? { over: meta.over } : {}), ...(meta?.hidden ? { hidden: true } : {}) };
|
|
81
81
|
const registration = {
|
|
82
82
|
kind,
|
|
83
83
|
cardinality: cell.cardinality,
|
|
@@ -99,7 +99,8 @@ export function createViewRegistry(_schema) {
|
|
|
99
99
|
* kind could only ever have one answer.
|
|
100
100
|
*/
|
|
101
101
|
order.push(registration);
|
|
102
|
-
|
|
102
|
+
// A place beside the kind's pictures, or one kept off the lists, is reached by its name alone.
|
|
103
|
+
if (!meta?.beside && !over.hidden)
|
|
103
104
|
entries.set(key(kind, cell), registration);
|
|
104
105
|
if (meta?.title) {
|
|
105
106
|
const as = placeSlug(meta.title);
|
package/dist/views/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAgG5E,qFAAqF;AACrF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAW,EAAE,CAAW,EAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEzH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAqB,MAAoB,EAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5K,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAiF,EAAE,IAAY;IACtH,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,MAAiF,EAAE,IAAY,EAAE,EAAU;IACpI,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU,EAAE,EAAW;IAC/C,OAAO,WAAW,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzF,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,aAAa,CAAC,KAAe,EAAE,MAA2B;IACxE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAA4C,EAAE,MAA2B,EAAE,MAAiF;IACrL,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACzJ,CAAC;AA+DD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,IAAc,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CACpD,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;AAEvD,2EAA2E;AAC3E,SAAS,SAAS,CAAC,QAAkB;IACnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,KAAK,OAAO;YACV,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAU;IAEV,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvD,yDAAyD;IACzD,MAAM,KAAK,GAAY,EAAE,CAAC;IAC1B,oDAAoD;IACpD,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,IAAI,QAAsC,CAAC;IAC3C,IAAI,QAAuB,CAAC;IAE5B,MAAM,QAAQ,GAAuB;QACnC,OAAO,CAAC,WAAW;YACjB,IAAI,WAAW,KAAK,SAAS;gBAAE,QAAQ,GAAG,WAAW,CAAC;YACtD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC3B,IAAI,CAAC,IAAI;YACP,IAAI,IAAI,KAAK,SAAS;gBAAE,QAAQ,GAAG,IAAI,CAAC;YACxC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC7B,yHAAyH;YACzH,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5G,MAAM,YAAY,GAAwB;gBACxC,IAAI;gBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI;gBACJ,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,GAAG,IAAI;aACR,CAAC;YACF;;;;;;;;;eASG;YACH,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,+FAA+F;YAC/F,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAC9E,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;gBAChB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC/C,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBAClG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;QACnB,MAAM,CAAC,IAAI,EAAE,EAAE;YACb,KAAK,MAAM,QAAQ,IAAI,UAAU;gBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACpG,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,IAAI,EAAE,IAAI,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,IAAI;YACf,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACpB,IAAI,EAAE,EAAE,CAAC;gBACP,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACtF,IAAI,KAAK;wBAAE,OAAO,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAClF,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC;YAC1B,CAAC;YACD,uEAAuE;YACvE,qEAAqE;YACrE,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC/B,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACxE,IAAI,KAAK;wBAAE,OAAO,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;QAC1B,GAAG;YACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,cAAc;YACZ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** A day and, where it has one, a time of day in minutes after midnight, on the reader's wall. */
|
|
2
|
+
export interface WallTime {
|
|
3
|
+
/** `YYYY-MM-DD`. */
|
|
4
|
+
readonly day: string;
|
|
5
|
+
readonly minutes?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const DAY_MS = 86400000;
|
|
8
|
+
export declare const pad: (n: number) => string;
|
|
9
|
+
export declare const dayOfUtc: (stamp: number) => string;
|
|
10
|
+
export declare const utcOf: (day: string) => number;
|
|
11
|
+
export declare const addDays: (day: string, days: number) => string;
|
|
12
|
+
export declare const weekdayOf: (day: string) => number;
|
|
13
|
+
/** A real day of the calendar, or undefined: "2026-02-31" is none. */
|
|
14
|
+
export declare function dayFrom(year: number, month: number, date: number): string | undefined;
|
|
15
|
+
/** The reader's wall time now: today, and the minutes since midnight. */
|
|
16
|
+
export declare function wallNow(at?: Date): WallTime & {
|
|
17
|
+
readonly minutes: number;
|
|
18
|
+
};
|
|
19
|
+
/** Whether a stored moment names an instant: it carries a `Z` or an offset after its time. */
|
|
20
|
+
export declare const namesInstant: (value: string) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* A stored day or moment as a wall time: an instant on the reader's clock, a
|
|
23
|
+
* wall time as it was written, a day as a day. Undefined for anything that
|
|
24
|
+
* is not a date.
|
|
25
|
+
*/
|
|
26
|
+
export declare function wallOfStored(value: unknown): WallTime | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* A wall time as the field keeps it: a day as `YYYY-MM-DD`; a moment as an
|
|
29
|
+
* instant in UTC (`2026-10-17T19:00:00Z`) where the field keeps instants, or
|
|
30
|
+
* as the wall time written (`2026-10-17T15:00`) where it takes no zone.
|
|
31
|
+
*/
|
|
32
|
+
export declare function storedOfWall(wall: WallTime, options: {
|
|
33
|
+
readonly time: boolean;
|
|
34
|
+
readonly instant: boolean;
|
|
35
|
+
}): string;
|
|
36
|
+
/** The reader's time zone, by name and as it is said short: "America/New_York", "EDT". */
|
|
37
|
+
export declare function zoneSaid(locale?: string, at?: Date): {
|
|
38
|
+
readonly zone: string;
|
|
39
|
+
readonly short: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Where an end goes when its start moves: as far as the start moved, so a
|
|
43
|
+
* meeting keeps its length. A start given for the first time puts an empty
|
|
44
|
+
* end an hour after it, where the two hold times; a day's end is left for
|
|
45
|
+
* the person to say. An end already given, with no start before, is kept.
|
|
46
|
+
*/
|
|
47
|
+
export declare function endAfterStartMoved(before: string | undefined, after: string, end: string | undefined, options: {
|
|
48
|
+
readonly time: boolean;
|
|
49
|
+
readonly instant: boolean;
|
|
50
|
+
}): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Which of a kind's (or an act's) date fields is a start and which its end:
|
|
53
|
+
* its `start` and `end` roles where it declares them, else the fields named
|
|
54
|
+
* for them. Undefined unless both are there.
|
|
55
|
+
*/
|
|
56
|
+
export declare function startAndEndOf(fields: readonly string[], roles?: Readonly<Record<string, string | undefined>>): {
|
|
57
|
+
readonly start: string;
|
|
58
|
+
readonly end: string;
|
|
59
|
+
} | undefined;
|
|
60
|
+
//# sourceMappingURL=wall-time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-time.d.ts","sourceRoot":"","sources":["../src/wall-time.ts"],"names":[],"mappings":"AAWA,kGAAkG;AAClG,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,MAAM,WAAa,CAAC;AAGjC,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,MAAoC,CAAC;AACrE,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,MAAoD,CAAC;AAC9F,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,MAA6E,CAAC;AAClH,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,KAAG,MAA8C,CAAC;AACnG,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,MAA0C,CAAC;AAEnF,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIrF;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,EAAE,GAAE,IAAiB,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEtF;AAED,8FAA8F;AAC9F,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OAAgE,CAAC;AAE9G;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAOnH;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,GAAE,IAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASlH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7D,MAAM,GAAG,SAAS,CAapB;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAM,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI/K"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A DAY AND A TIME ON THE READER'S WALL, AND AS A FIELD KEEPS THEM (Roadmap
|
|
3
|
+
* f-date-inputs): an instant read back on the reader's clock, a wall time
|
|
4
|
+
* kept as an instant in UTC or as written, the zone it is read in, and an
|
|
5
|
+
* end that moves with its start. Apart from the reading of what is typed
|
|
6
|
+
* (`when-typed.ts`), which only a date's editor needs, so that what a
|
|
7
|
+
* record's value and the calendar draw with carries none of it.
|
|
8
|
+
*/
|
|
9
|
+
import { DEFAULT_LOCALE } from "./days.js";
|
|
10
|
+
export const DAY_MS = 86_400_000;
|
|
11
|
+
const ISO_DAY_AT_START = /^(\d{4})-(\d{2})-(\d{2})/;
|
|
12
|
+
export const pad = (n) => String(n).padStart(2, "0");
|
|
13
|
+
export const dayOfUtc = (stamp) => new Date(stamp).toISOString().slice(0, 10);
|
|
14
|
+
export const utcOf = (day) => Date.UTC(+day.slice(0, 4), +day.slice(5, 7) - 1, +day.slice(8, 10));
|
|
15
|
+
export const addDays = (day, days) => dayOfUtc(utcOf(day) + days * DAY_MS);
|
|
16
|
+
export const weekdayOf = (day) => new Date(utcOf(day)).getUTCDay();
|
|
17
|
+
/** A real day of the calendar, or undefined: "2026-02-31" is none. */
|
|
18
|
+
export function dayFrom(year, month, date) {
|
|
19
|
+
if (!(month >= 1 && month <= 12 && date >= 1 && date <= 31))
|
|
20
|
+
return undefined;
|
|
21
|
+
const day = `${String(year).padStart(4, "0")}-${pad(month)}-${pad(date)}`;
|
|
22
|
+
return dayOfUtc(utcOf(day)) === day ? day : undefined;
|
|
23
|
+
}
|
|
24
|
+
/** The reader's wall time now: today, and the minutes since midnight. */
|
|
25
|
+
export function wallNow(at = new Date()) {
|
|
26
|
+
return { day: `${at.getFullYear()}-${pad(at.getMonth() + 1)}-${pad(at.getDate())}`, minutes: at.getHours() * 60 + at.getMinutes() };
|
|
27
|
+
}
|
|
28
|
+
/** Whether a stored moment names an instant: it carries a `Z` or an offset after its time. */
|
|
29
|
+
export const namesInstant = (value) => /T\d\d:\d\d(:[\d.]+)?(Z|[+-]\d\d:?\d\d)$/.test(value);
|
|
30
|
+
/**
|
|
31
|
+
* A stored day or moment as a wall time: an instant on the reader's clock, a
|
|
32
|
+
* wall time as it was written, a day as a day. Undefined for anything that
|
|
33
|
+
* is not a date.
|
|
34
|
+
*/
|
|
35
|
+
export function wallOfStored(value) {
|
|
36
|
+
if (typeof value !== "string")
|
|
37
|
+
return undefined;
|
|
38
|
+
if (namesInstant(value)) {
|
|
39
|
+
const at = new Date(value);
|
|
40
|
+
return Number.isNaN(at.getTime()) ? undefined : wallNow(at);
|
|
41
|
+
}
|
|
42
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(value);
|
|
43
|
+
if (!match || !dayFrom(Number(match[1]), Number(match[2]), Number(match[3])))
|
|
44
|
+
return undefined;
|
|
45
|
+
const day = value.slice(0, 10);
|
|
46
|
+
return match[4] === undefined ? { day } : { day, minutes: Number(match[4]) * 60 + Number(match[5]) };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A wall time as the field keeps it: a day as `YYYY-MM-DD`; a moment as an
|
|
50
|
+
* instant in UTC (`2026-10-17T19:00:00Z`) where the field keeps instants, or
|
|
51
|
+
* as the wall time written (`2026-10-17T15:00`) where it takes no zone.
|
|
52
|
+
*/
|
|
53
|
+
export function storedOfWall(wall, options) {
|
|
54
|
+
if (!options.time)
|
|
55
|
+
return wall.day;
|
|
56
|
+
const minutes = wall.minutes ?? 9 * 60;
|
|
57
|
+
if (!options.instant)
|
|
58
|
+
return `${wall.day}T${pad(Math.floor(minutes / 60))}:${pad(minutes % 60)}`;
|
|
59
|
+
const [, year, month, date] = ISO_DAY_AT_START.exec(wall.day);
|
|
60
|
+
const at = new Date(Number(year), Number(month) - 1, Number(date), Math.floor(minutes / 60), minutes % 60);
|
|
61
|
+
return at.toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
62
|
+
}
|
|
63
|
+
/** The reader's time zone, by name and as it is said short: "America/New_York", "EDT". */
|
|
64
|
+
export function zoneSaid(locale, at = new Date()) {
|
|
65
|
+
const zone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? "UTC";
|
|
66
|
+
let short = zone;
|
|
67
|
+
try {
|
|
68
|
+
short = new Intl.DateTimeFormat(locale ?? DEFAULT_LOCALE, { timeZoneName: "short" }).formatToParts(at).find((part) => part.type === "timeZoneName")?.value ?? zone;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
short = zone;
|
|
72
|
+
}
|
|
73
|
+
return { zone, short };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Where an end goes when its start moves: as far as the start moved, so a
|
|
77
|
+
* meeting keeps its length. A start given for the first time puts an empty
|
|
78
|
+
* end an hour after it, where the two hold times; a day's end is left for
|
|
79
|
+
* the person to say. An end already given, with no start before, is kept.
|
|
80
|
+
*/
|
|
81
|
+
export function endAfterStartMoved(before, after, end, options) {
|
|
82
|
+
const moved = wallOfStored(after);
|
|
83
|
+
if (!moved)
|
|
84
|
+
return end;
|
|
85
|
+
const was = before === undefined ? undefined : wallOfStored(before);
|
|
86
|
+
const ending = end === undefined ? undefined : wallOfStored(end);
|
|
87
|
+
const at = (wall) => utcOf(wall.day) + (wall.minutes ?? 0) * 60_000;
|
|
88
|
+
const shifted = (from, by) => {
|
|
89
|
+
const stamp = at(from) + by;
|
|
90
|
+
return { day: dayOfUtc(stamp), ...(options.time ? { minutes: Math.round((stamp % DAY_MS) / 60_000) } : {}) };
|
|
91
|
+
};
|
|
92
|
+
if (was && ending)
|
|
93
|
+
return storedOfWall(shifted(ending, at(moved) - at(was)), options);
|
|
94
|
+
if (ending && at(ending) >= at(moved))
|
|
95
|
+
return end;
|
|
96
|
+
return options.time ? storedOfWall(shifted(moved, 3_600_000), options) : end;
|
|
97
|
+
}
|
|
98
|
+
/** A field that says when something starts, and one that says when it ends. */
|
|
99
|
+
const STARTS = /^(start|starts|startsAt|startsOn|startAt|begins|from|opens|checkIn)$/i;
|
|
100
|
+
const ENDS = /^(end|ends|endsAt|endsOn|endAt|until|to|finish|finishes|closes|through|checkOut)$/i;
|
|
101
|
+
/**
|
|
102
|
+
* Which of a kind's (or an act's) date fields is a start and which its end:
|
|
103
|
+
* its `start` and `end` roles where it declares them, else the fields named
|
|
104
|
+
* for them. Undefined unless both are there.
|
|
105
|
+
*/
|
|
106
|
+
export function startAndEndOf(fields, roles = {}) {
|
|
107
|
+
const start = (roles["start"] && fields.includes(roles["start"]) ? roles["start"] : undefined) ?? fields.find((field) => STARTS.test(field));
|
|
108
|
+
const end = (roles["end"] && fields.includes(roles["end"]) ? roles["end"] : undefined) ?? fields.find((field) => field !== start && ENDS.test(field));
|
|
109
|
+
return start && end ? { start, end } : undefined;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=wall-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-time.js","sourceRoot":"","sources":["../src/wall-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type WallTime } from "./wall-time.js";
|
|
2
|
+
/**
|
|
3
|
+
* What a person typed, read as a day and — for a field with a time — a time
|
|
4
|
+
* of day on their wall. `today` is the reader's today; `base` is what the
|
|
5
|
+
* field held, so a time typed alone keeps its day and a day typed alone keeps
|
|
6
|
+
* its time (else 9 in the morning). A time typed for a field that holds only
|
|
7
|
+
* a day is let go. Undefined when the words name no day this can read.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readWhenTyped(text: string, options: {
|
|
10
|
+
readonly today: string;
|
|
11
|
+
readonly time: boolean;
|
|
12
|
+
readonly base?: WallTime;
|
|
13
|
+
readonly locale?: string;
|
|
14
|
+
}): WallTime | undefined;
|
|
15
|
+
//# sourceMappingURL=when-typed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when-typed.d.ts","sourceRoot":"","sources":["../src/when-typed.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA8C,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAwG3F;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9G,QAAQ,GAAG,SAAS,CAYtB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A DAY OR A MOMENT, TYPED AS PEOPLE SAY IT (Roadmap f-date-inputs).
|
|
3
|
+
*
|
|
4
|
+
* "tomorrow 3pm", "Fri 10:30", "17 Oct", "in 2 weeks", "10/17": every
|
|
5
|
+
* surface that asks for a date — a record's value changed in place, a
|
|
6
|
+
* card's, an act's form on either face — reads what was typed here, so the
|
|
7
|
+
* same words mean the same day everywhere. What cannot be read is refused,
|
|
8
|
+
* never guessed: "sometime soon" is no day, and "31 Feb" is none either.
|
|
9
|
+
*
|
|
10
|
+
* WALL TIME AND INSTANTS. What is typed is a time on the reader's wall
|
|
11
|
+
* (`WallTime`: a day and, with a time, minutes after midnight). A field that
|
|
12
|
+
* keeps an instant — a document's `datetime` — stores it in UTC with its
|
|
13
|
+
* `Z`, so a meeting set in New York is the same moment read in London; a
|
|
14
|
+
* field whose own pattern takes a bare `YYYY-MM-DDTHH:MM` keeps the wall
|
|
15
|
+
* time as written. Reading back (`wallOfStored`) puts an instant on the
|
|
16
|
+
* reader's clock and a wall time where it was written.
|
|
17
|
+
*/
|
|
18
|
+
import { DEFAULT_LOCALE } from "./days.js";
|
|
19
|
+
import { addDays, dayFrom, utcOf, weekdayOf, DAY_MS } from "./wall-time.js";
|
|
20
|
+
const MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
|
|
21
|
+
const WEEKDAYS = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
|
|
22
|
+
const MONTH_WORD = "(jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|june?|july?|aug(?:ust)?|sept?(?:ember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)";
|
|
23
|
+
const WEEKDAY_WORD = "(sun(?:day)?|mon(?:day)?|tue(?:s|sday)?|wed(?:nesday)?|thu(?:r|rs|rsday)?|fri(?:day)?|sat(?:urday)?)";
|
|
24
|
+
const monthOf = (word) => MONTHS.indexOf(word.slice(0, 3)) + 1;
|
|
25
|
+
const fullYear = (year) => (year === undefined ? undefined : year.length === 2 ? 2000 + Number(year) : Number(year));
|
|
26
|
+
/** Whether a locale writes the month before the day in digits: 10/17 in the US, 17/10 nearly everywhere else. */
|
|
27
|
+
function monthFirst(locale) {
|
|
28
|
+
try {
|
|
29
|
+
const parts = new Intl.DateTimeFormat(locale, { month: "numeric", day: "numeric" }).formatToParts(0).map((part) => part.type);
|
|
30
|
+
return parts.indexOf("month") < parts.indexOf("day");
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/*
|
|
37
|
+
* A time of day, taken out of the words: "3pm", "3:30 p.m.", "15:30", "noon",
|
|
38
|
+
* "at 3". What is left is the day. An hour past what a clock shows is no
|
|
39
|
+
* time ("25pm"), and the whole reading fails rather than dropping it.
|
|
40
|
+
*/
|
|
41
|
+
function timeIn(text) {
|
|
42
|
+
const take = (match, minutes) => ({ minutes, rest: `${text.slice(0, match.index)} ${text.slice(match.index + match[0].length)}` });
|
|
43
|
+
let match = /\b(noon|midday)\b/.exec(text);
|
|
44
|
+
if (match)
|
|
45
|
+
return take(match, 12 * 60);
|
|
46
|
+
match = /\bmidnight\b/.exec(text);
|
|
47
|
+
if (match)
|
|
48
|
+
return take(match, 0);
|
|
49
|
+
match = /\b(\d{1,2})(?::(\d{2}))?\s*([ap])\.?m?\.?(?=\s|$)/.exec(text);
|
|
50
|
+
if (match) {
|
|
51
|
+
const hour = Number(match[1]);
|
|
52
|
+
const minute = Number(match[2] ?? 0);
|
|
53
|
+
if (hour < 1 || hour > 12 || minute > 59)
|
|
54
|
+
return { rest: text, bad: true };
|
|
55
|
+
return take(match, ((hour % 12) + (match[3] === "p" ? 12 : 0)) * 60 + minute);
|
|
56
|
+
}
|
|
57
|
+
match = /\b(\d{1,2}):(\d{2})\b/.exec(text);
|
|
58
|
+
if (match) {
|
|
59
|
+
const hour = Number(match[1]);
|
|
60
|
+
const minute = Number(match[2]);
|
|
61
|
+
if (hour > 23 || minute > 59)
|
|
62
|
+
return { rest: text, bad: true };
|
|
63
|
+
return take(match, hour * 60 + minute);
|
|
64
|
+
}
|
|
65
|
+
// "at 3" is an hour of the working day: 1 to 7 are the afternoon's.
|
|
66
|
+
match = /\bat\s+(\d{1,2})\b/.exec(text);
|
|
67
|
+
if (match) {
|
|
68
|
+
const hour = Number(match[1]);
|
|
69
|
+
if (hour > 23)
|
|
70
|
+
return { rest: text, bad: true };
|
|
71
|
+
return take(match, (hour >= 1 && hour <= 7 ? hour + 12 : hour) * 60);
|
|
72
|
+
}
|
|
73
|
+
const part = /\b(morning|afternoon|evening|tonight)\b/.exec(text);
|
|
74
|
+
if (part) {
|
|
75
|
+
const minutes = { morning: 9, afternoon: 15, evening: 18, tonight: 20 }[part[1]] * 60;
|
|
76
|
+
// "tonight" is a day as well as a time: today's.
|
|
77
|
+
return { minutes, rest: part[1] === "tonight" ? `${text.slice(0, part.index)} today ${text.slice(part.index + part[0].length)}` : `${text.slice(0, part.index)} ${text.slice(part.index + part[0].length)}` };
|
|
78
|
+
}
|
|
79
|
+
return { rest: text };
|
|
80
|
+
}
|
|
81
|
+
/** The day the rest of the words name, from `today`; undefined when they name none, or name it in words not read here. */
|
|
82
|
+
function dayIn(text, today, locale) {
|
|
83
|
+
const words = text.replace(/\b(on|at|the|of|this)\b/g, " ").replace(/\s+/g, " ").trim();
|
|
84
|
+
if (words === "")
|
|
85
|
+
return null;
|
|
86
|
+
if (words === "today" || words === "now")
|
|
87
|
+
return today;
|
|
88
|
+
if (words === "tomorrow" || words === "tmrw" || words === "tmr")
|
|
89
|
+
return addDays(today, 1);
|
|
90
|
+
if (words === "yesterday")
|
|
91
|
+
return addDays(today, -1);
|
|
92
|
+
if (words === "next week")
|
|
93
|
+
return addDays(today, 7);
|
|
94
|
+
let match = /^in (\d{1,3}) (day|days|week|weeks)$/.exec(words);
|
|
95
|
+
if (match)
|
|
96
|
+
return addDays(today, Number(match[1]) * (match[2].startsWith("week") ? 7 : 1));
|
|
97
|
+
match = new RegExp(`^(next )?${WEEKDAY_WORD}$`).exec(words);
|
|
98
|
+
if (match) {
|
|
99
|
+
const wanted = WEEKDAYS.indexOf(match[2].slice(0, 3));
|
|
100
|
+
const ahead = (wanted - weekdayOf(today) + 7) % 7;
|
|
101
|
+
return addDays(today, match[1] && ahead === 0 ? 7 : ahead);
|
|
102
|
+
}
|
|
103
|
+
match = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(words);
|
|
104
|
+
if (match)
|
|
105
|
+
return dayFrom(Number(match[1]), Number(match[2]), Number(match[3]));
|
|
106
|
+
// A month said in words: "17 Oct", "Oct 17", "October 17th 2027", with or without its weekday.
|
|
107
|
+
const bare = words.replace(new RegExp(`^${WEEKDAY_WORD} `), "");
|
|
108
|
+
match = new RegExp(`^(\\d{1,2})(?:st|nd|rd|th)? ${MONTH_WORD}(?: (\\d{4}))?$`).exec(bare);
|
|
109
|
+
const said = match ? { date: match[1], month: match[2], year: match[3] } : undefined;
|
|
110
|
+
match = new RegExp(`^${MONTH_WORD} (\\d{1,2})(?:st|nd|rd|th)?(?: (\\d{4}))?$`).exec(bare);
|
|
111
|
+
const named = said ?? (match ? { date: match[2], month: match[1], year: match[3] } : undefined);
|
|
112
|
+
if (named)
|
|
113
|
+
return near(today, fullYear(named.year), monthOf(named.month), Number(named.date));
|
|
114
|
+
// Digits in the reader's order: 10/17 in the US, 17/10 in Britain.
|
|
115
|
+
match = /^(\d{1,2})[/.-](\d{1,2})(?:[/.-](\d{2}|\d{4}))?$/.exec(bare);
|
|
116
|
+
if (match) {
|
|
117
|
+
const [first, second] = [Number(match[1]), Number(match[2])];
|
|
118
|
+
const [month, date] = monthFirst(locale) ? [first, second] : [second, first];
|
|
119
|
+
return near(today, fullYear(match[3]), month, date);
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
/** A day of a month: in the year said, else this year — unless that is more than half a year gone, when it is next year's. */
|
|
124
|
+
function near(today, year, month, date) {
|
|
125
|
+
if (year !== undefined)
|
|
126
|
+
return dayFrom(year, month, date);
|
|
127
|
+
const thisYear = Number(today.slice(0, 4));
|
|
128
|
+
const day = dayFrom(thisYear, month, date);
|
|
129
|
+
if (day === undefined)
|
|
130
|
+
return dayFrom(thisYear + 1, month, date);
|
|
131
|
+
return utcOf(today) - utcOf(day) > 183 * DAY_MS ? dayFrom(thisYear + 1, month, date) : day;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* What a person typed, read as a day and — for a field with a time — a time
|
|
135
|
+
* of day on their wall. `today` is the reader's today; `base` is what the
|
|
136
|
+
* field held, so a time typed alone keeps its day and a day typed alone keeps
|
|
137
|
+
* its time (else 9 in the morning). A time typed for a field that holds only
|
|
138
|
+
* a day is let go. Undefined when the words name no day this can read.
|
|
139
|
+
*/
|
|
140
|
+
export function readWhenTyped(text, options) {
|
|
141
|
+
// A moment as a record keeps one, pasted or typed: "2026-10-17T15:00" is a day and a time.
|
|
142
|
+
const typed = text.toLowerCase().replace(/,/g, " ").replace(/(\d{4}-\d{2}-\d{2})t(?=\d)/, "$1 ").replace(/\s+/g, " ").trim();
|
|
143
|
+
if (typed === "")
|
|
144
|
+
return undefined;
|
|
145
|
+
const time = timeIn(typed);
|
|
146
|
+
if (time.bad)
|
|
147
|
+
return undefined;
|
|
148
|
+
const day = dayIn(time.rest, options.today, options.locale ?? DEFAULT_LOCALE);
|
|
149
|
+
if (day === undefined)
|
|
150
|
+
return undefined;
|
|
151
|
+
if (day === null && time.minutes === undefined)
|
|
152
|
+
return undefined;
|
|
153
|
+
const on = day ?? options.base?.day ?? options.today;
|
|
154
|
+
if (!options.time)
|
|
155
|
+
return { day: on };
|
|
156
|
+
return { day: on, minutes: time.minutes ?? options.base?.minutes ?? 9 * 60 };
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=when-typed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when-typed.js","sourceRoot":"","sources":["../src/when-typed.ts"],"names":[],"mappings":"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"}
|
package/dist/words.d.ts
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* `failureWords`), the channel a change came through (`viaSaid`), a
|
|
9
9
|
* field's value and a relation in the declaration's words (`valueWords`,
|
|
10
10
|
* `edgeWords`), and an amount asked for as it is said (`amountBox`,
|
|
11
|
-
* `amountInBox`, `readAmount`)
|
|
11
|
+
* `amountInBox`, `readAmount`), and a date typed as
|
|
12
|
+
* people say it (`readWhenTyped`, `storedOfWall`, `wallOfStored`, `zoneSaid`,
|
|
13
|
+
* `endAfterStartMoved`, `startAndEndOf`).
|
|
12
14
|
*
|
|
13
15
|
* Apart from `@graview/core` because a bundler places a whole file in a
|
|
14
16
|
* page's first chunk when the first chunk can reach it and any chunk uses
|
|
@@ -30,4 +32,7 @@ export { fieldSays, mapsHref, parseDuration, sayDuration, sayPhone, telHref, typ
|
|
|
30
32
|
export { typedFieldOf } from "./schema/typed-field-of.js";
|
|
31
33
|
export { amountBox, amountInBox, readAmount } from "./amount-input.js";
|
|
32
34
|
export type { AmountBox } from "./amount-input.js";
|
|
35
|
+
export { readWhenTyped } from "./when-typed.js";
|
|
36
|
+
export { endAfterStartMoved, namesInstant, startAndEndOf, storedOfWall, wallNow, wallOfStored, zoneSaid } from "./wall-time.js";
|
|
37
|
+
export type { WallTime } from "./wall-time.js";
|
|
33
38
|
//# sourceMappingURL=words.d.ts.map
|
package/dist/words.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAChI,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|