@aquera/nile-elements 2.0.0 → 2.0.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.md +11 -0
- package/demo/nxtgen-dark.css +2 -2
- package/dist/{index-ccff99d6.esm.js → index-0fe57384.esm.js} +1 -1
- package/dist/index-f6944844.cjs.js +2 -0
- package/dist/{index-e43755f5.cjs.js.map → index-f6944844.cjs.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1127 -741
- package/dist/nile-code-editor/extensionSetup.cjs.js +1 -1
- package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
- package/dist/nile-code-editor/index.cjs.js +1 -1
- package/dist/nile-code-editor/index.esm.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
- package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.css.cjs.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.css.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.css.esm.js +2 -2
- package/dist/nile-code-editor/nile-code-editor.esm.js +4 -4
- package/dist/nile-code-editor/theme.cjs.js +1 -1
- package/dist/nile-code-editor/theme.cjs.js.map +1 -1
- package/dist/nile-code-editor/theme.esm.js +1 -1
- package/dist/nile-combobox/nile-combobox.css.cjs.js +1 -1
- package/dist/nile-combobox/nile-combobox.css.cjs.js.map +1 -1
- package/dist/nile-combobox/nile-combobox.css.esm.js +1 -1
- package/dist/nile-detail/nile-detail.css.cjs.js +1 -1
- package/dist/nile-detail/nile-detail.css.cjs.js.map +1 -1
- package/dist/nile-detail/nile-detail.css.esm.js +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js.map +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.css.esm.js +3 -3
- package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.css.cjs.js +1 -1
- package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.css.cjs.js.map +1 -1
- package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.css.esm.js +13 -7
- package/dist/nile-timestamp-builder/index.cjs.js +2 -0
- package/dist/nile-timestamp-builder/index.cjs.js.map +1 -0
- package/dist/nile-timestamp-builder/index.esm.js +1 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder-utils.cjs.js +2 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder-utils.cjs.js.map +1 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder-utils.esm.js +1 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder.cjs.js +2 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder.cjs.js.map +1 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder.css.cjs.js +2 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder.css.cjs.js.map +1 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder.css.esm.js +195 -0
- package/dist/nile-timestamp-builder/nile-timestamp-builder.esm.js +154 -0
- package/dist/nile-timestamp-builder/timezones.cjs.js +2 -0
- package/dist/nile-timestamp-builder/timezones.cjs.js.map +1 -0
- package/dist/nile-timestamp-builder/timezones.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.esm.js +91 -58
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.esm.js +19 -19
- package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/bookmark-panel.esm.js +14 -14
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +13 -13
- package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/code-block-menu.esm.js +12 -12
- package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +10 -10
- package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-panel.esm.js +4 -4
- package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/emoji-picker.esm.js +11 -11
- package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/find-replace.esm.js +9 -9
- package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +11 -11
- package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/image-panel.esm.js +6 -6
- package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/insert-menu.esm.js +14 -14
- package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/link-editor.esm.js +16 -16
- package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/markdown-panel.esm.js +8 -8
- package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/math-panel.esm.js +4 -4
- package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/shortcut-help.esm.js +16 -16
- package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/source-view.esm.js +29 -29
- package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/special-chars.esm.js +8 -8
- package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/suggest-list.esm.js +9 -9
- package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/table-grid-picker.esm.js +23 -23
- package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +7 -7
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.css.js +2 -2
- package/dist/src/nile-code-editor/nile-code-editor.css.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.d.ts +15 -0
- package/dist/src/nile-code-editor/nile-code-editor.js +65 -6
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-code-editor/theme.d.ts +6 -117
- package/dist/src/nile-code-editor/theme.js +100 -147
- package/dist/src/nile-code-editor/theme.js.map +1 -1
- package/dist/src/nile-combobox/nile-combobox.css.js +1 -1
- package/dist/src/nile-combobox/nile-combobox.css.js.map +1 -1
- package/dist/src/nile-detail/nile-detail.css.js +1 -1
- package/dist/src/nile-detail/nile-detail.css.js.map +1 -1
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js +3 -3
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js.map +1 -1
- package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.css.js +11 -5
- package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.css.js.map +1 -1
- package/dist/src/nile-timestamp-builder/index.d.ts +1 -0
- package/dist/src/nile-timestamp-builder/index.js +2 -0
- package/dist/src/nile-timestamp-builder/index.js.map +1 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder-utils.d.ts +54 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder-utils.js +254 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder-utils.js.map +1 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.css.d.ts +7 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.css.js +203 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.css.js.map +1 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.d.ts +94 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.js +578 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.js.map +1 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.test.d.ts +1 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.test.js +890 -0
- package/dist/src/nile-timestamp-builder/nile-timestamp-builder.test.js.map +1 -0
- package/dist/src/nile-timestamp-builder/timezones.d.ts +8 -0
- package/dist/src/nile-timestamp-builder/timezones.js +357 -0
- package/dist/src/nile-timestamp-builder/timezones.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js +91 -58
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.d.ts +2 -1
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js +23 -1
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.js +19 -19
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js +10 -10
- package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js +7 -7
- package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.js +5 -5
- package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js +6 -6
- package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js +4 -4
- package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js +6 -6
- package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/find-replace.js +7 -7
- package/dist/src/nile-wysiwyg-editor/ui/find-replace.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/image-menu.js +6 -6
- package/dist/src/nile-wysiwyg-editor/ui/image-menu.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/image-panel.js +6 -6
- package/dist/src/nile-wysiwyg-editor/ui/image-panel.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js +7 -7
- package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/link-editor.js +9 -9
- package/dist/src/nile-wysiwyg-editor/ui/link-editor.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js +8 -8
- package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/math-panel.js +4 -4
- package/dist/src/nile-wysiwyg-editor/ui/math-panel.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js +9 -9
- package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/source-view.js +24 -24
- package/dist/src/nile-wysiwyg-editor/ui/source-view.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/special-chars.js +4 -4
- package/dist/src/nile-wysiwyg-editor/ui/special-chars.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js +7 -7
- package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js +16 -16
- package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js.map +1 -1
- package/dist/src/nile-wysiwyg-editor/ui/table-menu.js +4 -4
- package/dist/src/nile-wysiwyg-editor/ui/table-menu.js.map +1 -1
- package/dist/src/version.js +2 -2
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/nile-code-editor/nile-code-editor.css.ts +2 -2
- package/src/nile-code-editor/nile-code-editor.ts +68 -5
- package/src/nile-code-editor/theme.ts +129 -162
- package/src/nile-combobox/nile-combobox.css.ts +1 -1
- package/src/nile-detail/nile-detail.css.ts +1 -1
- package/src/nile-side-bar-footer/nile-side-bar-footer.css.ts +3 -3
- package/src/nile-side-bar-footer-item/nile-side-bar-footer-item.css.ts +11 -5
- package/src/nile-timestamp-builder/index.ts +1 -0
- package/src/nile-timestamp-builder/nile-timestamp-builder-utils.ts +321 -0
- package/src/nile-timestamp-builder/nile-timestamp-builder.css.ts +204 -0
- package/src/nile-timestamp-builder/nile-timestamp-builder.test.ts +1089 -0
- package/src/nile-timestamp-builder/nile-timestamp-builder.ts +625 -0
- package/src/nile-timestamp-builder/timezones.ts +356 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.ts +91 -58
- package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.ts +21 -1
- package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.ts +19 -19
- package/src/nile-wysiwyg-editor/ui/bookmark-panel.ts +10 -10
- package/src/nile-wysiwyg-editor/ui/bubble-menu.ts +7 -7
- package/src/nile-wysiwyg-editor/ui/code-block-menu.ts +5 -5
- package/src/nile-wysiwyg-editor/ui/embed-menu.ts +6 -6
- package/src/nile-wysiwyg-editor/ui/embed-panel.ts +4 -4
- package/src/nile-wysiwyg-editor/ui/emoji-picker.ts +6 -6
- package/src/nile-wysiwyg-editor/ui/find-replace.ts +7 -7
- package/src/nile-wysiwyg-editor/ui/image-menu.ts +6 -6
- package/src/nile-wysiwyg-editor/ui/image-panel.ts +6 -6
- package/src/nile-wysiwyg-editor/ui/insert-menu.ts +7 -7
- package/src/nile-wysiwyg-editor/ui/link-editor.ts +9 -9
- package/src/nile-wysiwyg-editor/ui/markdown-panel.ts +8 -8
- package/src/nile-wysiwyg-editor/ui/math-panel.ts +4 -4
- package/src/nile-wysiwyg-editor/ui/shortcut-help.ts +9 -9
- package/src/nile-wysiwyg-editor/ui/source-view.ts +24 -24
- package/src/nile-wysiwyg-editor/ui/special-chars.ts +4 -4
- package/src/nile-wysiwyg-editor/ui/suggest-list.ts +7 -7
- package/src/nile-wysiwyg-editor/ui/table-grid-picker.ts +16 -16
- package/src/nile-wysiwyg-editor/ui/table-menu.ts +4 -4
- package/vscode-html-custom-data.json +94 -2
- package/dist/index-e43755f5.cjs.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-timestamp-builder-utils.js","sourceRoot":"","sources":["../../../src/nile-timestamp-builder/nile-timestamp-builder-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2026\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Timezone-aware wall-clock helpers for `nile-timestamp-builder`.\n * ALL Temporal / Intl branching lives in this module. The component must never\n * call `Intl.DateTimeFormat` or `Temporal` inline — it always goes through here.\n */\n\nimport { TIMEZONES } from './timezones';\n\n/** The editable wall-clock fields exposed by `nile-timestamp-builder`. */\nexport enum TimestampField {\n Year = 'year',\n Month = 'month',\n Day = 'day',\n Hour = 'hour',\n Minute = 'minute',\n Second = 'second',\n Millisecond = 'millisecond',\n}\n\nexport interface WallClock {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n}\n\nexport function hasTemporal(): boolean {\n return typeof (globalThis as any).Temporal !== 'undefined';\n}\n\n/** Returns the list of supported IANA timezones using Intl or the bundled fallback list. */\nexport function getTimezoneList(): string[] {\n try {\n const supportedValuesOf = (Intl as any).supportedValuesOf;\n if (typeof supportedValuesOf === 'function') {\n const list = supportedValuesOf('timeZone') as string[];\n if (Array.isArray(list) && list.length > 0) {\n return list;\n }\n }\n } catch {\n }\n return [...TIMEZONES];\n}\n\n/** Resolves the runtime's local IANA timezone, falling back to `UTC`. */\nexport function getLocalTimeZone(): string {\n try {\n const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (tz && isValidTimeZone(tz)) {\n return tz;\n }\n } catch {\n }\n return 'UTC';\n}\n\n/** Returns true when `tz` is a timezone identifier the runtime can format. */\nexport function isValidTimeZone(tz: string): boolean {\n if (!tz || typeof tz !== 'string') {\n return false;\n }\n try {\n new Intl.DateTimeFormat('en-US', { timeZone: tz });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function daysInMonth(year: number, month: number): number {\n return new Date(Date.UTC(year, month, 0)).getUTCDate();\n}\n\n/** Clamps `value` into `[min, max]`; `NaN` collapses to `min`. */\nexport function clampField(value: number, min: number, max: number): number {\n if (Number.isNaN(value)) {\n return min;\n }\n return Math.min(max, Math.max(min, value));\n}\n\nexport function clampWallClock(\n w: WallClock,\n minYear: number,\n maxYear: number\n): WallClock {\n const year = clampField(Math.trunc(w.year), minYear, maxYear);\n const month = clampField(Math.trunc(w.month), 1, 12);\n const day = clampField(Math.trunc(w.day), 1, daysInMonth(year, month));\n const hour = clampField(Math.trunc(w.hour), 0, 23);\n const minute = clampField(Math.trunc(w.minute), 0, 59);\n const second = clampField(Math.trunc(w.second), 0, 59);\n const millisecond = clampField(Math.trunc(w.millisecond), 0, 999);\n return { year, month, day, hour, minute, second, millisecond };\n}\n\n/** Formats a wall-clock as `YYYY-MM-DD HH:mm:ss.SSS` with zero padding. */\nexport function formatWallClock(w: WallClock): string {\n const pad = (n: number, len: number) =>\n String(Math.abs(n)).padStart(len, '0');\n const y = pad(w.year, 4);\n const mo = pad(w.month, 2);\n const d = pad(w.day, 2);\n const h = pad(w.hour, 2);\n const mi = pad(w.minute, 2);\n const s = pad(w.second, 2);\n const ms = pad(w.millisecond, 3);\n return `${y}-${mo}-${d} ${h}:${mi}:${s}.${ms}`;\n}\n\n/** Converts an epoch (ms) into the wall-clock fields observed in `tz`. Uses Temporal when present, otherwise an `Intl.DateTimeFormat` fallback. */\nexport function epochToFields(epochMs: number, tz: string): WallClock {\n if (hasTemporal()) {\n const Temporal = (globalThis as any).Temporal;\n const zdt =\n Temporal.Instant.fromEpochMilliseconds(epochMs).toZonedDateTimeISO(tz);\n return {\n year: zdt.year,\n month: zdt.month,\n day: zdt.day,\n hour: zdt.hour,\n minute: zdt.minute,\n second: zdt.second,\n millisecond: zdt.millisecond,\n };\n }\n return intlEpochToFields(epochMs, tz);\n}\n\n/** Neutral wall-clock placeholder: the Unix epoch (`1970-01-01T00:00:00.000`) read in UTC.*/\nexport const EPOCH_WALLCLOCK: WallClock = epochToFields(0, 'UTC');\n\nfunction intlEpochToFields(epochMs: number, tz: string): WallClock {\n const parts = formatEpochParts(epochMs, tz);\n const millisecond = ((epochMs % 1000) + 1000) % 1000;\n return { ...parts, millisecond };\n}\n\n/** Extracts numeric y/mo/d/h/mi/s parts of `epochMs` in `tz` (h23, no ms). */\nfunction formatEpochParts(\n epochMs: number,\n tz: string\n): Omit<WallClock, 'millisecond'> {\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZone: tz,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hourCycle: 'h23',\n });\n\n const map: Record<string, number> = {};\n for (const part of formatter.formatToParts(new Date(epochMs))) {\n if (part.type !== 'literal') {\n map[part.type] = Number(part.value);\n }\n }\n\n // `hourCycle: 'h23'` can still surface hour 24 for midnight in some engines.\n const hour = map.hour === 24 ? 0 : map.hour;\n\n return {\n year: map.year,\n month: map.month,\n day: map.day,\n hour,\n minute: map.minute,\n second: map.second,\n };\n}\n\n/** Returns the timezone offset (ms) */\nexport function getTimeZoneOffsetMs(epochMs: number, tz: string): number {\n const parts = formatEpochParts(epochMs, tz);\n const asIfUTC = Date.UTC(\n parts.year,\n parts.month - 1,\n parts.day,\n parts.hour,\n parts.minute,\n parts.second\n );\n const epochSeconds = Math.floor(epochMs / 1000) * 1000;\n const offset = asIfUTC - epochSeconds;\n return Math.round(offset / 1000) * 1000;\n}\n\nconst ZONED_VALUE_RE =\n /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?)\\[GMT([+-]\\d{2}:\\d{2}) ([^\\]]+)\\]$/;\n\n/** Converts a `±HH:MM` offset from {@link ZONED_VALUE_RE} into milliseconds. */\nfunction offsetStringToMs(offset: string): number {\n const sign = offset[0] === '-' ? -1 : 1;\n return (\n sign * (Number(offset.slice(1, 3)) * 3600000 + Number(offset.slice(4, 6)) * 60000)\n );\n}\n\nexport function parseZonedValue(\n input: string\n): { date: Date; timezone: string } | null {\n const match = ZONED_VALUE_RE.exec(input.trim());\n if (!match) {\n return null;\n }\n const [, iso, offset, timezone] = match;\n const date = new Date(`${iso}${offset}`);\n if (Number.isNaN(date.getTime()) || !isValidTimeZone(timezone)) {\n return null;\n }\n if (\n getTimeZoneOffsetMs(date.getTime(), timezone) !== offsetStringToMs(offset)\n ) {\n return null;\n }\n return { date, timezone };\n}\n\n/** Normalizes supported `value` inputs into epoch milliseconds, or `null` if invalid. */\nexport function normalizeValueInput(\n input: Date | number | string | null | undefined\n): Date | null {\n if (input === null || input === undefined) {\n return null;\n }\n const valid = (d: Date) => (Number.isNaN(d.getTime()) ? null : d);\n if (input instanceof Date) {\n return valid(input);\n }\n if (typeof input === 'number') {\n return Number.isFinite(input) ? valid(new Date(input)) : null;\n }\n const trimmed = input.trim();\n if (trimmed === '') {\n return null;\n }\n const zoned = parseZonedValue(trimmed);\n if (zoned) {\n return zoned.date;\n }\n if (/^-?\\d+$/.test(trimmed)) {\n return valid(new Date(Number(trimmed)));\n }\n return valid(new Date(trimmed));\n}\n\n/** Serializes a wall-clock into a zone-encoded string preserving its offset and IANA timezone. */\nexport function formatZonedValue(w: WallClock, tz: string): string {\n const epoch = fieldsToEpoch(w, tz);\n const offsetMs = Math.round(getTimeZoneOffsetMs(epoch, tz) / 60000) * 60000;\n const pad = (n: number, len = 2) => String(Math.abs(n)).padStart(len, '0');\n const sign = offsetMs >= 0 ? '+' : '-';\n const abs = Math.abs(offsetMs);\n const offH = Math.floor(abs / 3600000);\n const offM = Math.floor((abs % 3600000) / 60000);\n const off = `${sign}${pad(offH)}:${pad(offM)}`;\n const zone = tz || 'UTC';\n const y = pad(w.year, 4);\n const mo = pad(w.month, 2);\n const d = pad(w.day, 2);\n const h = pad(w.hour, 2);\n const mi = pad(w.minute, 2);\n const s = pad(w.second, 2);\n const ms = pad(w.millisecond, 3);\n return `${y}-${mo}-${d}T${h}:${mi}:${s}.${ms}[GMT${off} ${zone}]`;\n}\n\n/** Converts wall-clock fields in `tz` to epoch milliseconds. */\nexport function fieldsToEpoch(w: WallClock, tz: string): number {\n if (hasTemporal()) {\n const Temporal = (globalThis as any).Temporal;\n const zdt = Temporal.ZonedDateTime.from(\n {\n year: w.year,\n month: w.month,\n day: w.day,\n hour: w.hour,\n minute: w.minute,\n second: w.second,\n millisecond: w.millisecond,\n timeZone: tz,\n },\n { disambiguation: 'compatible' }\n );\n return zdt.epochMilliseconds;\n }\n return intlFieldsToEpoch(w, tz);\n}\n\nfunction intlFieldsToEpoch(w: WallClock, tz: string): number {\n const asUTC = Date.UTC(\n w.year,\n w.month - 1,\n w.day,\n w.hour,\n w.minute,\n w.second,\n w.millisecond\n );\n const offset0 = getTimeZoneOffsetMs(asUTC, tz);\n const guess = asUTC - offset0;\n const offset1 = getTimeZoneOffsetMs(guess, tz);\n if (offset0 === offset1) {\n return guess;\n }\n return asUTC - offset1;\n}\n"]}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { css } from 'lit';
|
|
8
|
+
export const styles = css `
|
|
9
|
+
:host {
|
|
10
|
+
display: block;
|
|
11
|
+
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
12
|
+
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:host([disabled]) {
|
|
16
|
+
pointer-events: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host([disabled]) .tsb__collapsed,
|
|
20
|
+
:host([disabled]) .tsb__expanded {
|
|
21
|
+
background: var(
|
|
22
|
+
--nile-colors-neutral-100,
|
|
23
|
+
var(--ng-colors-bg-disabled-subtle)
|
|
24
|
+
);
|
|
25
|
+
border-color: var(
|
|
26
|
+
--nile-colors-neutral-500,
|
|
27
|
+
var(--ng-colors-border-disabled-subtle)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([disabled]) .tsb__label,
|
|
32
|
+
:host([disabled]) .tsb__value,
|
|
33
|
+
:host([disabled]) .tsb__tz {
|
|
34
|
+
color: var(--nile-colors-text-disabled, var(--ng-colors-text-disabled));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.tsb {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
gap: var(--nile-spacing-md, var(--ng-spacing-md));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.tsb__label {
|
|
44
|
+
font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
|
|
45
|
+
font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));
|
|
46
|
+
line-height: var(--nile-line-height-small, var(--ng-line-height-text-sm));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Collapsed view */
|
|
50
|
+
.tsb__collapsed {
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
flex-wrap: wrap;
|
|
54
|
+
gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
55
|
+
padding: var(--nile-spacing-lg, var(--ng-spacing-lg))
|
|
56
|
+
var(--nile-spacing-xl, var(--ng-spacing-xl));
|
|
57
|
+
border: var(--nile-border-width-1, var(--ng-border-width-1)) solid
|
|
58
|
+
var(--nile-colors-gray-300, var(--ng-colors-border-primary));
|
|
59
|
+
border-radius: var(--nile-radius-md, var(--ng-radius-md));
|
|
60
|
+
background: var(--nile-colors-white, var(--ng-colors-bg-primary));
|
|
61
|
+
min-height: var(--nile-height-28px, var(--ng-height-28px));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.tsb__collapsed .tsb__actions nile-button::part(base) {
|
|
65
|
+
height: var(--nile-height-28px, var(--ng-height-28px));
|
|
66
|
+
padding-block: var(--nile-spacing-none, var(--ng-spacing-none));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.tsb__display {
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: baseline;
|
|
72
|
+
flex-wrap: wrap;
|
|
73
|
+
gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
74
|
+
flex: 1 1 var(--nile-width-208px, var(--ng-width-56));
|
|
75
|
+
min-width: 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.tsb__display--editable {
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
user-select: none;
|
|
81
|
+
-webkit-user-select: none;
|
|
82
|
+
touch-action: manipulation;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.tsb__display:focus-visible {
|
|
86
|
+
outline: var(--nile-border-width-2, var(--ng-border-width-2)) solid
|
|
87
|
+
var(--nile-colors-border-field-focused, var(--ng-colors-border-brand));
|
|
88
|
+
outline-offset: var(--nile-spacing-xxs, var(--ng-spacing-xxs));
|
|
89
|
+
border-radius: var(--nile-radius-sm, var(--ng-radius-sm));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.tsb__value {
|
|
93
|
+
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
94
|
+
font-variant-numeric: tabular-nums;
|
|
95
|
+
font-size: var(--nile-type-scale-4, var(--ng-font-size-text-md));
|
|
96
|
+
font-weight: var(--nile-font-weight-semibold, var(--ng-font-weight-medium));
|
|
97
|
+
letter-spacing: 0.01em;
|
|
98
|
+
overflow-wrap: normal;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.tsb__value--empty {
|
|
102
|
+
color: var(--nile-colors-gray-400, var(--ng-colors-text-placeholder));
|
|
103
|
+
font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.tsb__tz {
|
|
107
|
+
font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
|
|
108
|
+
color: var(--nile-colors-gray-500, var(--ng-colors-text-tertiary-600));
|
|
109
|
+
white-space: nowrap;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.tsb__actions {
|
|
113
|
+
display: flex;
|
|
114
|
+
align-items: center;
|
|
115
|
+
gap: var(--nile-spacing-md, var(--ng-spacing-md));
|
|
116
|
+
flex-wrap: wrap;
|
|
117
|
+
justify-content: flex-end;
|
|
118
|
+
margin-left: auto;
|
|
119
|
+
flex: 0 0 auto;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* Expanded view */
|
|
123
|
+
.tsb__expanded {
|
|
124
|
+
display: flex;
|
|
125
|
+
flex-direction: column;
|
|
126
|
+
gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
127
|
+
padding: var(--nile-spacing-xl, var(--ng-spacing-xl));
|
|
128
|
+
border: var(--nile-border-width-1, var(--ng-border-width-1)) solid
|
|
129
|
+
var(--nile-colors-gray-300, var(--ng-colors-border-primary));
|
|
130
|
+
border-radius: var(--nile-radius-md, var(--ng-radius-md));
|
|
131
|
+
background: var(--nile-colors-white, var(--ng-colors-bg-primary));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.tsb__fields {
|
|
135
|
+
display: grid;
|
|
136
|
+
grid-template-columns: repeat(
|
|
137
|
+
auto-fit,
|
|
138
|
+
minmax(var(--nile-width-99px, var(--ng-width-24)), 1fr)
|
|
139
|
+
);
|
|
140
|
+
gap: var(--nile-spacing-md, var(--ng-spacing-md));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.tsb__field {
|
|
144
|
+
display: flex;
|
|
145
|
+
flex-direction: column;
|
|
146
|
+
min-width: 0;
|
|
147
|
+
width: 100%;
|
|
148
|
+
max-width: var(--nile-width-110px, var(--ng-width-108));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.tsb__field nile-input::part(input) {
|
|
152
|
+
padding-inline: var(--nile-spacing-sm, var(--ng-spacing-sm));
|
|
153
|
+
text-align: center;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.tsb__field nile-input::part(form-control-label) {
|
|
157
|
+
display: block;
|
|
158
|
+
overflow: hidden;
|
|
159
|
+
text-overflow: ellipsis;
|
|
160
|
+
white-space: nowrap;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.tsb__timezone {
|
|
164
|
+
display: flex;
|
|
165
|
+
flex-direction: column;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@media (max-width: 480px) {
|
|
169
|
+
.tsb__collapsed,
|
|
170
|
+
.tsb__expanded {
|
|
171
|
+
padding: var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
.tsb__actions {
|
|
176
|
+
width: 100%;
|
|
177
|
+
margin-left: 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
[part='editor-actions'] nile-button {
|
|
182
|
+
flex: 1 1 var(--nile-width-130px, var(--ng-width-32));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
[part='editor-actions'] nile-button::part(base) {
|
|
186
|
+
width: 100%;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* Visually-hidden hidden input used for form participation / validity. */
|
|
191
|
+
.value-input {
|
|
192
|
+
position: absolute;
|
|
193
|
+
width: 1px;
|
|
194
|
+
height: 1px;
|
|
195
|
+
padding: 0;
|
|
196
|
+
margin: -1px;
|
|
197
|
+
overflow: hidden;
|
|
198
|
+
clip: rect(0, 0, 0, 0);
|
|
199
|
+
white-space: nowrap;
|
|
200
|
+
border: 0;
|
|
201
|
+
}
|
|
202
|
+
`;
|
|
203
|
+
//# sourceMappingURL=nile-timestamp-builder.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-timestamp-builder.css.js","sourceRoot":"","sources":["../../../src/nile-timestamp-builder/nile-timestamp-builder.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkMxB,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2026\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));\n }\n\n :host([disabled]) {\n pointer-events: none;\n }\n\n :host([disabled]) .tsb__collapsed,\n :host([disabled]) .tsb__expanded {\n background: var(\n --nile-colors-neutral-100,\n var(--ng-colors-bg-disabled-subtle)\n );\n border-color: var(\n --nile-colors-neutral-500,\n var(--ng-colors-border-disabled-subtle)\n );\n }\n\n :host([disabled]) .tsb__label,\n :host([disabled]) .tsb__value,\n :host([disabled]) .tsb__tz {\n color: var(--nile-colors-text-disabled, var(--ng-colors-text-disabled));\n }\n\n .tsb {\n display: flex;\n flex-direction: column;\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n }\n\n .tsb__label {\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));\n line-height: var(--nile-line-height-small, var(--ng-line-height-text-sm));\n }\n\n /* Collapsed view */\n .tsb__collapsed {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--nile-spacing-lg, var(--ng-spacing-lg));\n padding: var(--nile-spacing-lg, var(--ng-spacing-lg))\n var(--nile-spacing-xl, var(--ng-spacing-xl));\n border: var(--nile-border-width-1, var(--ng-border-width-1)) solid\n var(--nile-colors-gray-300, var(--ng-colors-border-primary));\n border-radius: var(--nile-radius-md, var(--ng-radius-md));\n background: var(--nile-colors-white, var(--ng-colors-bg-primary));\n min-height: var(--nile-height-28px, var(--ng-height-28px));\n }\n\n .tsb__collapsed .tsb__actions nile-button::part(base) {\n height: var(--nile-height-28px, var(--ng-height-28px));\n padding-block: var(--nile-spacing-none, var(--ng-spacing-none));\n }\n\n .tsb__display {\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: var(--nile-spacing-lg, var(--ng-spacing-lg));\n flex: 1 1 var(--nile-width-208px, var(--ng-width-56));\n min-width: 0;\n }\n\n .tsb__display--editable {\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n touch-action: manipulation;\n }\n\n .tsb__display:focus-visible {\n outline: var(--nile-border-width-2, var(--ng-border-width-2)) solid\n var(--nile-colors-border-field-focused, var(--ng-colors-border-brand));\n outline-offset: var(--nile-spacing-xxs, var(--ng-spacing-xxs));\n border-radius: var(--nile-radius-sm, var(--ng-radius-sm));\n }\n\n .tsb__value {\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-variant-numeric: tabular-nums;\n font-size: var(--nile-type-scale-4, var(--ng-font-size-text-md));\n font-weight: var(--nile-font-weight-semibold, var(--ng-font-weight-medium));\n letter-spacing: 0.01em;\n overflow-wrap: normal;\n }\n\n .tsb__value--empty {\n color: var(--nile-colors-gray-400, var(--ng-colors-text-placeholder));\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));\n }\n\n .tsb__tz {\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n color: var(--nile-colors-gray-500, var(--ng-colors-text-tertiary-600));\n white-space: nowrap;\n }\n\n .tsb__actions {\n display: flex;\n align-items: center;\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-left: auto;\n flex: 0 0 auto;\n }\n\n /* Expanded view */\n .tsb__expanded {\n display: flex;\n flex-direction: column;\n gap: var(--nile-spacing-lg, var(--ng-spacing-lg));\n padding: var(--nile-spacing-xl, var(--ng-spacing-xl));\n border: var(--nile-border-width-1, var(--ng-border-width-1)) solid\n var(--nile-colors-gray-300, var(--ng-colors-border-primary));\n border-radius: var(--nile-radius-md, var(--ng-radius-md));\n background: var(--nile-colors-white, var(--ng-colors-bg-primary));\n }\n\n .tsb__fields {\n display: grid;\n grid-template-columns: repeat(\n auto-fit,\n minmax(var(--nile-width-99px, var(--ng-width-24)), 1fr)\n );\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n }\n\n .tsb__field {\n display: flex;\n flex-direction: column;\n min-width: 0;\n width: 100%;\n max-width: var(--nile-width-110px, var(--ng-width-108));\n }\n\n .tsb__field nile-input::part(input) {\n padding-inline: var(--nile-spacing-sm, var(--ng-spacing-sm));\n text-align: center;\n }\n\n .tsb__field nile-input::part(form-control-label) {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tsb__timezone {\n display: flex;\n flex-direction: column;\n }\n\n @media (max-width: 480px) {\n .tsb__collapsed,\n .tsb__expanded {\n padding: var(--nile-spacing-lg, var(--ng-spacing-lg));\n }\n\n\n .tsb__actions {\n width: 100%;\n margin-left: 0;\n }\n\n\n [part='editor-actions'] nile-button {\n flex: 1 1 var(--nile-width-130px, var(--ng-width-32));\n }\n\n [part='editor-actions'] nile-button::part(base) {\n width: 100%;\n }\n }\n\n /* Visually-hidden hidden input used for form participation / validity. */\n .value-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n`;\n"]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import NileElement from '../internal/nile-element';
|
|
8
|
+
import type { CSSResultGroup, PropertyValues } from 'lit';
|
|
9
|
+
import type { NileFormControl } from '../internal/nile-element';
|
|
10
|
+
import { WallClock } from './nile-timestamp-builder-utils';
|
|
11
|
+
/**
|
|
12
|
+
* @event nile-init - Emitted when the component is added to the DOM.
|
|
13
|
+
* @event nile-destroy - Emitted when the component is removed from the DOM.
|
|
14
|
+
* @event nile-change - Emitted when the value is committed.
|
|
15
|
+
* @event nile-input - Emitted as fields change, before the value is committed.
|
|
16
|
+
* @event nile-expand - Emitted when the editor opens.
|
|
17
|
+
* @event nile-collapse - Emitted when the editor closes.
|
|
18
|
+
* @event nile-copy - Emitted after the value is written to the clipboard.
|
|
19
|
+
* @event nile-copy-error - Emitted when the clipboard write is refused.
|
|
20
|
+
*/
|
|
21
|
+
export declare class NileTimestampBuilder extends NileElement implements NileFormControl {
|
|
22
|
+
static get styles(): CSSResultGroup;
|
|
23
|
+
private formControlController;
|
|
24
|
+
private internalValueUpdate;
|
|
25
|
+
private internalTimezoneUpdate;
|
|
26
|
+
valueInput: HTMLInputElement;
|
|
27
|
+
private _value;
|
|
28
|
+
get value(): Date | null;
|
|
29
|
+
set value(input: Date | number | string | null);
|
|
30
|
+
defaultValue: Date | null;
|
|
31
|
+
timezone: string;
|
|
32
|
+
name: string;
|
|
33
|
+
disabled: boolean;
|
|
34
|
+
required: boolean;
|
|
35
|
+
readonly: boolean;
|
|
36
|
+
copyable: boolean;
|
|
37
|
+
form: string;
|
|
38
|
+
open: boolean;
|
|
39
|
+
label: string;
|
|
40
|
+
minYear: number;
|
|
41
|
+
maxYear: number;
|
|
42
|
+
wallClock: WallClock;
|
|
43
|
+
timezoneList: string[];
|
|
44
|
+
hasValue: boolean;
|
|
45
|
+
justCopied: boolean;
|
|
46
|
+
get validity(): ValidityState;
|
|
47
|
+
get validationMessage(): string;
|
|
48
|
+
connectedCallback(): void;
|
|
49
|
+
disconnectedCallback(): void;
|
|
50
|
+
protected willUpdate(changedProperties: PropertyValues): void;
|
|
51
|
+
protected updated(changedProperties: PropertyValues): void;
|
|
52
|
+
private isTimezoneReassigned;
|
|
53
|
+
private syncValueToTimezone;
|
|
54
|
+
private valueString;
|
|
55
|
+
private syncHiddenInput;
|
|
56
|
+
private changeDetail;
|
|
57
|
+
private liveDetail;
|
|
58
|
+
private commit;
|
|
59
|
+
private onFieldChange;
|
|
60
|
+
private onTimezoneChange;
|
|
61
|
+
private handleSetNow;
|
|
62
|
+
/** Copies the canonical zoned value */
|
|
63
|
+
private handleCopy;
|
|
64
|
+
private handleStageNow;
|
|
65
|
+
private handleUseLocalTz;
|
|
66
|
+
private handleUseUtc;
|
|
67
|
+
/** Touch input has no reliable `dblclick`, so double-taps are timed by hand. */
|
|
68
|
+
private static readonly DOUBLE_TAP_MS;
|
|
69
|
+
private static readonly COPIED_FEEDBACK_MS;
|
|
70
|
+
private lastTapAt;
|
|
71
|
+
private copiedTimer;
|
|
72
|
+
private handleDisplayDoubleClick;
|
|
73
|
+
private handleDisplayPointerUp;
|
|
74
|
+
/** Keyboard equivalent of the double-click/double-tap edit affordance. */
|
|
75
|
+
private handleDisplayKeyDown;
|
|
76
|
+
private handleEdit;
|
|
77
|
+
private handleDone;
|
|
78
|
+
checkValidity(): boolean;
|
|
79
|
+
reportValidity(): boolean;
|
|
80
|
+
setCustomValidity(message: string): void;
|
|
81
|
+
getForm(): HTMLFormElement | null;
|
|
82
|
+
private renderField;
|
|
83
|
+
private renderCollapsed;
|
|
84
|
+
private renderEditActions;
|
|
85
|
+
private renderCopyAction;
|
|
86
|
+
private renderExpanded;
|
|
87
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
88
|
+
}
|
|
89
|
+
export default NileTimestampBuilder;
|
|
90
|
+
declare global {
|
|
91
|
+
interface HTMLElementTagNameMap {
|
|
92
|
+
'nile-timestamp-builder': NileTimestampBuilder;
|
|
93
|
+
}
|
|
94
|
+
}
|