@arcgis/map-components
Version:
ArcGIS Map Components
105 lines (104 loc) • 7.96 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import { c as k } from "../../chunks/runtime.js";
import { keyed as f } from "lit/directives/keyed.js";
import { substitute as v } from "@arcgis/core/intl.js";
import { LitElement as T, createEvent as z, safeClassMap as _ } from "@arcgis/lumina";
import { useDirection as L } from "@arcgis/lumina/controllers";
import { css as w, html as m } from "lit";
import { u as F } from "../../chunks/useT9n.js";
import { c as s } from "../../chunks/time-utils.js";
const g = "compact", u = /* @__PURE__ */ new Map([
["fr", "full"],
["he", "full"],
["ja", "full"],
["ko", "compact-wrap"],
["zh-CN", "full"],
["zh-HK", "full-wrap"],
["zh-TW", "full-wrap"]
]), x = /* @__PURE__ */ new Set(["compact-wrap", "full-wrap"]), d = {
hour: "numeric",
minute: "numeric",
timeZone: "UTC"
}, y = {
hour: "numeric",
timeZone: "UTC"
}, b = (a) => "";
function $(a) {
const e = new Intl.DateTimeFormat(a, d), t = new Intl.DateTimeFormat(a, {
...d,
hourCycle: "h24"
}), l = e.resolvedOptions().hour12 === !1;
return (n) => {
const r = s(n, "minutes", "milliseconds"), i = new Date(r);
return r !== 0 && i.getUTCHours() === 0 && i.getUTCMinutes() === 0 && l ? t.format(i) : e.format(i);
};
}
function C(a) {
const e = new Intl.DateTimeFormat(a, d), t = new Intl.DateTimeFormat(a, y), l = u.get(a) ?? g;
return (n) => {
const r = Math.round(s(n, "minutes", "hours")), i = s(r, "hours", "milliseconds"), o = new Date(i);
switch (l) {
case "full":
case "full-wrap":
return e.format(o);
case "compact-wrap":
return h(t.format(o), " ");
default:
return h(t.format(o), " ");
}
};
}
function S(a) {
return x.has(u.get(a) ?? g);
}
function h(a, e) {
return a.replace(/\S+/gu, D).replace(/\s+/gu, e);
}
function D(a) {
return Array.from(a).join("");
}
const W = w`:host{display:block}arcgis-slider{--arcgis-slider-handle-size: var(--calcite-size-2xs);--slider-default-handle-size: var(--calcite-size-2xs);--slider-thumb-label-height: var(--calcite-input-number-height, 1.5rem);--tick-label-gap: var(--calcite-space-lg);--tick-label-font-size: var(--calcite-font-size--3);--tick-label-extra-line-count: 0;--range-label-font-size: var(--calcite-font-size--2);--range-label-padding-block-start: calc(var(--calcite-space-xs) / 2);--tick-label-padding-block-end-scale-adjustment: max( 0rem, calc(var(--slider-default-handle-size) - var(--arcgis-slider-handle-size)) );--tick-label-padding-block-end-base: calc(var(--tick-label-gap) - (var(--tick-label-font-size) / 2));--tick-label-padding-block-end-wrap: calc(var(--tick-label-font-size) * var(--tick-label-extra-line-count));--tick-label-padding-block-end: calc( var(--tick-label-padding-block-end-base) + var(--tick-label-padding-block-end-scale-adjustment) + var(--tick-label-padding-block-end-wrap) );--range-label-padding-block-end-base: calc(var(--slider-thumb-label-height) + (var(--arcgis-slider-handle-size) / 2));--range-label-padding-block-end-offset: calc(var(--range-label-padding-block-start) + var(--range-label-font-size));--range-label-padding-block-end: calc( var(--range-label-padding-block-end-base) - var(--range-label-padding-block-end-offset) );--calcite-font-size-sm: var(--range-label-font-size);display:block;margin-block-start:calc((var(--arcgis-slider-handle-size) / 2 + var(--range-label-padding-block-start)) * -1);padding-block-end:var(--tick-label-padding-block-end);&.wrap-labels{--tick-label-extra-line-count: 1}}:host([visual-scale="s"]) arcgis-slider{--arcgis-slider-handle-size: var(--calcite-size-4xs);--tick-label-font-size: var(--calcite-font-size--3);--range-label-font-size: var(--calcite-font-size--3);--tick-label-gap: var(--calcite-space-md)}:host([visual-scale="l"]) arcgis-slider{--arcgis-slider-handle-size: var(--calcite-size-xs);--tick-label-font-size: var(--calcite-font-size--2);--range-label-font-size: var(--calcite-font-size--1);--tick-label-gap: var(--calcite-space-xl)}.ticks-container{position:relative;width:100%}.time-range-label{position:relative;width:100%;font-size:var(--range-label-font-size);font-variant-numeric:tabular-nums;line-height:1em;padding-block-start:var(--range-label-padding-block-start);padding-block-end:var(--range-label-padding-block-end);text-align:center}.main-ticks,.secondary-ticks{position:absolute;inset:0;--arcgis-ticks-gap: var(--tick-label-gap);--arcgis-ticks-outline-color: var(--calcite-color-foreground-1)}.main-ticks{--arcgis-ticks-tick-length: calc(var(--calcite-size-fixed-xxxs) * 2);--arcgis-ticks-font-size: var(--tick-label-font-size);--arcgis-ticks-label-width: min-content;--arcgis-ticks-label-text-align: center;white-space:nowrap;word-break:auto-phrase;font-variant-numeric:tabular-nums}.wrap-labels .main-ticks{white-space:normal}.secondary-ticks{--arcgis-ticks-tick-length: var(--calcite-size-fixed-xxxs)}`;
class j extends T {
constructor() {
super(...arguments), this.messages = F({ blocking: !0 }), this._direction = L(), this._shouldWrapLabels = !1, this._sliderLabelFormatter = b, this._tickLabelFormatter = b, this.disabled = !1, this.mode = "range", this.startTime = 0, this.endTime = 0, this.visualScale = "m", this.arcgisTimeChange = z();
}
static {
this.properties = { _shouldWrapLabels: 16, _values: 16, _sliderLabelFormatter: 16, _tickLabelFormatter: 16, disabled: 7, mode: 3, startTime: 9, endTime: 9, label: 1, steps: 9, visualScale: 3 };
}
static {
this.styles = W;
}
willUpdate(e) {
(e.has("mode") || e.has("startTime") || e.has("endTime")) && (this._values = this.mode === "single" ? [this.startTime] : [this.startTime, this.endTime]), e.has("messages") && this._updateLabelFormatters();
}
_setStartTime(e) {
this.startTime = e, this.arcgisTimeChange.emit();
}
_setRange(e, t) {
this.startTime = e, this.endTime = t, this.arcgisTimeChange.emit();
}
_updateLabelFormatters() {
const e = this.messages._lang;
this._sliderLabelFormatter = $(e), this._tickLabelFormatter = C(e), this._shouldWrapLabels = S(e);
}
_isolateTimeLabel(e) {
return this._direction === "rtl" ? `${e}` : e;
}
render() {
const e = this.mode === "single" && !this.disabled;
return f(this.messages._lang, m`<arcgis-slider .ariaLabel=${this.label} class=${_({ "wrap-labels": this._shouldWrapLabels })} .disabled=${this.disabled} fill-placement=none .labelFormatter=${this._sliderLabelFormatter} layout=horizontal min=0 .max=${c} .steps=${this.steps ?? 1} .valueLabelsDisplay=${this.mode === "range" ? "hidden" : "always"} value-labels-placement=start .values=${this._values} =${({ currentTarget: { values: t } }) => {
this.mode === "single" ? this._setStartTime(t[0]) : this._setRange(t[0], t[1]);
}}>${this.mode === "range" ? this._renderTimeRange() : void 0}<div class="ticks-container" slot=content-end><arcgis-ticks class="main-ticks" .interactive=${e} .labelFormatter=${this._tickLabelFormatter} layout=horizontal min=0 .max=${c} mode=value show-labels .values=${p} =${(t) => this._setStartTime(t.detail.value)}></arcgis-ticks><arcgis-ticks class="secondary-ticks" layout=horizontal min=0 .max=${c} mode=value .values=${I} =${(t) => this._setStartTime(t.detail.value)}></arcgis-ticks></div></arcgis-slider>`);
}
_renderTimeRange() {
const e = this._isolateTimeLabel(this._sliderLabelFormatter(this.startTime)), t = this._isolateTimeLabel(this._sliderLabelFormatter(this.endTime)), l = this.messages?.timeRange;
return m`<div class="time-range-label" aria-live=polite slot=content-start>${v(l ?? "{start} — {end}", { start: e, end: t })}</div>`;
}
}
const c = s(24, "hours", "minutes") - 1, p = [0, 6, 12, 18].map((a) => s(a, "hours", "minutes"));
p.push(c);
const I = [2, 4, 8, 10, 14, 16, 20, 22].map((a) => s(a, "hours", "minutes"));
k("arcgis-time-of-day-slider", j);
export {
j as ArcgisTimeOfDaySlider
};