timered-counter 1.1.1 → 1.2.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"timered-counter.global.js","sources":["../node_modules/tslib/tslib.es6.mjs","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directive-helpers.js","../node_modules/lit-html/directives/repeat.js","../node_modules/remeda/dist/chunk-ANXBDSUI.js","../node_modules/remeda/dist/chunk-7BKSRZNG.js","../node_modules/remeda/dist/chunk-RAAYCPUM.js","../node_modules/remeda/dist/chunk-K26VP6CL.js","../node_modules/remeda/dist/chunk-ENXBNJ36.js","../node_modules/remeda/dist/chunk-PJOV2RDB.js","../node_modules/remeda/dist/chunk-RLZQTLGN.js","../node_modules/remeda/dist/chunk-K5HTIQFL.js","../node_modules/remeda/dist/chunk-COZRMC32.js","../node_modules/remeda/dist/chunk-6GTAPB47.js","../node_modules/remeda/dist/chunk-SFZGYJFI.js","../node_modules/remeda/dist/chunk-VCYTMP4D.js","../node_modules/remeda/dist/chunk-JK3VNB42.js","../node_modules/remeda/dist/chunk-BO3LQZNF.js","../node_modules/remeda/dist/chunk-7QX4DO53.js","../node_modules/remeda/dist/chunk-VMV5GVZ5.js","../node_modules/remeda/dist/chunk-VFKB5IBK.js","../node_modules/remeda/dist/chunk-73TZMTEA.js","../node_modules/remeda/dist/chunk-IEE7G5JG.js","src/utils/extract-group-option.js","../node_modules/remeda/dist/chunk-ENOHV5LT.js","src/mixins/counter-styles.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/min.js","src/utils/preprocess-part-data.js","src/utils/parse-json-string.js","src/mixins/counter-parts.js","../node_modules/remeda/dist/chunk-NMC53JVB.js","src/utils/transition-digit.js","src/number-adapter/build-in-number.js","src/string-adapter/build-in-string.js","src/timered-counter-adapter.js","src/string-adapter/build-in-intl-segmenter.js","src/mixins/counter-base.js","../node_modules/remeda/dist/chunk-GK5I7C4J.js","src/styles/timered-counter-styles.js","src/mixins/counter-animation.js","../node_modules/lit-html/directives/style-map.js","../node_modules/lit-html/directives/class-map.js","src/transitions/roller/styles.js","src/easing/cubic-bezier.js","src/easing/penner-easing-functions.js","src/transitions/roller/roller-digit.js","src/transitions/roller/roller.js","../node_modules/remeda/dist/chunk-IUVYQYF2.js","src/mixins/counter-aira.js","src/timered-counter.js","src/styles/timered-counter-number-styles.js","src/timered-counter-number.js","src/styles/timered-counter-string-styles.js","src/utils/any-base.js","src/timered-counter-string.js","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/compareAsc.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/differenceInDays.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/_lib/getRoundingMethod.js","../node_modules/date-fns/differenceInHours.js","../node_modules/date-fns/differenceInMilliseconds.js","../node_modules/date-fns/differenceInMinutes.js","../node_modules/date-fns/isLastDayOfMonth.js","../node_modules/date-fns/endOfDay.js","../node_modules/date-fns/endOfMonth.js","../node_modules/date-fns/differenceInMonths.js","../node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/date-fns/differenceInQuarters.js","../node_modules/date-fns/differenceInSeconds.js","../node_modules/date-fns/differenceInWeeks.js","../node_modules/date-fns/differenceInYears.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/subHours.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/subMilliseconds.js","../node_modules/date-fns/subMinutes.js","../node_modules/date-fns/addMinutes.js","../node_modules/date-fns/subQuarters.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/subSeconds.js","../node_modules/date-fns/addSeconds.js","../node_modules/date-fns/subWeeks.js","../node_modules/date-fns/addWeeks.js","../node_modules/date-fns/subYears.js","../node_modules/date-fns/addYears.js","src/types/duration.js","src/utils/localized-date-time-fields.js","src/utils/duration.js","../node_modules/date-fns/subMonths.js","src/utils/iso8601-duration.js","src/styles/timered-counter-datetime-styles.js","src/timered-counter-datetime-duration.js","src/easing/easing-functions.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","var e={done:!0,hasNext:!1},s={done:!1,hasNext:!1},a=()=>e,o=t=>({hasNext:!0,next:t,done:!1});export{s as a,a as b,o as c};\n","import{a as s}from\"./chunk-ANXBDSUI.js\";function x(t,...o){let n=t,u=o.map(e=>\"lazy\"in e?f(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(A(i,a,r))break;let{isSingle:y}=r.at(-1);n=y?a[0]:a,p+=r.length}return n}function A(t,o,n){if(n.length===0)return o.push(t),!1;let u=t,p=s,e=!1;for(let[r,a]of n.entries()){let{index:y,items:i}=a;if(i.push(u),p=a(u,y,i),a.index+=1,p.hasNext){if(p.hasMany??!1){for(let l of p.next)if(A(l,o,n.slice(r+1)))return!0;return e}u=p.next}if(!p.hasNext)break;p.done&&(e=!0)}return p.hasNext&&o.push(u),e}function f(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??!1,index:0,items:[]})}function B(t){return typeof t==\"string\"||typeof t==\"object\"&&t!==null&&Symbol.iterator in t}export{x as a};\n","import{a as t}from\"./chunk-K26VP6CL.js\";function u(r,n,a){let o=r.length-n.length;if(o===0)return r(...n);if(o===1)return t(r,n,a);throw new Error(\"Wrong number of arguments\")}export{u as a};\n","function u(t,n,a){let o=r=>t(r,...n);return a===void 0?o:Object.assign(o,{lazy:a,lazyArgs:n})}export{u as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function i(...e){return n(r,e)}var r=(e,t)=>e.length>=t;export{i as a};\n","import{a as u}from\"./chunk-RAAYCPUM.js\";function a(...r){return u(o,r)}function o(r,t){let e=[];for(let n=r;n<t;n++)e.push(n);return e}export{a};\n","import{a as n}from\"./chunk-ENXBNJ36.js\";import{a as i}from\"./chunk-RAAYCPUM.js\";function y(...t){return i(f,t)}function f(t,e){if(!n(e,1))return{...t};if(!n(e,2)){let{[e[0]]:r,...m}=t;return m}let o={...t};for(let r of e)delete o[r];return o}export{y as a};\n","import{a as r}from\"./chunk-RAAYCPUM.js\";function t(...e){return r(u,e)}var u=(e,o)=>({...e,...o});export{t as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function m(...a){return n(o,a,p)}var o=(a,e)=>a.map(e),p=a=>(e,t,r)=>({done:!1,hasNext:!0,next:a(e,t,r)});export{m as a};\n","function e(r){return typeof r==\"number\"&&!Number.isNaN(r)}export{e as a};\n","function t(r){return typeof r==\"string\"}export{t as a};\n","function n(e){return e===void 0?!0:typeof e==\"string\"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{n as a};\n","function n(e){return e==null}export{n as a};\n","function o(r){return Array.isArray(r)}export{o as a};\n","function e(o){return typeof o==\"boolean\"}export{e as a};\n","function t(n){return n instanceof Date}export{t as a};\n","import{a as i}from\"./chunk-RAAYCPUM.js\";function k(...n){return i(u,n)}function u(n,e){if(n===e||Object.is(n,e))return!0;if(typeof n!=\"object\"||typeof e!=\"object\"||n===null||e===null||Object.getPrototypeOf(n)!==Object.getPrototypeOf(e))return!1;if(Array.isArray(n))return l(n,e);if(n instanceof Map)return a(n,e);if(n instanceof Set)return c(n,e);if(n instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp)return n.toString()===e.toString();if(Object.keys(n).length!==Object.keys(e).length)return!1;for(let[r,t]of Object.entries(n))if(!(r in e)||!u(t,e[r]))return!1;return!0}function l(n,e){if(n.length!==e.length)return!1;for(let[r,t]of n.entries())if(!u(t,e[r]))return!1;return!0}function a(n,e){if(n.size!==e.size)return!1;for(let[r,t]of n.entries())if(!e.has(r)||!u(t,e.get(r)))return!1;return!0}function c(n,e){if(n.size!==e.size)return!1;let r=[...e];for(let t of n){let o=!1;for(let[s,f]of r.entries())if(u(t,f)){o=!0,r.splice(s,1);break}if(!o)return!1}return!0}export{k as a};\n","import{a as i}from\"./chunk-IEE7G5JG.js\";import{a as o,b as a}from\"./chunk-ANXBDSUI.js\";function f(...e){return i(y,e)}function y(e){if(e.length===0)return a;let n=new Map;for(let r of e)n.set(r,(n.get(r)??0)+1);return r=>{let t=n.get(r);return t===void 0||t===0?o:(t===1?n.delete(r):n.set(r,t-1),{hasNext:!0,next:r,done:n.size===0})}}export{f as a};\n","import{a}from\"./chunk-7BKSRZNG.js\";function f(t,i){let o=i.length-t.length;if(o===1){let[n,...r]=i;return a(n,{lazy:t,lazyArgs:r})}if(o===0){let n={lazy:t,lazyArgs:i};return Object.assign(e=>a(e,n),n)}throw new Error(\"Wrong number of arguments\")}export{f as a};\n","import { isArray, isFunction, merge } from 'remeda';\nexport function extractGroupOption(option, getterOptions) {\n return (isFunction(option)\n ? option(getterOptions)\n : option);\n}\nexport function extractPartOption(option, getterOptions) {\n const groupOption = extractGroupOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const value = isArray(groupOption) ? groupOption[i] : groupOption;\n result.push(value);\n }\n return result;\n}\nexport function extractPartDigitOption(option, getterOptions) {\n const extractedOption = extractPartOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const value = isArray(partOption) ? partOption[j] : partOption;\n result[i].push(value);\n }\n }\n return result;\n}\nexport function extractPartDigitCellOption(option, getterOptions) {\n const extractedOption = extractPartDigitOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const { data: digitData } = digits[j];\n const partDigitOption = partOption[j];\n result[i].push([]);\n for (let k = 0; k < digitData.length; k += 1) {\n const value = isArray(partDigitOption)\n ? partDigitOption[k]\n : partDigitOption;\n result[i][j].push(value);\n }\n }\n }\n return result;\n}\nexport function mergeGroupOption(data, source) {\n return merge(data ?? {}, source ?? {});\n}\nexport function mergePartOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergeGroupOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitCellOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartDigitOption(data[index], source[index]);\n }\n return data;\n}\n//# sourceMappingURL=extract-group-option.js.map","function t(n){return typeof n==\"function\"}export{t as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitCellOption, extractPartDigitOption, extractPartOption, mergePartDigitCellOption, mergePartDigitOption, mergePartOption, } from '../utils/extract-group-option.js';\nexport const CounterStylesMixin = (superClass) => {\n class CounterStylesMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 对 `cell` 部分的样式进行设置. 传入的对象将被直接应用到 `cell` 的 `style` 上.\n * 你还可以使用 `cellStylesDynamic` 来动态设置样式.\n */\n this.cellStyles = {};\n this.cachedCellStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `digit` 部分的样式进行设置.\n * 你还可以使用 `digitStylesDynamic` 来动态设置样式.\n */\n this.digitStyles = {};\n this.cachedDigitStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `part` 部分的样式进行设置.\n * 你还可以使用 `partStylesDynamic` 来动态设置样式.\n */\n this.partStyles = {};\n this.cachedPartStyles = [];\n /**\n * 文本颜色, 可使用 CSS 属性 `color` 和 `background-image` 的值.\n *\n * @default 继承自父元素.\n *\n * @example \"red\" 红色\n * @example \"transparent\" 透明\n * @example \"linear-gradient(90deg, red, blue)\" 红蓝渐变\n * @example \"url('https://example.com/image.png')\" 图片背景\n */\n this.color = 'inherit';\n }\n extractCellStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitCellOption(extractPartDigitCellOption(this.cellStyles ?? {}, getterOptions), extractPartDigitCellOption(this.cellStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedCellStyles, result)) {\n this.cachedCellStyles = result;\n }\n return this.cachedCellStyles;\n }\n extractDigitStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.digitStyles ?? {}, getterOptions), extractPartDigitOption(this.digitStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedDigitStyles, result)) {\n this.cachedDigitStyles = result;\n }\n return this.cachedDigitStyles;\n }\n extractPartStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartOption(extractPartOption(this.partStyles ?? {}, getterOptions), extractPartOption(this.partStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedPartStyles, result)) {\n this.cachedPartStyles = result;\n }\n return this.cachedPartStyles;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'cell-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"cellStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'digit-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"digitStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'part-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"partStyles\", void 0);\n __decorate([\n property({ type: String, reflect: true })\n ], CounterStylesMixinClass.prototype, \"color\", void 0);\n return CounterStylesMixinClass;\n};\n//# sourceMappingURL=counter-styles.js.map","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import { isDeepEqual } from 'remeda';\n/**\n * 以下代码块用于判断是否需要启动滚动动画.\n * 下列情况将跳过滚动动画:\n * 1. 当新的滚动数据(即 digits)长度为 1 时.\n * 2. 当滚动方向未改变时:\n * 1. 当滚动数据头尾相同时.\n * 2. 当前滚动数据与上一次全等时.\n */\nfunction rollerPartTest(direction, digits) {\n const [newDirection, oldDirection] = direction;\n const [newDigits, oldDigits] = digits;\n const result = {\n animate: true,\n cancelPrevAnimation: false,\n };\n let earlyReturn = '';\n if (newDigits.data.length === 1) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'only one digit';\n }\n if (newDirection !== oldDirection)\n return result;\n if (newDigits.data[0] === newDigits.data[newDigits.data.length - 1]) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'same head and tail';\n }\n if (isDeepEqual(newDigits, oldDigits)) {\n result.animate = false;\n earlyReturn = 'same digits';\n }\n if (earlyReturn)\n result.earlyReturn = earlyReturn;\n return result;\n}\nexport function preprocessPartData(newDirection, newData, oldDirection, oldData) {\n const results = [];\n let globalIndex = 0;\n for (let i = 0; i < newData.length; i++) {\n const newPart = newData[i];\n const oldPart = oldData?.[i];\n const partDataResults = [];\n for (let j = 0; j < newPart.digits.length; j++) {\n const newDigit = newPart.digits[j];\n const oldDigit = oldPart?.digits.find(d => d.place === newDigit.place);\n partDataResults.push({\n ...rollerPartTest([newDirection, oldDirection], [newDigit, oldDigit]),\n index: globalIndex++,\n partIndex: i,\n digitIndex: j,\n });\n }\n results.push(partDataResults);\n }\n return results;\n}\n//# sourceMappingURL=preprocess-part-data.js.map","export function parseJsonString(value) {\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n}\n//# sourceMappingURL=parse-json-string.js.map","import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from \"tslib\";\nimport { zip } from 'd3-array';\nimport { property } from 'lit/decorators.js';\nimport { isArray, isObjectType } from 'remeda';\nimport { transitionDigit } from '../utils/transition-digit.js';\nimport { preprocessPartData, } from '../utils/preprocess-part-data.js';\nimport { parseJsonString } from '../utils/parse-json-string.js';\nfunction toChar(value) {\n return String.fromCodePoint(value + 48);\n}\nfunction preprocessPartsOptions(options) {\n const digitToChar = {};\n if (isArray(options.digitToChar)) {\n options.digitToChar.forEach((char, index) => {\n digitToChar[toChar(index)] = char;\n });\n }\n else if (isObjectType(options.digitToChar)) {\n Object.entries(options.digitToChar).forEach(([key, value]) => {\n digitToChar[key] = value;\n });\n }\n return {\n ...options,\n digitToChar,\n };\n}\nexport const CounterPartsMixin = (superClass) => {\n var _a, _CounterPartsMixinClass___partsOptions;\n class CounterPartsMixinClass extends superClass {\n constructor() {\n super(...arguments);\n _CounterPartsMixinClass___partsOptions.set(this, {\n ..._a.DEFAULT_PARTS_OPTIONS,\n });\n // partsOptions: InnerPartsOptions =\n // CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS;\n this.parts = [];\n this.oldParts = [];\n this.partPreprocessDataList = [];\n }\n /**\n * 这是 `usePartData` 的配置项. `usePartData` 被用于从数值的变化中生成用于滚动的数据.\n * 这里不会有太多解释, 因为它是一个底层的配置项. 你可以查看 `CounterPartsMixinClass` 的源码了解更多信息.\n */\n get partsOptions() {\n return __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n }\n set partsOptions(value) {\n const old = __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n __classPrivateFieldSet(this, _CounterPartsMixinClass___partsOptions, preprocessPartsOptions({\n ..._a.DEFAULT_PARTS_OPTIONS,\n ...value,\n }), \"f\");\n this.requestUpdate('partsOptions', old);\n }\n sampling(from, to) {\n return transitionDigit(this.numberAdapter, this.numberAdapter.max(from, to), this.numberAdapter.min(from, to), this.partsOptions.sampleCount);\n }\n // eslint-disable-next-line class-methods-use-this\n sampleSplit(samples) {\n return [samples.slice()];\n }\n sampleToString(value) {\n return this.numberAdapter.toString(value);\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value')) {\n this.oldParts = this.parts;\n }\n /**\n * {@link processPartData} 依赖 {@link partsOptions} 和 {@link value} 生成数据.\n * 当依赖项没有变化时, 不需要重新生成数据.\n */\n if (changedProperties.has('value') ||\n changedProperties.has('partsOptions')) {\n this.parts = this.processPartData();\n }\n if (changedProperties.has('value')) {\n this.partPreprocessDataList = preprocessPartData(this.direction, this.parts, this.oldDirection, this.oldParts);\n }\n /**\n * `value` 没变但 `direction` 变化时, 也要重新生成 `partPreprocessDataList`.\n */\n // todo test events 和 animationOptions 冲突\n // if (\n // changedProperties.has('value') ||\n // changedProperties.has('direction')\n // ) {\n // }\n }\n /**\n * process:\n * 1. 采样\n * 2. 转换\n * 3. 构造\n */\n processPartData() {\n const { decimalSeparator, digitToChar, minPlaces, fillChar, type } = this.partsOptions;\n const from = this.value;\n const to = this.oldValue;\n let _sampleToString = value => this.sampleToString(value).split(decimalSeparator);\n if (type === 'string') {\n _sampleToString = value => [this.sampleToString(value), ''];\n }\n const result = [];\n /**\n * 对 {@link from} 到 {@link to} 的范围采样.\n */\n const tempParts = this.sampleSplit(this.sampling(from, to));\n /**\n * 将时间部分的数字转换为用于滚动的字符串数组\n *\n * headNumber: 最先显示的数字. 向下滚动时, 为滚动列表的最后一个数字, 向上滚动时相反.\n * tailNumber: 最后显示的数字. 向下滚动时, 为滚动列表的第一个数字, 向上滚动时相反.\n */\n {\n const directionValue = this.numberAdapter.gt(from, to) ? 'down' : 'up';\n for (let i = 0; i < tempParts.length; i++) {\n const partData = tempParts[i];\n // const headNumber =\n // partData[directionValue === \"down\" ? partData.length - 1 : 0];\n const tailNumber = partData[directionValue === 'down' ? 0 : partData.length - 1];\n const [minIntegerPlaces = 1, minDecimalPlaces = 0] = minPlaces;\n const numberParts = _sampleToString(tailNumber);\n const integerPlaces = Math.max(\n // numberParts[0].length,\n this.stringAdapter.stringToChars(numberParts[0]).length, minIntegerPlaces);\n const decimalPlaces = Math.max(\n // numberParts[1]?.length ?? 0,\n this.stringAdapter.stringToChars(numberParts[1] ?? '').length, minDecimalPlaces);\n /**\n * 使用 zip 将二维矩阵, 旋转90度\n */\n const data = zip(...partData\n /**\n * 保证位数一致, 向前补零\n */\n .map(digitData => {\n const [integer = '', decimal = ''] = _sampleToString(digitData);\n const integerChars = this.stringAdapter.stringToChars(integer);\n const decimalChars = this.stringAdapter.stringToChars(decimal);\n const filledIntegerPlaces = Math.max(integerPlaces - integerChars.length, 0);\n const filledDecimalPlaces = Math.max(decimalPlaces - decimalChars.length, 0);\n let filledChars = [].concat(new Array(filledIntegerPlaces).fill(fillChar), integerChars);\n if (decimalPlaces > 0) {\n filledChars = filledChars.concat([decimalSeparator], decimalChars, new Array(filledDecimalPlaces).fill(fillChar));\n }\n return filledChars;\n }))\n /**\n * 删除连续的重复项\n */\n .map((digitList, index, array) => ({\n data: digitList\n .filter((digit, digitIndex, digitArray) => digitIndex === 0 || digit !== digitArray[digitIndex - 1])\n .map(digit => digitToChar[digit] ?? digit),\n place: array.length - index,\n }));\n result.push({\n digits: data,\n });\n }\n }\n return result;\n }\n }\n _a = CounterPartsMixinClass, _CounterPartsMixinClass___partsOptions = new WeakMap();\n CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS = {\n sampleCount: 16,\n decimalSeparator: '.',\n fillChar: '0',\n minPlaces: [1, 0],\n digitToChar: {},\n type: 'number',\n };\n __decorate([\n property({\n type: Object,\n attribute: 'parts-options',\n converter: value => parseJsonString(value ?? '') ?? {},\n noAccessor: true,\n })\n ], CounterPartsMixinClass.prototype, \"partsOptions\", null);\n return CounterPartsMixinClass;\n};\n//# sourceMappingURL=counter-parts.js.map","function o(e){return typeof e==\"object\"&&e!==null}export{o as a};\n","/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/round.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateRound(na, a, b) {\n return function (t) {\n return na.round(na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t)));\n };\n}\n/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/number.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateNumber(na, a, b) {\n return function (t) {\n return na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t));\n };\n}\nexport function transitionDigit(na, from, to, count) {\n let _count = count;\n const interpolateFunc = na.isInteger(from) && na.isInteger(to)\n ? interpolateRound(na, from, to)\n : interpolateNumber(na, from, to);\n /**\n * 将浮点数转换为整数进行插值计算, 提供与整数插值类似的效果.\n * 取最大的小数位数作为插值个数. 但不超过30.\n */\n // const maxDecimalPlaces = Number.isInteger(from - to)\n // ? 0\n // : Math.max(new Decimal(from).dp(), new Decimal(to).dp());\n // const multiplier = Math.pow(10, maxDecimalPlaces);\n // const count = Math.min(\n // Math.abs(Math.floor(from * multiplier) - Math.floor(to * multiplier)) + 1,\n // 30\n // );\n if (na.eq(from, to))\n _count = 1;\n // [0, 1/count, 2/count, ..., 1]\n // const percents = range(count).map((d) => d / Math.max(count - 1, 1));\n const result = [];\n for (let i = 0; i < _count; i++) {\n const percent = na.div(na.create(i), na.create(Math.max(_count - 1, 1)));\n result.push(interpolateFunc(percent));\n }\n return result;\n}\n//# sourceMappingURL=transition-digit.js.map","const BuildInNumberAdapter = () => ({\n create(value) {\n const num = Number(value);\n return Number.isFinite(num) ? num : 0;\n },\n add(a, b) {\n return a + b;\n },\n sub(a, b) {\n return a - b;\n },\n mul(a, b) {\n return a * b;\n },\n div(a, b) {\n return a / b;\n },\n compare(a, b) {\n if (a > b)\n return 1;\n if (a < b)\n return -1;\n return 0;\n },\n eq(a, b) {\n return a === b;\n },\n gt(a, b) {\n return a > b;\n },\n gte(a, b) {\n return a >= b;\n },\n lt(a, b) {\n return a < b;\n },\n lte(a, b) {\n return a <= b;\n },\n isInteger(a) {\n return Number.isInteger(a);\n },\n isNegative(a) {\n return a < 0;\n },\n isPositive(a) {\n return a > 0;\n },\n isZero(a) {\n return a === 0;\n },\n isNaN(a) {\n return Number.isNaN(a);\n },\n isFinite(a) {\n return Number.isFinite(a);\n },\n abs(a) {\n return Math.abs(a);\n },\n ceil(a) {\n return Math.ceil(a);\n },\n floor(a) {\n return Math.floor(a);\n },\n round(a) {\n return Math.round(a);\n },\n max(a, b) {\n return Math.max(a, b);\n },\n min(a, b) {\n return Math.min(a, b);\n },\n toNumber(a) {\n return Number(a);\n },\n toString(a) {\n return String(a);\n },\n});\nexport { BuildInNumberAdapter };\n//# sourceMappingURL=build-in-number.js.map","/**\n * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.\n * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].\n *\n * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.\n *\n * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a\n * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/\n */\nconst BuildInStringAdapter = () => ({\n stringToChars(value) {\n return Array.from(value);\n },\n});\nexport { BuildInStringAdapter };\n//# sourceMappingURL=build-in-string.js.map","import { isNullish, isString } from 'remeda';\nimport { BuildInNumberAdapter } from './number-adapter/index.js';\nimport { BuildInIntlSegmenterAdapter, BuildInStringAdapter, } from './string-adapter/index.js';\nexport class TimeredCounterAdapter {\n /**\n * 设置要使用的数字适配器. 仅对设置完之后的 TimeredCounter 实例生效.\n *\n * 接受的关键字除了内置的 `number` 以外, 还可以通过 {@link registerNumberAdapter} 注册的 `keyword`.\n *\n * @param adapterOrType\n */\n static setNumberAdapter(adapterOrType) {\n let adapter = BuildInNumberAdapter();\n if (isString(adapterOrType)) {\n for (const [keywords, adapterFactory,] of TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS) {\n if (keywords.includes(adapterOrType)) {\n adapter = adapterFactory();\n break;\n }\n }\n }\n else {\n adapter = adapterOrType;\n }\n TimeredCounterAdapter.NUMBER_ADAPTER = adapter;\n }\n /**\n * 与 {@link setNumberAdapter} 类似, 用于设置字符串适配器.\n */\n static setStringAdapter(adapterOrType) {\n let adapter = BuildInStringAdapter();\n if (isString(adapterOrType)) {\n for (const [keywords, adapterFactory,] of TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS) {\n if (keywords.includes(adapterOrType)) {\n adapter = adapterFactory();\n break;\n }\n }\n }\n else {\n adapter = adapterOrType;\n }\n TimeredCounterAdapter.STRING_ADAPTER = adapter;\n }\n static registerNumberAdapter(keyword, adapter) {\n TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS.set(keyword, adapter);\n }\n static registerStringAdapter(keyword, adapter) {\n TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS.set(keyword, adapter);\n }\n /**\n * 可以直接使用 adapter 文件的导出进行注册.\n *\n * adapter 文件需要导出一个名为 register 的函数, 该函数接受一个 TimeredCounterAdapter 类型的参数.\n *\n * 具体示例请查看 {@link GraphemeSplitterAdapter} or {@link DecimalJsAdapter}.\n */\n static registryAdapter(adapter) {\n adapter.register(this);\n }\n}\nTimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS = new Map([\n [['number'], BuildInNumberAdapter],\n // [['decimal.js', 'decimaljs'], DecimalJsAdapter()],\n]);\nTimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS = new Map([\n [['string'], BuildInStringAdapter],\n [['intl-segmenter'], BuildInIntlSegmenterAdapter],\n // [['grapheme-splitter'], GraphemeSplitterAdapter()],\n]);\n/**\n * 数字适配器, 有以下两种:\n * 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.\n * 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.\n *\n * 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.\n *\n * @default BuildInNumberAdapter\n */\nTimeredCounterAdapter.NUMBER_ADAPTER = BuildInNumberAdapter();\n/**\n * 字符串适配器, 有以下两种:\n * 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.\n * 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.\n * 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.\n *\n * 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.\n *\n * @default BuildInStringAdapter\n */\nTimeredCounterAdapter.STRING_ADAPTER = BuildInStringAdapter();\n/**\n * 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.\n *\n * @see https://lit.dev/docs/components/properties/#attributes\n * @protected\n */\nTimeredCounterAdapter.VALUE_CONVERTER = {\n fromAttribute(value) {\n return value;\n },\n toAttribute(value) {\n return isNullish(value)\n ? value\n : TimeredCounterAdapter.NUMBER_ADAPTER.toString(value);\n },\n};\nexport function setNumberAdapter(...args) {\n TimeredCounterAdapter.setNumberAdapter(...args);\n}\nexport function setStringAdapter(...args) {\n TimeredCounterAdapter.setStringAdapter(...args);\n}\nexport function registerNumberAdapter(...args) {\n TimeredCounterAdapter.registerNumberAdapter(...args);\n}\nexport function registerStringAdapter(...args) {\n TimeredCounterAdapter.registerStringAdapter(...args);\n}\n//# sourceMappingURL=timered-counter-adapter.js.map","/**\n * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.\n *\n * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).\n *\n * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.\n */\nconst BuildInIntlSegmenterAdapter = (locales) => {\n const segmenter = new Intl.Segmenter(locales, { granularity: \"grapheme\" });\n return {\n stringToChars(value) {\n const segments = Array.from(segmenter.segment(value));\n return segments.map((s) => s.segment);\n },\n };\n};\nexport { BuildInIntlSegmenterAdapter };\n//# sourceMappingURL=build-in-intl-segmenter.js.map","import { __decorate } from \"tslib\";\nimport { property, state } from 'lit/decorators.js';\nimport { isNonNullish, isNullish, isString } from 'remeda';\nimport { TimeredCounterAdapter } from '../timered-counter-adapter.js';\nexport const CounterBaseMixin = (superClass) => {\n class CounterBaseMixinClass extends superClass {\n get value() {\n return this.numberAdapter.create(this.__value);\n }\n set value(value) {\n value = TimeredCounterAdapter.NUMBER_ADAPTER.create(isNullish(value) || (isString(value) && value.trim() === '')\n ? 0\n : value);\n const old = this.__value;\n this.__value = value;\n if (!this.numberAdapter.eq(this.__value, old)) {\n this.requestUpdate('value', old);\n }\n }\n /**\n * 用于记录上一次的值.\n *\n * 初始化时({@link connectedCallback}), oldValue 将被设置为 `initialValue` 或 `value` 的值.\n */\n get oldValue() {\n return this.numberAdapter.create(this.__oldValue);\n }\n set oldValue(value) {\n const old = this.__oldValue;\n this.__oldValue = value;\n this.requestUpdate('oldValue', old);\n }\n /**\n * 如果初始值被设置, {@link oldValue} 的初始值, 会使用该值而不是 `value`.\n *\n * 这对于初始化完成后启动动画效果非常有用.\n */\n get initialValue() {\n return isNullish(this.__initialValue)\n ? this.__initialValue\n : this.numberAdapter.create(this.__initialValue);\n }\n set initialValue(value) {\n const old = this.__initialValue;\n this.__initialValue = value;\n this.requestUpdate('initialValue', old);\n }\n /**\n * 自定义本地化配置, 否则从浏览器环境中获取.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale\n *\n * @default \"en-US\"\n */\n get locale() {\n return this.__locale;\n }\n set locale(value) {\n const old = this.__locale;\n this.__locale = value;\n this.requestUpdate('locale', old);\n this.localeInstance = isString(this.__locale)\n ? new Intl.Locale(this.__locale)\n : new Intl.Locale(...this.__locale);\n }\n constructor(...args) {\n super(...args);\n this.__value = TimeredCounterAdapter.NUMBER_ADAPTER.create(0);\n // value: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__oldValue = TimeredCounterAdapter.NUMBER_ADAPTER.create(0);\n // oldValue: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__initialValue = null;\n this.__locale = 'en-US';\n this.localeInstance = isString(this.locale)\n ? new Intl.Locale(this.locale)\n : new Intl.Locale(...this.locale);\n this.direction = 'up';\n this.oldDirection = this.direction;\n // @ts-ignore\n this.numberAdapter = TimeredCounterAdapter.NUMBER_ADAPTER;\n // @ts-ignore\n this.stringAdapter = TimeredCounterAdapter.STRING_ADAPTER;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value') &&\n !changedProperties.has('oldValue')) {\n // oldValue 未被手动设置时, 使用默认策略更新 oldValue.\n this.oldValue = changedProperties.get('value') ?? this.value;\n }\n this.oldDirection = this.direction;\n if (!this.numberAdapter.eq(this.value, this.oldValue)) {\n this.direction = this.numberAdapter.gt(this.value, this.oldValue)\n ? 'down'\n : 'up';\n }\n }\n /**\n * oldValue 的默认初始值应当来自 initialValue 或 value.\n * 以保证 oldValue 始终有值.\n */\n connectedCallback() {\n super.connectedCallback();\n this.oldValue = isNonNullish(this.initialValue)\n ? this.initialValue\n : this.value;\n }\n }\n __decorate([\n property({\n attribute: 'value',\n reflect: true,\n converter: {\n toAttribute: TimeredCounterAdapter.VALUE_CONVERTER.toAttribute,\n },\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"value\", null);\n __decorate([\n property({\n attribute: 'old-value',\n reflect: true,\n converter: TimeredCounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"oldValue\", null);\n __decorate([\n property({\n attribute: 'initial-value',\n reflect: true,\n converter: TimeredCounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"initialValue\", null);\n __decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return value;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n },\n reflect: true,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"locale\", null);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"direction\", void 0);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"oldDirection\", void 0);\n return CounterBaseMixinClass;\n};\n//# sourceMappingURL=counter-base.js.map","function l(n){return n!=null}export{l as a};\n","import { css } from 'lit';\nexport const timeredCounterStyles = css `\n :host {\n position: relative;\n white-space: nowrap;\n\n display: inline-block;\n }\n\n //.timered-counter {\n // position: relative;\n // display: inline-flex;\n // overflow: hidden;\n //\n // /**\n // inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n // @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n // @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n // */\n // vertical-align: bottom;\n //}\n\n .timered-counter.debug {\n overflow: visible;\n }\n\n //.timered-counter-datetime-duration .duration-unit {\n // font-size: 0.4em;\n // line-height: 1;\n //}\n`;\n//# sourceMappingURL=timered-counter-styles.js.map","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitOption, mergePartDigitOption, } from '../utils/extract-group-option.js';\nexport const CounterAnimationMixin = (superClass) => {\n class CounterAnimationMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 传递给 Web Animations API 的选项.\n */\n this.animationOptions = {};\n this.cachedAnimationOptions = [];\n /**\n * 传递给 Web Animations API 的关键帧配置.\n */\n this.keyframes = {};\n this.cachedKeyframes = [];\n }\n extractAnimationOptions() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.animationOptions ?? {}, getterOptions), extractPartDigitOption(this.animationOptionsDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedAnimationOptions, result)) {\n this.cachedAnimationOptions = result;\n }\n return this.cachedAnimationOptions;\n }\n extractKeyframes() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.keyframes ?? {}, getterOptions), extractPartDigitOption(this.keyframesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedKeyframes, result)) {\n this.cachedKeyframes = result;\n }\n return this.cachedKeyframes;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'animation-options', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"animationOptions\", void 0);\n __decorate([\n property({ type: Object, attribute: 'keyframes', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"keyframes\", void 0);\n return CounterAnimationMixinClass;\n};\n//# sourceMappingURL=counter-animation.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce(((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`}),\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { css } from 'lit';\nexport const rollerStyles = css `\n :host {\n display: inline-flex;\n overflow: hidden;\n\n /**\n inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n */\n vertical-align: bottom;\n }\n\n .counter-parts {\n display: inline-flex;\n flex: 1 1 auto;\n }\n\n .roller-part {\n display: inline-flex;\n white-space: nowrap;\n }\n\n .roller__prefix,\n .roller__suffix {\n flex: none;\n }\n\n .roller-part .roller-part__wrapper {\n display: inline-block;\n }\n\n .roller-part .roller-part__suffix {\n display: inline-block;\n }\n`;\nexport const rollerDigitStyles = css `\n .roller-part-digit {\n position: relative;\n display: inline-block;\n }\n\n .placeholder {\n visibility: hidden;\n display: inline-block;\n }\n\n .roll-list {\n position: absolute;\n left: 0;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n }\n\n .roll-list.roll-list__up {\n top: 0;\n }\n\n .roll-list.roll-list__down {\n bottom: 0;\n }\n\n .roll-list__shadow {\n visibility: hidden;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -10;\n display: inline-flex;\n flex-direction: column;\n white-space: nowrap;\n }\n\n .roll-item {\n display: inline-block;\n width: 100%;\n }\n\n .roll-item.roll-item__head {\n position: absolute;\n top: 100%;\n }\n\n .roll-item.roll-item__tail {\n position: absolute;\n bottom: 100%;\n }\n`;\n//# sourceMappingURL=styles.js.map","/**\n * @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts\n */\nexport const noop = (any) => any;\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nexport function cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n//# sourceMappingURL=cubic-bezier.js.map","import { cubicBezier } from './cubic-bezier.js';\n/**\n * @see https://easings.net\n */\nexport const easeInSine = cubicBezier(0.12, 0, 0.39, 0);\nexport const easeOutSine = cubicBezier(0.61, 1, 0.88, 1);\nexport const easeInOutSine = cubicBezier(0.37, 0, 0.63, 1);\nexport const easeInQuad = cubicBezier(0.11, 0, 0.5, 0);\nexport const easeOutQuad = cubicBezier(0.5, 1, 0.89, 1);\nexport const easeInOutQuad = cubicBezier(0.45, 0, 0.55, 1);\nexport const easeInCubic = cubicBezier(0.32, 0, 0.67, 0);\nexport const easeOutCubic = cubicBezier(0.33, 1, 0.68, 1);\nexport const easeInOutCubic = cubicBezier(0.65, 0, 0.35, 1);\nexport const easeInQuart = cubicBezier(0.5, 0, 0.75, 0);\nexport const easeOutQuart = cubicBezier(0.25, 1, 0.5, 1);\nexport const easeInOutQuart = cubicBezier(0.76, 0, 0.24, 1);\nexport const easeInQuint = cubicBezier(0.64, 0, 0.78, 0);\nexport const easeOutQuint = cubicBezier(0.22, 1, 0.36, 1);\nexport const easeInOutQuint = cubicBezier(0.83, 0, 0.17, 1);\nexport const easeInExpo = cubicBezier(0.7, 0, 0.84, 0);\nexport const easeOutExpo = cubicBezier(0.16, 1, 0.3, 1);\nexport const easeInOutExpo = cubicBezier(0.87, 0, 0.13, 1);\nexport const easeInCirc = cubicBezier(0.55, 0, 1, 0.45);\nexport const easeOutCirc = cubicBezier(0, 0.55, 0.45, 1);\nexport const easeInOutCirc = cubicBezier(0.85, 0, 0.15, 1);\nexport const easeInBack = cubicBezier(0.36, 0, 0.66, -0.56);\nexport const easeOutBack = cubicBezier(0.34, 1.56, 0.64, 1);\nexport const easeInOutBack = cubicBezier(0.68, -0.6, 0.32, 1.6);\nexport function easeInElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);\n}\nexport function easeOutElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n}\nexport function easeInOutElastic(x) {\n const c5 = (2 * Math.PI) / 4.5;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n if (x < 0.5) {\n return (-(2 ** (20 * x - 10)) * Math.sin((20 * x - 11.125) * c5)) / 2;\n }\n return (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n}\nexport function easeOutBounce(x) {\n const n1 = 7.5625;\n const d1 = 2.75;\n if (x < 1 / d1) {\n return n1 * x * x;\n }\n if (x < 2 / d1) {\n x -= 1.5 / d1;\n return n1 * x * x + 0.75;\n }\n if (x < 2.5 / d1) {\n x -= 2.25 / d1;\n return n1 * x * x + 0.9375;\n }\n x -= 2.625 / d1;\n return n1 * x * x + 0.984375;\n}\nexport function easeInBounce(x) {\n return 1 - easeOutBounce(1 - x);\n}\nexport function easeInOutBounce(x) {\n if (x < 0.5) {\n return (1 - easeOutBounce(1 - 2 * x)) / 2;\n }\n return (1 + easeOutBounce(2 * x - 1)) / 2;\n}\n//# sourceMappingURL=penner-easing-functions.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { intersection, isEmpty, isNullish, isString, merge, omit, range, } from 'remeda';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { rollerDigitStyles } from './styles.js';\nimport * as EasingFunctions from '../../easing/penner-easing-functions.js';\nclass RollerDigitAnimationEvent extends Event {\n}\nlet TimeredCounterRollerDigit = class TimeredCounterRollerDigit extends LitElement {\n constructor() {\n super();\n this.digit = { data: [], place: 0 };\n this.preprocessData = {\n animate: true,\n cancelPrevAnimation: false,\n earlyReturn: '',\n index: 0,\n partIndex: 0,\n digitIndex: 0,\n };\n this.direction = 'up';\n this.textStyle = {};\n this.cellStyle = [];\n this.animationOptions = {};\n this.keyframes = {};\n this.digitWidth = 0;\n this.resizeObserver = new ResizeObserver(() => {\n this.digitWidth = this.clonedRollDigitList\n ? this.clonedRollDigitList.offsetWidth\n : 0;\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.clonedRollDigitList) {\n this.resizeObserver.observe(this.clonedRollDigitList);\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n updated(_changedProperties) {\n super.updated(_changedProperties);\n /**\n * 仅当影响滚动列表 dom 结构的属性发生变化时才会触发动画.\n */\n if (intersection(Array.from(_changedProperties.keys()), [\n 'digit',\n 'preprocessData',\n 'direction',\n 'animationOptions',\n 'keyframes',\n ]).length > 0) {\n if (this.shouldAnimate()) {\n this.startAnimation().then();\n }\n }\n }\n render() {\n const shadowCellStyle = this.cellStyle.map(style => omit(style, ['position']));\n return html `<span class=\"roller-part-digit\">\n <!-- 占位 -->\n <span\n class=\"placeholder\"\n style=${styleMap({ width: `${Math.round(this.digitWidth)}px` })}\n >0</span\n >\n <!-- 一个不可见的滚动列表的复制, 用于计算该列表的最大宽度. -->\n <span class=\"roll-list__shadow\">\n ${repeat(this.digit.data, (_, index) => index, (digit, index) => html `<span style=${styleMap(shadowCellStyle[index])}\n >${digit}</span\n >`)}\n </span>\n <span\n class=${classMap({\n /**\n * 向上(up)滚动时, 使滚动列表顶部对齐以便于应用 `translationY(-100%)` 实现向上滚动效果\n * 向下同理\n */\n 'roll-list__up': this.direction === 'up',\n 'roll-list__down': this.direction === 'down',\n 'roll-list': true,\n })}\n >\n ${this.digit.data.length > 1\n ? repeat(this.digit.data, (_, index) => index, (digit, index) => {\n if (this.direction === 'up' &&\n index === this.digit.data.length - 1) {\n return html `<span\n part=\"cell\"\n class=\"roll-item roll-item__head\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n }\n if (this.direction === 'down' && index === 0) {\n return html `\n <span\n part=\"cell\"\n class=\"roll-item roll-item__tail\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >\n `;\n }\n return html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n })\n : html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[0])}\n ><span style=${styleMap(this.textStyle)}\n >${this.digit.data[0]}</span\n ></span\n >`}</span\n ></span\n > `;\n }\n shouldAnimate() {\n const { cancelPrevAnimation, animate } = this.preprocessData;\n if (cancelPrevAnimation) {\n if (this.animation) {\n this.animation.cancel();\n }\n if (this.rollList && this.rollList.style && this.rollList.style.cssText) {\n this.rollList.style.cssText = '';\n }\n }\n if (!animate)\n return false;\n return true;\n }\n async startAnimation() {\n if (isNullish(this.rollList))\n return;\n this.__emitAnimationStart();\n const anmOptions = merge({ duration: 1000, iterations: 1, easing: 'ease-out', fill: 'forwards' }, this.animationOptions);\n const keyframes = isEmpty(this.keyframes)\n ? {\n up: { transform: ['translateY(0)', 'translateY(-100%)'] },\n down: { transform: ['translateY(0)', 'translateY(100%)'] },\n }[this.direction]\n : this.keyframes;\n /**\n * 尝试从 `PennerEasingFunctions` 中获取对应的 easing 函数\n */\n // {\n if (isString(anmOptions.easing) &&\n EasingFunctions[anmOptions.easing]) {\n const func = EasingFunctions[anmOptions.easing];\n anmOptions.easing = `linear(${range(0, 64)\n .map((_, i) => func(i / 63))\n .join(',')})`;\n }\n // }\n try {\n this.clearAnimation();\n this.animation = this.rollList.animate(keyframes, anmOptions);\n this.animation.addEventListener('finish', () => this.__emitAnimationEnd(), {\n once: true,\n });\n // /**\n // * 动画播放完成或被其他动画中断都会使得 `finished` resolve.\n // * 只有当动画顺利播放完成的情况下, 才能调用 `cancel` 取消动画. 在其他情况下调用, 会抛出异常[1].\n // *\n // * 因此, 提前检查 `playState` 的值. 当 `playState` 不是 `finished` 时, 说明动画被其他 `Animation` 实例中断.\n // * 因为已经有其他 `Animation` 实例的存在, 我们可以直接丢弃这个 `Animation` 实例, 而不用担心无动画可用.\n // *\n // * [1]: https://developer.mozilla.org/en-US/docs/Web/API/Animation/cancel#exceptions\n // */\n // await this.animation.finished;\n // if (\n // this.animation.playState === 'finished' &&\n // this.rollList.checkVisibility()\n // ) {\n // // this.animation.commitStyles();\n // // this.animation.cancel();\n // }\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n clearAnimation() {\n this.animation?.removeEventListener('finish', this.__emitAnimationEnd);\n this.animation?.cancel();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-end'));\n }\n};\nTimeredCounterRollerDigit.styles = [rollerDigitStyles];\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"digit\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"preprocessData\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRollerDigit.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"textStyle\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRollerDigit.prototype, \"cellStyle\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"keyframes\", void 0);\n__decorate([\n query('.roll-list__shadow')\n], TimeredCounterRollerDigit.prototype, \"clonedRollDigitList\", void 0);\n__decorate([\n query('.roll-list')\n], TimeredCounterRollerDigit.prototype, \"rollList\", void 0);\n__decorate([\n state()\n], TimeredCounterRollerDigit.prototype, \"digitWidth\", void 0);\nTimeredCounterRollerDigit = __decorate([\n customElement('timered-counter-roller-digit')\n], TimeredCounterRollerDigit);\nexport { TimeredCounterRollerDigit };\n//# sourceMappingURL=roller-digit.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { isNumber, values } from 'remeda';\nimport './roller-digit.js';\nimport { rollerStyles } from './styles.js';\nclass RollerAnimationEvent extends Event {\n}\nlet TimeredCounterRoller = class TimeredCounterRoller extends LitElement {\n constructor() {\n super(...arguments);\n this.color = '';\n this.direction = 'up';\n this.parts = [];\n this.partPreprocessDataList = [];\n this.animationOptions = [];\n this.keyframes = [];\n this.cellStyles = [];\n this.digitStyles = [];\n this.partStyles = [];\n this.parentContainerRect = {};\n this.__partDigitsColorStyles = [];\n /**\n * 记录一次更新中, 启动动画并结束的 <timered-counter-roller-digit> 元素个数.\n *\n * 在每次更新前重置为 0.\n *\n * @see {@link __handleDigitAnimationEnd}\n * @private\n */\n this.digitAnimateEndCount = 0;\n /**\n * 记录一次更新中, 需要启动动画的 <timered-counter-roller-digit> 元素总数.\n *\n * 在每次更新前重新计算.\n * @private\n */\n this.digitAnimatedCount = 0;\n }\n render() {\n return html `<span\n class=\"roller__prefix\"\n data-part-id=\"-1\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-1]?.[0] ?? {}))}\n >\n <slot part=\"prefix\" name=\"prefix\"></slot>\n </span>\n <span class=\"counter-parts\">\n ${repeat(this.parts, (_, index) => index, (part, partIndex) => html `<span\n part=\"part\"\n class=\"roller-part\"\n style=${styleMap((this.partStyles?.[partIndex] ?? {}))}\n >${repeat(part.digits, (_, index) => `${part.digits.length - index}`, (digitInfo, digitIndex) => html `<timered-counter-roller-digit\n exportparts=\"digit, cell\"\n part=\"digit\"\n class=\"roller-part__wrapper\"\n style=${styleMap((this.digitStyles?.[partIndex]?.[digitIndex] ??\n {}))}\n data-part-id=\"${partIndex}\"\n data-digit-id=\"${digitIndex}\"\n .digit=${digitInfo}\n .preprocessData=${this.partPreprocessDataList[partIndex][digitIndex]}\n .direction=${this.direction}\n .textStyle=${this.__partDigitsColorStyles?.[partIndex]?.[digitIndex] ?? {}}\n .cellStyle=${this.cellStyles[partIndex][digitIndex]}\n .animationOptions=${this.animationOptions[partIndex][digitIndex]}\n .keyframes=${this.keyframes[partIndex][digitIndex]}\n @roller-digit-animation-end=${this\n .__handleDigitAnimationEnd}\n ></timered-counter-roller-digit>`)}${html `<span\n class=\"roller-part__suffix\"\n data-part-id=\"${partIndex}\"\n data-digit-id=\"-1\"\n style=${styleMap((this.__partDigitsColorStyles?.[partIndex]?.[-1] ??\n {}))}\n ><slot\n part=\"part-suffix\"\n name=${`part-suffix-${partIndex}`}\n ></slot\n ></span>`}</span\n > `)}</span\n ><span\n class=\"roller__suffix\"\n data-part-id=\"-2\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-2]?.[0] ?? {}))}\n ><slot part=\"suffix\" name=\"suffix\"></slot\n ></span>`;\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('direction') ||\n _changedProperties.has('parts')) {\n this.digitAnimateEndCount = 0;\n this.digitAnimatedCount = this.partPreprocessDataList\n .flat()\n .filter(({ animate }) => animate).length;\n if (this.digitAnimatedCount > 0) {\n this.__emitAnimationStart();\n }\n }\n this.__partDigitsColorStyles = this.__generatePartDigitsColorStyles();\n }\n __handleDigitAnimationEnd() {\n this.digitAnimateEndCount++;\n if (this.digitAnimateEndCount < this.digitAnimatedCount)\n return;\n this.__emitAnimationEnd();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-end'));\n }\n __generatePartDigitsColorStyles() {\n const result = [];\n const containerRect = this.parentContainerRect;\n const { \n // parts,\n // oldParts,\n prefixContainer, suffixContainer, color, } = this;\n const partDigitElements = Array.from(this.shadowRoot?.querySelectorAll('[data-part-id]').values() ?? []);\n /**\n * 当某次更新**将**会导致 DOM 宽高发生变化时(如: 滚动数字的位数增加/减少会导致宽度变化),\n * 需要跳过这次更新然后等待 DOM 宽高变化完成才能更新(宽高变化后将通过 {@link containerRect} 触发).\n */\n if (!containerRect) {\n return result;\n }\n /**\n * 比较 {@link data} 前后不同判断是否导致 DOM 宽度会发生变化.\n */\n // if (parts.length !== oldParts.length) {\n // this.requestUpdate();\n // return result;\n // }\n // for (let i = 0; i < parts.length; i++) {\n // if (parts[i].digits.length !== oldParts[i].digits.length) {\n // this.requestUpdate();\n // return result;\n // }\n // }\n if (prefixContainer)\n partDigitElements[-1] = prefixContainer;\n if (suffixContainer)\n partDigitElements[-2] = suffixContainer;\n for (const el of values(partDigitElements)) {\n const partId = Number.parseInt(el.dataset.partId ?? '-1', 10);\n const digitId = Number.parseInt(el.dataset.digitId ?? '-1', 10);\n if (!isNumber(partId) || !isNumber(digitId)) {\n throw new Error('The data-part-id and data-digit-id attributes are required.');\n }\n if (!result[partId])\n result[partId] = [];\n if (CSS.supports('color', color)) {\n result[partId][digitId] = { color };\n }\n else if (CSS.supports('background-image', color)) {\n result[partId][digitId] = {\n backgroundImage: color,\n backgroundClip: 'text',\n backgroundSize: `${this.offsetWidth}px ${this.offsetHeight}px`,\n backgroundPositionX: `${-el.offsetLeft}px`,\n backgroundPositionY: `${-el.offsetTop}px`,\n backgroundRepeat: 'no-repeat',\n color: 'transparent',\n // @ts-ignore\n '-webkit-text-fill-color': 'transparent',\n };\n }\n else {\n result[partId][digitId] = {};\n // todo error event\n // eslint-disable-next-line no-console\n console.warn(new Error('The color property is not supported.'));\n }\n }\n return result;\n }\n};\nTimeredCounterRoller.styles = [rollerStyles];\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"parts\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partPreprocessDataList\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"keyframes\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"cellStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"digitStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partStyles\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRoller.prototype, \"parentContainerRect\", void 0);\n__decorate([\n query('.roller__prefix')\n], TimeredCounterRoller.prototype, \"prefixContainer\", void 0);\n__decorate([\n query('.roller__suffix')\n], TimeredCounterRoller.prototype, \"suffixContainer\", void 0);\nTimeredCounterRoller = __decorate([\n customElement('timered-counter-roller')\n], TimeredCounterRoller);\nexport { TimeredCounterRoller };\n//# sourceMappingURL=roller.js.map","import{a as e}from\"./chunk-RAAYCPUM.js\";function r(...t){return e(Object.values,t)}export{r as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nexport const CounterAiraMixin = (superClass) => {\n class CounterAiraMixinClass extends superClass {\n constructor() {\n super(...arguments);\n this.ariaLabel = '';\n this.ariaLive = 'polite';\n // updated(changedProperties: PropertyValues<this>) {\n // if (changedProperties.has('value')) {\n // this.ariaLabel = this.generateAriaLabel();\n // }\n // }\n }\n /**\n * 生成 aria-label 属性值. 在每次更新完成后调用.\n */\n generateAriaLabel() {\n let label = '';\n const { direction } = this;\n for (const part of this.parts) {\n for (const digit of part.digits) {\n label += `${digit.data[direction === 'up' ? digit.data.length - 1 : 0]}`;\n }\n }\n return label;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n this.ariaLabel = this.generateAriaLabel();\n }\n }\n __decorate([\n property({ attribute: 'aria-label', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLabel\", void 0);\n __decorate([\n property({ attribute: 'aira-live', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLive\", void 0);\n return CounterAiraMixinClass;\n};\n//# sourceMappingURL=counter-aira.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { CounterStylesMixin } from './mixins/counter-styles.js';\nimport { CounterPartsMixin } from './mixins/counter-parts.js';\nimport { CounterBaseMixin } from './mixins/counter-base.js';\nimport { timeredCounterStyles } from './styles/timered-counter-styles.js';\nimport { CounterAnimationMixin } from './mixins/counter-animation.js';\nimport './transitions/roller/index.js';\nimport { CounterAiraMixin } from './mixins/counter-aira.js';\nclass TimeredCounterAnimationEvent extends Event {\n}\nlet TimeredCounter = class TimeredCounter extends CounterAiraMixin(CounterAnimationMixin(CounterStylesMixin(CounterPartsMixin(CounterBaseMixin(LitElement))))) {\n constructor() {\n super();\n this.resizeObserver = new ResizeObserver(() => {\n this.partsContainerRect = this.partsContainer\n ? this.partsContainer.getBoundingClientRect()\n : new DOMRect();\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.partsContainer) {\n this.resizeObserver.observe(this.partsContainer);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n class=\"timered-counter\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n dispatchTimeredCounterAnimationStart() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-start'));\n }\n dispatchTimeredCounterAnimationEnd() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-end'));\n }\n};\nTimeredCounter.styles = [timeredCounterStyles];\n__decorate([\n state()\n], TimeredCounter.prototype, \"partsContainerRect\", void 0);\n__decorate([\n query('timered-counter-roller')\n], TimeredCounter.prototype, \"partsContainer\", void 0);\nTimeredCounter = __decorate([\n customElement('timered-counter')\n], TimeredCounter);\nexport { TimeredCounter };\n//# sourceMappingURL=timered-counter.js.map","import { css } from 'lit';\nexport const timeredCounterNumberStyles = css ``;\n//# sourceMappingURL=timered-counter-number-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isBoolean, isNullish } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterNumberStyles } from './styles/timered-counter-number-styles.js';\nlet TimeredCounterNumber = class TimeredCounterNumber extends TimeredCounter {\n constructor() {\n super(...arguments);\n /**\n * 本地化数字格式化配置. 传入 `true` 时使用浏览器的默认配置.\n *\n * 详细配置参数请参考 [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)\n *\n * @default false\n */\n this.localeNumber = false;\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置中的小数点分隔符. 根据不同的地区可能是 `.` 或 `,`.\n * @see https://en.wikipedia.org/wiki/Decimal_separator\n */\n this.localDecimalSeparator = '';\n /**\n * 本地化数字格式化配置中的分组分隔符.\n * @see https://en.wikipedia.org/wiki/Decimal_separator#Digit_grouping\n */\n this.localeGroupingSeparator = '';\n }\n sampleToString(value) {\n return this.localeNumber\n ? // todo Intl.NumberFormat 最大支持 21 位数.\n this.localeNumberInstance.format(this.numberAdapter.toNumber(value))\n : this.numberAdapter.toString(value);\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n willUpdate(_changedProperties) {\n if (_changedProperties.has('localeNumber') ||\n _changedProperties.has('locale')) {\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置变化时, 更新 `partsOptions` 中的 `decimalSeparator`.\n */\n {\n const numberParts = this.localeNumberInstance.formatToParts(123456.789);\n const decimalSeparator = numberParts.find(part => part.type === 'decimal')?.value || '.';\n const groupingSeparator = numberParts.find(part => part.type === 'group')?.value || '';\n if (this.localDecimalSeparator !== decimalSeparator ||\n this.localeGroupingSeparator !== groupingSeparator) {\n this.localDecimalSeparator = decimalSeparator;\n const oldPartsOptions = this.partsOptions;\n this.partsOptions = {\n ...oldPartsOptions,\n decimalSeparator: this.localDecimalSeparator,\n };\n _changedProperties.set('partsOptions', oldPartsOptions);\n }\n }\n }\n super.willUpdate(_changedProperties);\n }\n};\nTimeredCounterNumber.styles = [...TimeredCounter.styles, timeredCounterNumberStyles];\n__decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return false;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return true;\n }\n },\n reflect: true,\n attribute: 'locale-number',\n })\n], TimeredCounterNumber.prototype, \"localeNumber\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localDecimalSeparator\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localeGroupingSeparator\", void 0);\nTimeredCounterNumber = __decorate([\n customElement('timered-counter-number')\n], TimeredCounterNumber);\nexport { TimeredCounterNumber };\n//# sourceMappingURL=timered-counter-number.js.map","import { css } from 'lit';\nexport const timeredCounterStringStyles = css ``;\n//# sourceMappingURL=timered-counter-string-styles.js.map","/**\n * @license https://github.com/HarasimowiczKamil/any-base\n */\nimport { isDeepEqual } from 'remeda';\nfunction isValid(number, alphabet) {\n for (const char of number) {\n if (alphabet.indexOf(char) === -1) {\n return false;\n }\n }\n return true;\n}\nfunction convert(srcAlphabet, dstAlphabet, number) {\n let i;\n let divide;\n let newLen;\n let { length } = number;\n const numberMap = {};\n const fromBase = srcAlphabet.length;\n const toBase = dstAlphabet.length;\n const result = [];\n if (!isValid(number, srcAlphabet)) {\n throw new Error(`Number \"${number}\" contains of non-alphabetic digits (${srcAlphabet})`);\n }\n if (isDeepEqual(srcAlphabet, dstAlphabet)) {\n return number.join('');\n }\n for (i = 0; i < length; i++) {\n numberMap[i] = srcAlphabet.indexOf(number[i]);\n }\n do {\n divide = 0;\n newLen = 0;\n for (i = 0; i < length; i++) {\n divide = divide * fromBase + numberMap[i];\n if (divide >= toBase) {\n numberMap[newLen++] = Math.floor(divide / toBase);\n divide %= toBase;\n }\n else if (newLen > 0) {\n numberMap[newLen++] = 0;\n }\n }\n length = newLen;\n result.push(dstAlphabet[divide]);\n } while (newLen !== 0);\n return result.reverse().join('');\n}\nexport function anyBase(sa, srcAlphabet, dstAlphabet) {\n return (number) => convert(sa.stringToChars(srcAlphabet), sa.stringToChars(dstAlphabet), sa.stringToChars(number));\n}\nexport const BIN = '01';\nexport const OCT = '01234567';\nexport const DEC = '0123456789';\nexport const HEX = '0123456789abcdef';\n//# sourceMappingURL=any-base.js.map","import { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { isEmpty, isString } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterStringStyles } from './styles/timered-counter-string-styles.js';\nimport { anyBase } from './utils/any-base.js';\n/**\n * 替换一些特定的字符.\n * 1. \" \": 空格字符在 HTML 中会被忽略导致无法计算字符宽度, 使用 \\xa0 替换.\n */\nconst REPLACED_CHARS = {\n ' ': '\\xa0', // &nbsp;\n};\nlet TimeredCounterString = class TimeredCounterString extends TimeredCounter {\n constructor() {\n super(...arguments);\n // /**\n // * 自定义字符集, 传入的 `value` 的字符串表示形式的每个字符都**必须**被包含在该字符集中.\n // *\n // * @default `value` 的去重字符集.\n // */\n // @property({\n // reflect: true,\n // })\n this.__alphabet = '';\n this.__initialValueString = '';\n this.__valueString = '';\n this.__oldValueString = '';\n this.__partsOptions = null;\n this.__decimalToAnyBase = anyBase(this.stringAdapter, '0123456789', this.__alphabet);\n this.__anyBaseToDecimal = anyBase(this.stringAdapter, this.__alphabet, '0123456789');\n }\n get initialValue() {\n return super.initialValue;\n }\n set initialValue(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n this.__initialValueString = value ?? '';\n if (isEmpty(this.__initialValueString)) {\n super.initialValue = this.numberAdapter.create(0);\n return;\n }\n /**\n * `initialValue` 在初始化时会被赋值给 `oldValue`, 因此, 同步更新逻辑与 `value` 的 setter 一致.\n */\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n super.initialValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__initialValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持任意字符串.\n */\n set value(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n else if (this.__valueString === value) {\n return;\n }\n this.__oldValueString = this.__valueString;\n this.__valueString = value ?? '';\n if (isEmpty(this.__valueString)) {\n super.value = this.numberAdapter.create(0);\n return;\n }\n /**\n * 传入的 value 通过 `__anyBaseToDecimal` 转换为十进制数值, `__anyBaseToDecimal` 则基于 `__alphabet` 计算.\n * 因此, 当 `__alphabet` 更新时, 需要重新计算 `value` 和 `oldValue` 的值.\n * 以确保 `value` 和 `oldValue` 能够通过 `__decimalToAnyBase` 转换为原始字符串.\n */\n this.__updateAlphabet(this.__valueString, this.__oldValueString);\n super.oldValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__oldValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n type: 'string',\n fillChar: REPLACED_CHARS[' '],\n ...this.__partsOptions,\n digitToChar: {\n ' ': REPLACED_CHARS[' '],\n ...this.__partsOptions.digitToChar,\n },\n };\n }\n /**\n * 根据 `value`, `initialValue`, `oldValue` 更新字符集.\n * @private\n */\n __updateAlphabet(value, oldValue) {\n const allChars = isEmpty(value) && isEmpty(oldValue)\n ? ''\n : `\\x00${oldValue ?? ''}${value ?? ''}`;\n const charSet = new Set(this.stringAdapter.stringToChars(allChars));\n // if (charSet.size < 10) {\n // for (let i = 0; i < 10; i++) {\n // charSet.add(i.toString());\n // if (charSet.size >= 10) break;\n // }\n // }\n this.__alphabet = Array.from(charSet).sort().join('');\n const sa = this.stringAdapter;\n const alphabet = this.__alphabet;\n this.__decimalToAnyBase = anyBase(sa, '0123456789', alphabet);\n this.__anyBaseToDecimal = anyBase(sa, alphabet, '0123456789');\n }\n sampleToString(value) {\n return this.__decimalToAnyBase(this.numberAdapter.toString(value));\n }\n connectedCallback() {\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n this.initialValue = this.__initialValueString;\n this.value = this.__valueString;\n /**\n * TimeredCounterString 有自定义的 `fillChar` 和 `digitToChar`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n super.connectedCallback();\n }\n};\nTimeredCounterString.styles = [...TimeredCounter.styles, timeredCounterStringStyles];\nTimeredCounterString = __decorate([\n customElement('timered-counter-string')\n], TimeredCounterString);\nexport { TimeredCounterString };\n//# sourceMappingURL=timered-counter-string.js.map","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const sign = compareLocalAsc(laterDate_, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarDays(laterDate_, earlierDate_),\n );\n\n laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n const isLastDayNotFull = Number(\n compareLocalAsc(laterDate_, earlierDate_) === -sign,\n );\n\n const result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n const diff =\n laterDate.getFullYear() - earlierDate.getFullYear() ||\n laterDate.getMonth() - earlierDate.getMonth() ||\n laterDate.getDate() - earlierDate.getDate() ||\n laterDate.getHours() - earlierDate.getHours() ||\n laterDate.getMinutes() - earlierDate.getMinutes() ||\n laterDate.getSeconds() - earlierDate.getSeconds() ||\n laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n if (diff < 0) return -1;\n if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n const diff =\n differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\n\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport function differenceInQuarters(laterDate, earlierDate, options) {\n const diff = differenceInMonths(laterDate, earlierDate, options) / 3;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInQuarters;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInDays } from \"./differenceInDays.js\";\n\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport function differenceInWeeks(laterDate, earlierDate, options) {\n const diff = differenceInDays(laterDate, earlierDate, options) / 7;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInWeeks;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addHours } from \"./addHours.js\";\n\n/**\n * The {@link subHours} function options.\n */\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport function subHours(date, amount, options) {\n return addHours(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link subMilliseconds} function options.\n */\n\n/**\n * Subtract the specified number of milliseconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the milliseconds subtracted\n */\nexport function subMilliseconds(date, amount, options) {\n return addMilliseconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMilliseconds;\n","import { addMinutes } from \"./addMinutes.js\";\n\n/**\n * The {@link subMinutes} function options.\n */\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the minutes subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport function subMinutes(date, amount, options) {\n return addMinutes(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMinutes;\n","import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n const _date = toDate(date, options?.in);\n _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n","import { addQuarters } from \"./addQuarters.js\";\n\n/**\n * The {@link subQuarters} function options.\n */\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport function subQuarters(date, amount, options) {\n return addQuarters(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subQuarters;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addSeconds } from \"./addSeconds.js\";\n\n/**\n * The {@link subSeconds} function options.\n */\n\n/**\n * Subtract the specified number of seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport function subSeconds(date, amount, options) {\n return addSeconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subSeconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n","import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\n */\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","export var DurationPartType;\n(function (DurationPartType) {\n DurationPartType[\"Millisecond\"] = \"millisecond\";\n DurationPartType[\"Second\"] = \"second\";\n DurationPartType[\"Minute\"] = \"minute\";\n DurationPartType[\"Hour\"] = \"hour\";\n DurationPartType[\"Day\"] = \"day\";\n DurationPartType[\"Week\"] = \"weekOfYear\";\n DurationPartType[\"Month\"] = \"month\";\n DurationPartType[\"Quarter\"] = \"quarter\";\n DurationPartType[\"Year\"] = \"year\";\n})(DurationPartType || (DurationPartType = {}));\nexport const DurationPartMillisecond = {\n [DurationPartType.Millisecond]: 1,\n [DurationPartType.Second]: 1000,\n [DurationPartType.Minute]: 60000,\n [DurationPartType.Hour]: 3600000,\n [DurationPartType.Day]: 86400000,\n [DurationPartType.Week]: 604800000,\n [DurationPartType.Month]: 2629800000,\n [DurationPartType.Quarter]: 7889400000,\n [DurationPartType.Year]: 31557600000,\n};\nexport const DurationPartMillisecondToType = {\n 1: DurationPartType.Millisecond,\n 1000: DurationPartType.Second,\n 60000: DurationPartType.Minute,\n 3600000: DurationPartType.Hour,\n 86400000: DurationPartType.Day,\n 604800000: DurationPartType.Week,\n 2629800000: DurationPartType.Month,\n 7889400000: DurationPartType.Quarter,\n 31557600000: DurationPartType.Year,\n};\n//# sourceMappingURL=duration.js.map","export const DateTimeFields = [\n \"era\",\n \"year\",\n \"quarter\",\n \"month\",\n \"weekOfYear\",\n \"weekday\",\n \"day\",\n \"dayPeriod\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n];\nexport function getLocalizedDateTimeFields(locale) {\n const displayNames = new Intl.DisplayNames(locale, {\n type: \"dateTimeField\",\n });\n return DateTimeFields.reduce((acc, field) => {\n acc[field] = displayNames.of(field) ?? \"\";\n return acc;\n }, {});\n}\n//# sourceMappingURL=localized-date-time-fields.js.map","import { differenceInMilliseconds, differenceInDays, differenceInHours, differenceInMinutes, differenceInMonths, differenceInQuarters, differenceInSeconds, differenceInWeeks, differenceInYears, subDays, subHours, subMilliseconds, subMinutes, subMonths, subQuarters, subSeconds, subWeeks, subYears, } from 'date-fns';\nimport { DurationPartType } from '../types/duration.js';\n/**\n * 计算两个日期之间的时间间隔. 返回一个数组, 包含 {@link parts} 每个部分的值.\n *\n * @example duration(new Date(\"2022-01-01\"), new Date(\"2022-01-02\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 0, 0]\n * @example duration(new Date(\"2022-01-01 12:00:00\"), new Date(\"2022-01-02 12:30:00\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 30, 0]\n *\n * @param start\n * @param end\n * @param parts\n */\nexport function durationObject(start, end, parts) {\n let remain = end;\n const result = {};\n for (const part of parts) {\n let value = 0;\n switch (part) {\n case DurationPartType.Year:\n value = differenceInYears(remain, start);\n remain = subYears(remain, value);\n break;\n case DurationPartType.Quarter:\n value = differenceInQuarters(remain, start);\n remain = subQuarters(remain, value);\n break;\n case DurationPartType.Month:\n value = differenceInMonths(remain, start);\n remain = subMonths(remain, value);\n break;\n case DurationPartType.Week:\n value = differenceInWeeks(remain, start);\n remain = subWeeks(remain, value);\n break;\n case DurationPartType.Day:\n value = differenceInDays(remain, start);\n remain = subDays(remain, value);\n break;\n case DurationPartType.Hour:\n value = differenceInHours(remain, start);\n remain = subHours(remain, value);\n break;\n case DurationPartType.Minute:\n value = differenceInMinutes(remain, start);\n remain = subMinutes(remain, value);\n break;\n case DurationPartType.Second:\n value = differenceInSeconds(remain, start);\n remain = subSeconds(remain, value);\n break;\n case DurationPartType.Millisecond:\n value = differenceInMilliseconds(remain, start);\n remain = subMilliseconds(remain, value);\n break;\n default:\n throw new Error(`Unknown duration part: ${part}`);\n }\n result[part] = value;\n }\n return result;\n}\nexport function duration(start, end, parts) {\n const obj = durationObject(start, end, parts);\n return parts.map(part => obj[part]);\n}\n//# sourceMappingURL=duration.js.map","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { isNumber } from 'remeda';\nimport { DurationPartType } from '../types/duration.js';\nconst ISO8601DurationMarker = {\n [DurationPartType.Year]: 'Y',\n [DurationPartType.Month]: 'M',\n [DurationPartType.Week]: 'W',\n [DurationPartType.Day]: 'D',\n [DurationPartType.Hour]: 'H',\n [DurationPartType.Minute]: 'M',\n [DurationPartType.Second]: 'S',\n};\nconst DateParts = [\n DurationPartType.Year,\n DurationPartType.Month,\n DurationPartType.Week,\n DurationPartType.Day,\n];\nconst TimeParts = [\n DurationPartType.Hour,\n DurationPartType.Minute,\n DurationPartType.Second,\n];\nexport function iso8601Duration(duration) {\n const datePart = DateParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n const timePart = TimeParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n return `P${datePart.join('')}T${timePart.join('')}`;\n}\n//# sourceMappingURL=iso8601-duration.js.map","import { css } from 'lit';\nexport const timeredCounterDatetimeStyles = css `\n ::part(part-suffix) {\n font-size: 0.4em;\n line-height: 1;\n }\n`;\n//# sourceMappingURL=timered-counter-datetime-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isArray, isDate, isNullish, isString, map } from 'remeda';\nimport { isValid, toDate, isBefore } from 'date-fns';\nimport { TimeredCounter } from './timered-counter.js';\nimport { DurationPartMillisecond, DurationPartType } from './types/duration.js';\nimport { getLocalizedDateTimeFields } from './utils/localized-date-time-fields.js';\nimport { duration, durationObject } from './utils/duration.js';\nimport { iso8601Duration } from './utils/iso8601-duration.js';\nimport { timeredCounterDatetimeStyles } from './styles/timered-counter-datetime-styles.js';\nimport { parseJsonString } from './utils/parse-json-string.js';\n/**\n * 根据最小精度对 from 进行优化. 避免频繁更新.\n *\n * 1. from 先会被减小到 minPrecisionMs 的整数倍.\n * 2. 如果 from 和 to 的差值不是 minPrecisionMs 的整数倍, 则再加上/减去一个 minPrecisionMs 的值. 加上或减去取决于 from 和 to 的谁更大.\n * 这相当于将 from 中小于 minPrecisionMs 的值舍入到 minPrecisionMs 的整数倍.\n * 3. 加上 to 余 minPrecisionMs 的值, 保证 from 与 to 的差值是 minPrecisionMs 的整数倍.\n */\nfunction optimizeFrom(from, to, minPrecision) {\n const minPrecisionMs = DurationPartMillisecond[minPrecision];\n const fromTS = from.getTime();\n const toTS = to.getTime();\n const base = fromTS - (fromTS % minPrecisionMs);\n const offset = Math.abs(toTS - fromTS) % minPrecisionMs;\n return (base +\n (offset > 0 ? (fromTS < toTS ? -1 : 1) * minPrecisionMs : 0) +\n // 加上 deadlineDate 的余数, 消除精度误差.\n (toTS % minPrecisionMs));\n}\nfunction toDurationInMilliseconds(value, minPrecision) {\n if (isString(value))\n value = parseJsonString(value);\n if (!isArray(value))\n value = [value, value];\n const result = [\n isDate(value[0]) ? value[0] : toDate(value[0]),\n isDate(value[1]) ? value[1] : toDate(value[1]),\n ];\n if (!isValid(result[0]) || !isValid(result[1])) {\n throw new Error(`value ${value[0]} or ${value[1]} is not a valid date.`);\n }\n const durationInMilliseconds = Math.abs(result[1].getTime() - optimizeFrom(result[0], result[1], minPrecision));\n return {\n durationInMilliseconds,\n from: result[0],\n to: result[1],\n };\n}\nlet TimeredCounterDatetimeDuration = class TimeredCounterDatetimeDuration extends TimeredCounter {\n constructor() {\n super(...arguments);\n this.__precision = [DurationPartType.Second, DurationPartType.Day];\n this.__initialValuePlain = null;\n this.__partsOptions = null;\n this.__from = new Date();\n this.__to = new Date();\n this.__minPrecision = DurationPartType.Second;\n this.__maxPrecision = DurationPartType.Day;\n this.__availableDurationParts = [];\n this.__dateTimeFieldLabels = {};\n }\n /**\n * 计数器显示的精度.\n * 1. 当为单个值时, 表示最小精度.\n * 2. 当为数组时, 第一个值表示最小精度, 第二个值表示最大精度.\n *\n * @default [DurationPartType.Second, DurationPartType.Day]\n *\n * @example DurationPartType.Second 显示从年份到秒数的所有精度.\n * @example [DurationPartType.Second, DurationPartType.Day] 显示从天数到秒数的所有精度.\n * @example [DurationPartType.Millisecond, DurationPartType.Year] 显示从年份到毫秒的所有精度.\n */\n get precision() {\n return this.__precision;\n }\n set precision(value) {\n if (isString(value))\n value = parseJsonString(value);\n this.__precision = value;\n /**\n * `precision` 相关属性的更新需要立即更新, 以便于在 `value`, `initialValue` 等属性的 setter 中使用.\n */\n this.__minPrecision = isArray(this.__precision)\n ? this.__precision[0]\n : this.__precision;\n this.__maxPrecision = isArray(this.__precision)\n ? this.__precision[1]\n : this.__precision;\n this.__availableDurationParts = Object.values(DurationPartType)\n .reverse()\n .map(type => {\n const minPrecisionBreakpoint = DurationPartMillisecond[this.__minPrecision];\n const maxPrecisionBreakpoint = DurationPartMillisecond[this.__maxPrecision];\n const partMilliseconds = DurationPartMillisecond[type];\n return {\n type,\n available: partMilliseconds >= minPrecisionBreakpoint &&\n partMilliseconds <= maxPrecisionBreakpoint,\n };\n })\n .filter(part => part.available);\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持 Date 类型.\n */\n set value(value) {\n const { from, to, durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n this.__from = from;\n this.__to = to;\n super.value = durationInMilliseconds;\n }\n get initialValue() {\n return super.initialValue;\n }\n /**\n * 同 value\n */\n set initialValue(value) {\n this.__initialValuePlain = value;\n const { durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n super.initialValue = durationInMilliseconds;\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n minPlaces: [2, undefined],\n ...this.__partsOptions,\n };\n }\n sampleSplit(samples) {\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n const tempParts = availableDurationPartTypes.map(() => []);\n for (const n of samples) {\n const num = this.numberAdapter.toNumber(n);\n /**\n * 计算并保存每个在 {@link precision} 范围内的时间部分的值\n */\n const availablePartValues = duration(new Date(Math.min(num, 0)), new Date(Math.max(num, 0)), availableDurationPartTypes);\n availablePartValues.forEach((value, i) => tempParts[i].push(value));\n }\n return tempParts;\n }\n generateAriaLabel() {\n return iso8601Duration(durationObject(isBefore(this.__from, this.__to) ? this.__from : this.__to, isBefore(this.__from, this.__to) ? this.__to : this.__from, map(this.__availableDurationParts, part => part.type)));\n }\n connectedCallback() {\n this.role = 'timer';\n /**\n * TimeredCounterDatetimeDuration 将 `minPlaces` 默认设置为 `[2]`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n this.initialValue = this.__initialValuePlain;\n /**\n * 类似上方的 partsOptions, precision 也需要在初始化时手动触发 setter. 以此确保 __minPrecision, __maxPrecision, __availableDurationParts 有值.\n */\n this.precision = this.__precision;\n super.connectedCallback();\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('locale')) {\n this.__dateTimeFieldLabels = getLocalizedDateTimeFields(this.localeInstance);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n ><slot name=\"prefix\" slot=\"prefix\"></slot\n ><slot name=\"suffix\" slot=\"suffix\"></slot>${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<span slot=${`part-suffix-${partIndex}`} class=\"duration-unit\"\n >${this.__dateTimeFieldLabels[availableDurationPartTypes[partIndex]]}</span\n >`)}\n </timered-counter-roller>\n `;\n }\n};\nTimeredCounterDatetimeDuration.styles = [...TimeredCounter.styles, timeredCounterDatetimeStyles];\n__decorate([\n property({\n reflect: true,\n converter: value => {\n if (isNullish(value))\n return value;\n return parseJsonString(value);\n },\n })\n], TimeredCounterDatetimeDuration.prototype, \"precision\", null);\nTimeredCounterDatetimeDuration = __decorate([\n customElement('timered-counter-datetime-duration')\n], TimeredCounterDatetimeDuration);\nexport { TimeredCounterDatetimeDuration };\n//# sourceMappingURL=timered-counter-datetime-duration.js.map","// export {\n// easeIn,\n// easeOut,\n// easeInOut,\n// anticipate,\n// steps,\n// cubicBezier,\n// } from \"motion\";\nexport const linear = (x) => x;\n//# sourceMappingURL=easing-functions.js.map"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","value","get","SuppressedError","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$6","constructor","this","_$cssResult$","Error","cssText","styleSheet","replaceSync","set","toString","reduce","n","cssRules","is","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","enumerable","getPropertyOptions","hasOwnProperty","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","x","_$litType$","strings","values","T","for","E","A","C","createTreeWalker","N","parts","lastIndex","exec","test","startsWith","V","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M$1","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","M","_$AP","remove","setConnected","k$1","element","fill","j","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","Z","litHtmlPolyfillSupport","litHtmlVersions","r$5","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","customElements","define","init","querySelector","i$2","_$Ct","_$Ci","_$AQ","dt","ut","w","done","hasNext","lazy","lazyArgs","assign","isSingle","single","items","B","at","entries","hasMany","next","isNaN","Date","splice","getTime","extractPartOption","option","getterOptions","groupOption","isFunction","extractGroupOption","result","extractPartDigitOption","extractedOption","digits","partOption","extractPartDigitCellOption","digitData","partDigitOption","mergeGroupOption","source","merge","mergePartOption","from","concat","parseInt","mergePartDigitOption","CounterStylesMixin","superClass","CounterStylesMixinClass","cellStyles","cachedCellStyles","digitStyles","cachedDigitStyles","partStyles","cachedPartStyles","color","extractCellStyles","preprocessData","partPreprocessDataList","direction","oldValue","mergePartDigitCellOption","cellStylesDynamic","isDeepEqual","extractDigitStyles","digitStylesDynamic","extractPartStyles","partStylesDynamic","property","zip","matrix","valueof","min","undefined","transpose","row","rollerPartTest","newDirection","oldDirection","newDigits","oldDigits","animate","cancelPrevAnimation","earlyReturn","parseJsonString","error","preprocessPartsOptions","digitToChar","char","fromCodePoint","isObjectType","CounterPartsMixin","_a","_CounterPartsMixinClass___partsOptions","CounterPartsMixinClass","DEFAULT_PARTS_OPTIONS","oldParts","partsOptions","old","__classPrivateFieldSet","sampling","to","na","count","_count","interpolateFunc","isInteger","round","mul","sub","create","interpolateRound","interpolateNumber","eq","percent","div","max","transitionDigit","numberAdapter","sampleCount","sampleSplit","samples","sampleToString","changedProperties","processPartData","newData","oldData","results","globalIndex","newPart","oldPart","partDataResults","newDigit","oldDigit","find","place","partIndex","digitIndex","preprocessPartData","decimalSeparator","minPlaces","fillChar","_sampleToString","tempParts","directionValue","gt","partData","tailNumber","minIntegerPlaces","minDecimalPlaces","numberParts","integerPlaces","stringAdapter","stringToChars","decimalPlaces","integer","decimal","integerChars","decimalChars","filledIntegerPlaces","filledDecimalPlaces","filledChars","digitList","array","filter","digit","digitArray","BuildInNumberAdapter","num","isFinite","compare","gte","lt","lte","isNegative","isPositive","isZero","abs","ceil","floor","toNumber","BuildInStringAdapter","TimeredCounterAdapter","setNumberAdapter","adapterOrType","adapter","isString","keywords","adapterFactory","AVAILABLE_NUMBER_ADAPTERS","includes","NUMBER_ADAPTER","setStringAdapter","AVAILABLE_STRING_ADAPTERS","STRING_ADAPTER","registerNumberAdapter","keyword","registerStringAdapter","registryAdapter","register","locales","segmenter","Intl","Segmenter","granularity","segment","VALUE_CONVERTER","isNullish","CounterBaseMixin","CounterBaseMixinClass","__value","trim","__oldValue","initialValue","__initialValue","locale","__locale","localeInstance","Locale","args","isNonNullish","timeredCounterStyles","css","CounterAnimationMixin","CounterAnimationMixinClass","animationOptions","cachedAnimationOptions","keyframes","cachedKeyframes","extractAnimationOptions","animationOptionsDynamic","extractKeyframes","keyframesDynamic","replace","style","ft","removeProperty","setProperty","join","st","nt","classList","rollerStyles","rollerDigitStyles","noop","any","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","c4","PI","sin","easeOutElastic","easeInOutElastic","c5","easeOutBounce","n1","d1","easeInBounce","easeInOutBounce","RollerDigitAnimationEvent","Event","TimeredCounterRollerDigit","textStyle","cellStyle","digitWidth","resizeObserver","ResizeObserver","clonedRollDigitList","offsetWidth","_changedProperties","observe","disconnect","intersection","shouldAnimate","startAnimation","then","shadowCellStyle","omit","html","styleMap","width","repeat","classMap","animation","cancel","rollList","__emitAnimationStart","anmOptions","duration","iterations","easing","isEmpty","up","transform","down","EasingFunctions","func","range","clearAnimation","__emitAnimationEnd","console","dispatchEvent","query","customElement","RollerAnimationEvent","TimeredCounterRoller","parentContainerRect","__partDigitsColorStyles","digitAnimateEndCount","digitAnimatedCount","part","digitInfo","__handleDigitAnimationEnd","__generatePartDigitsColorStyles","containerRect","prefixContainer","suffixContainer","partDigitElements","querySelectorAll","partId","dataset","digitId","isNumber","CSS","supports","backgroundImage","backgroundClip","backgroundSize","offsetHeight","backgroundPositionX","offsetLeft","backgroundPositionY","offsetTop","backgroundRepeat","warn","CounterAiraMixin","CounterAiraMixinClass","ariaLabel","ariaLive","generateAriaLabel","label","TimeredCounterAnimationEvent","exports","TimeredCounter","partsContainerRect","partsContainer","getBoundingClientRect","DOMRect","dispatchTimeredCounterAnimationStart","dispatchTimeredCounterAnimationEnd","timeredCounterNumberStyles","TimeredCounterNumber","localeNumber","localeNumberInstance","NumberFormat","isBoolean","localDecimalSeparator","localeGroupingSeparator","format","formatToParts","groupingSeparator","oldPartsOptions","timeredCounterStringStyles","anyBase","sa","srcAlphabet","dstAlphabet","number","divide","newLen","numberMap","fromBase","toBase","alphabet","isValid","convert","REPLACED_CHARS","TimeredCounterString","__alphabet","__initialValueString","__valueString","__oldValueString","__partsOptions","__decimalToAnyBase","__anyBaseToDecimal","__updateAlphabet","allChars","charSet","sort","millisecondsInHour","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","NaN","setDate","getDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getMonth","setFullYear","getFullYear","addMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","normalizeDates","dates","normalize","bind","startOfDay","setHours","compareAsc","dateLeft","dateRight","diff","differenceInDays","laterDate","earlierDate","laterDate_","earlierDate_","sign","compareLocalAsc","difference","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","differenceInCalendarDays","getRoundingMethod","method","trunc","differenceInHours","roundingMethod","differenceInMilliseconds","differenceInMinutes","isLastDayOfMonth","endOfDay","month","endOfMonth","differenceInMonths","workingLaterDate","differenceInCalendarMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","differenceInCalendarYears","isBefore","dateToCompare","subDays","subHours","addHours","subMilliseconds","subMinutes","setTime","addMinutes","subQuarters","addQuarters","subSeconds","addSeconds","subWeeks","addWeeks","subYears","addYears","DurationPartType","DurationPartMillisecond","Millisecond","Second","Minute","Hour","Day","Week","Month","Quarter","Year","DurationPartMillisecondToType","DateTimeFields","durationObject","start","end","remain","obj","ISO8601DurationMarker","DateParts","TimeParts","timeredCounterDatetimeStyles","toDurationInMilliseconds","minPrecision","isDate","durationInMilliseconds","minPrecisionMs","fromTS","toTS","optimizeFrom","TimeredCounterDatetimeDuration","__precision","__initialValuePlain","__from","__to","__minPrecision","__maxPrecision","__availableDurationParts","__dateTimeFieldLabels","precision","minPrecisionBreakpoint","maxPrecisionBreakpoint","partMilliseconds","available","availableDurationPartTypes","datePart","timePart","iso8601Duration","role","displayNames","DisplayNames","acc","field","of","getLocalizedDateTimeFields"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,37,41,48,51,52,58,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,112]}
1
+ {"version":3,"file":"timered-counter.global.js","sources":["../node_modules/tslib/tslib.es6.mjs","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directive-helpers.js","../node_modules/lit-html/directives/repeat.js","../node_modules/remeda/dist/chunk-ANXBDSUI.js","../node_modules/remeda/dist/chunk-7BKSRZNG.js","../node_modules/remeda/dist/chunk-RAAYCPUM.js","../node_modules/remeda/dist/chunk-K26VP6CL.js","../node_modules/remeda/dist/chunk-ENXBNJ36.js","../node_modules/remeda/dist/chunk-PJOV2RDB.js","../node_modules/remeda/dist/chunk-RLZQTLGN.js","../node_modules/remeda/dist/chunk-K5HTIQFL.js","../node_modules/remeda/dist/chunk-COZRMC32.js","../node_modules/remeda/dist/chunk-6GTAPB47.js","../node_modules/remeda/dist/chunk-SFZGYJFI.js","../node_modules/remeda/dist/chunk-VCYTMP4D.js","../node_modules/remeda/dist/chunk-JK3VNB42.js","../node_modules/remeda/dist/chunk-BO3LQZNF.js","../node_modules/remeda/dist/chunk-7QX4DO53.js","../node_modules/remeda/dist/chunk-VMV5GVZ5.js","../node_modules/remeda/dist/chunk-VFKB5IBK.js","../node_modules/remeda/dist/chunk-73TZMTEA.js","../node_modules/remeda/dist/chunk-IEE7G5JG.js","src/utils/extract-group-option.js","../node_modules/remeda/dist/chunk-ENOHV5LT.js","src/mixins/counter-styles.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/min.js","src/utils/preprocess-part-data.js","src/utils/parse-json-string.js","src/mixins/counter-parts.js","../node_modules/remeda/dist/chunk-NMC53JVB.js","src/utils/transition-digit.js","src/number-adapter/build-in-number.js","src/string-adapter/build-in-string.js","src/timered-counter-adapter.js","src/string-adapter/build-in-intl-segmenter.js","src/mixins/counter-base.js","../node_modules/remeda/dist/chunk-GK5I7C4J.js","src/styles/timered-counter-styles.js","src/mixins/counter-animation.js","../node_modules/lit-html/directives/style-map.js","../node_modules/lit-html/directives/class-map.js","src/transitions/roller/styles.js","src/easing/cubic-bezier.js","src/easing/penner-easing-functions.js","src/transitions/roller/roller-digit.js","src/transitions/roller/roller.js","../node_modules/remeda/dist/chunk-IUVYQYF2.js","src/mixins/counter-aira.js","src/timered-counter.js","src/styles/timered-counter-number-styles.js","src/timered-counter-number.js","src/styles/timered-counter-string-styles.js","src/utils/any-base.js","src/timered-counter-string.js","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/compareAsc.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/differenceInDays.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/_lib/getRoundingMethod.js","../node_modules/date-fns/differenceInHours.js","../node_modules/date-fns/differenceInMilliseconds.js","../node_modules/date-fns/differenceInMinutes.js","../node_modules/date-fns/isLastDayOfMonth.js","../node_modules/date-fns/endOfDay.js","../node_modules/date-fns/endOfMonth.js","../node_modules/date-fns/differenceInMonths.js","../node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/date-fns/differenceInQuarters.js","../node_modules/date-fns/differenceInSeconds.js","../node_modules/date-fns/differenceInWeeks.js","../node_modules/date-fns/differenceInYears.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/subHours.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/subMilliseconds.js","../node_modules/date-fns/subMinutes.js","../node_modules/date-fns/addMinutes.js","../node_modules/date-fns/subQuarters.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/subSeconds.js","../node_modules/date-fns/addSeconds.js","../node_modules/date-fns/subWeeks.js","../node_modules/date-fns/addWeeks.js","../node_modules/date-fns/subYears.js","../node_modules/date-fns/addYears.js","src/types/duration.js","src/utils/localized-date-time-fields.js","src/utils/duration.js","../node_modules/date-fns/subMonths.js","src/utils/iso8601-duration.js","src/styles/timered-counter-datetime-styles.js","src/timered-counter-datetime-duration.js","src/easing/easing-functions.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","var e={done:!0,hasNext:!1},s={done:!1,hasNext:!1},a=()=>e,o=t=>({hasNext:!0,next:t,done:!1});export{s as a,a as b,o as c};\n","import{a as s}from\"./chunk-ANXBDSUI.js\";function x(t,...o){let n=t,u=o.map(e=>\"lazy\"in e?f(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(A(i,a,r))break;let{isSingle:y}=r.at(-1);n=y?a[0]:a,p+=r.length}return n}function A(t,o,n){if(n.length===0)return o.push(t),!1;let u=t,p=s,e=!1;for(let[r,a]of n.entries()){let{index:y,items:i}=a;if(i.push(u),p=a(u,y,i),a.index+=1,p.hasNext){if(p.hasMany??!1){for(let l of p.next)if(A(l,o,n.slice(r+1)))return!0;return e}u=p.next}if(!p.hasNext)break;p.done&&(e=!0)}return p.hasNext&&o.push(u),e}function f(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??!1,index:0,items:[]})}function B(t){return typeof t==\"string\"||typeof t==\"object\"&&t!==null&&Symbol.iterator in t}export{x as a};\n","import{a as t}from\"./chunk-K26VP6CL.js\";function u(r,n,a){let o=r.length-n.length;if(o===0)return r(...n);if(o===1)return t(r,n,a);throw new Error(\"Wrong number of arguments\")}export{u as a};\n","function u(t,n,a){let o=r=>t(r,...n);return a===void 0?o:Object.assign(o,{lazy:a,lazyArgs:n})}export{u as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function i(...e){return n(r,e)}var r=(e,t)=>e.length>=t;export{i as a};\n","import{a as u}from\"./chunk-RAAYCPUM.js\";function a(...r){return u(o,r)}function o(r,t){let e=[];for(let n=r;n<t;n++)e.push(n);return e}export{a};\n","import{a as n}from\"./chunk-ENXBNJ36.js\";import{a as i}from\"./chunk-RAAYCPUM.js\";function y(...t){return i(f,t)}function f(t,e){if(!n(e,1))return{...t};if(!n(e,2)){let{[e[0]]:r,...m}=t;return m}let o={...t};for(let r of e)delete o[r];return o}export{y as a};\n","import{a as r}from\"./chunk-RAAYCPUM.js\";function t(...e){return r(u,e)}var u=(e,o)=>({...e,...o});export{t as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function m(...a){return n(o,a,p)}var o=(a,e)=>a.map(e),p=a=>(e,t,r)=>({done:!1,hasNext:!0,next:a(e,t,r)});export{m as a};\n","function e(r){return typeof r==\"number\"&&!Number.isNaN(r)}export{e as a};\n","function t(r){return typeof r==\"string\"}export{t as a};\n","function n(e){return e===void 0?!0:typeof e==\"string\"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{n as a};\n","function n(e){return e==null}export{n as a};\n","function o(r){return Array.isArray(r)}export{o as a};\n","function e(o){return typeof o==\"boolean\"}export{e as a};\n","function t(n){return n instanceof Date}export{t as a};\n","import{a as i}from\"./chunk-RAAYCPUM.js\";function k(...n){return i(u,n)}function u(n,e){if(n===e||Object.is(n,e))return!0;if(typeof n!=\"object\"||typeof e!=\"object\"||n===null||e===null||Object.getPrototypeOf(n)!==Object.getPrototypeOf(e))return!1;if(Array.isArray(n))return l(n,e);if(n instanceof Map)return a(n,e);if(n instanceof Set)return c(n,e);if(n instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp)return n.toString()===e.toString();if(Object.keys(n).length!==Object.keys(e).length)return!1;for(let[r,t]of Object.entries(n))if(!(r in e)||!u(t,e[r]))return!1;return!0}function l(n,e){if(n.length!==e.length)return!1;for(let[r,t]of n.entries())if(!u(t,e[r]))return!1;return!0}function a(n,e){if(n.size!==e.size)return!1;for(let[r,t]of n.entries())if(!e.has(r)||!u(t,e.get(r)))return!1;return!0}function c(n,e){if(n.size!==e.size)return!1;let r=[...e];for(let t of n){let o=!1;for(let[s,f]of r.entries())if(u(t,f)){o=!0,r.splice(s,1);break}if(!o)return!1}return!0}export{k as a};\n","import{a as i}from\"./chunk-IEE7G5JG.js\";import{a as o,b as a}from\"./chunk-ANXBDSUI.js\";function f(...e){return i(y,e)}function y(e){if(e.length===0)return a;let n=new Map;for(let r of e)n.set(r,(n.get(r)??0)+1);return r=>{let t=n.get(r);return t===void 0||t===0?o:(t===1?n.delete(r):n.set(r,t-1),{hasNext:!0,next:r,done:n.size===0})}}export{f as a};\n","import{a}from\"./chunk-7BKSRZNG.js\";function f(t,i){let o=i.length-t.length;if(o===1){let[n,...r]=i;return a(n,{lazy:t,lazyArgs:r})}if(o===0){let n={lazy:t,lazyArgs:i};return Object.assign(e=>a(e,n),n)}throw new Error(\"Wrong number of arguments\")}export{f as a};\n","import { isArray, isFunction, merge } from 'remeda';\nexport function extractGroupOption(option, getterOptions) {\n return (isFunction(option)\n ? option(getterOptions)\n : option);\n}\nexport function extractPartOption(option, getterOptions) {\n const groupOption = extractGroupOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const value = isArray(groupOption) ? groupOption[i] : groupOption;\n result.push(value);\n }\n return result;\n}\nexport function extractPartDigitOption(option, getterOptions) {\n const extractedOption = extractPartOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const value = isArray(partOption) ? partOption[j] : partOption;\n result[i].push(value);\n }\n }\n return result;\n}\nexport function extractPartDigitCellOption(option, getterOptions) {\n const extractedOption = extractPartDigitOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const { data: digitData } = digits[j];\n const partDigitOption = partOption[j];\n result[i].push([]);\n for (let k = 0; k < digitData.length; k += 1) {\n const value = isArray(partDigitOption)\n ? partDigitOption[k]\n : partDigitOption;\n result[i][j].push(value);\n }\n }\n }\n return result;\n}\nexport function mergeGroupOption(data, source) {\n return merge(data ?? {}, source ?? {});\n}\nexport function mergePartOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergeGroupOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitCellOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartDigitOption(data[index], source[index]);\n }\n return data;\n}\n//# sourceMappingURL=extract-group-option.js.map","function t(n){return typeof n==\"function\"}export{t as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitCellOption, extractPartDigitOption, extractPartOption, mergePartDigitCellOption, mergePartDigitOption, mergePartOption, } from '../utils/extract-group-option.js';\nexport const CounterStylesMixin = (superClass) => {\n class CounterStylesMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 对 `cell` 部分的样式进行设置. 传入的对象将被直接应用到 `cell` 的 `style` 上.\n * 你还可以使用 `cellStylesDynamic` 来动态设置样式.\n */\n this.cellStyles = {};\n this.cachedCellStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `digit` 部分的样式进行设置.\n * 你还可以使用 `digitStylesDynamic` 来动态设置样式.\n */\n this.digitStyles = {};\n this.cachedDigitStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `part` 部分的样式进行设置.\n * 你还可以使用 `partStylesDynamic` 来动态设置样式.\n */\n this.partStyles = {};\n this.cachedPartStyles = [];\n /**\n * 文本颜色, 可使用 CSS 属性 `color` 和 `background-image` 的值.\n *\n * @default 继承自父元素.\n *\n * @example \"red\" 红色\n * @example \"transparent\" 透明\n * @example \"linear-gradient(90deg, red, blue)\" 红蓝渐变\n * @example \"url('https://example.com/image.png')\" 图片背景\n */\n this.color = 'inherit';\n }\n extractCellStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitCellOption(extractPartDigitCellOption(this.cellStyles ?? {}, getterOptions), extractPartDigitCellOption(this.cellStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedCellStyles, result)) {\n this.cachedCellStyles = result;\n }\n return this.cachedCellStyles;\n }\n extractDigitStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.digitStyles ?? {}, getterOptions), extractPartDigitOption(this.digitStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedDigitStyles, result)) {\n this.cachedDigitStyles = result;\n }\n return this.cachedDigitStyles;\n }\n extractPartStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartOption(extractPartOption(this.partStyles ?? {}, getterOptions), extractPartOption(this.partStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedPartStyles, result)) {\n this.cachedPartStyles = result;\n }\n return this.cachedPartStyles;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'cell-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"cellStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'digit-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"digitStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'part-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"partStyles\", void 0);\n __decorate([\n property({ type: String, reflect: true })\n ], CounterStylesMixinClass.prototype, \"color\", void 0);\n return CounterStylesMixinClass;\n};\n//# sourceMappingURL=counter-styles.js.map","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import { isDeepEqual } from 'remeda';\n/**\n * 以下代码块用于判断是否需要启动滚动动画.\n * 下列情况将跳过滚动动画:\n * 1. 当新的滚动数据(即 digits)长度为 1 时.\n * 2. 当滚动方向未改变时:\n * 1. 当滚动数据头尾相同时.\n * 2. 当前滚动数据与上一次全等时.\n */\nfunction rollerPartTest(direction, digits) {\n const [newDirection, oldDirection] = direction;\n const [newDigits, oldDigits] = digits;\n const result = {\n animate: true,\n cancelPrevAnimation: false,\n };\n let earlyReturn = '';\n if (newDigits.data.length === 1) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'only one digit';\n }\n if (newDirection !== oldDirection)\n return result;\n if (newDigits.data[0] === newDigits.data[newDigits.data.length - 1]) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'same head and tail';\n }\n if (isDeepEqual(newDigits, oldDigits)) {\n result.animate = false;\n earlyReturn = 'same digits';\n }\n if (earlyReturn)\n result.earlyReturn = earlyReturn;\n return result;\n}\nexport function preprocessPartData(newDirection, newData, oldDirection, oldData) {\n const results = [];\n let globalIndex = 0;\n for (let i = 0; i < newData.length; i++) {\n const newPart = newData[i];\n const oldPart = oldData?.[i];\n const partDataResults = [];\n for (let j = 0; j < newPart.digits.length; j++) {\n const newDigit = newPart.digits[j];\n const oldDigit = oldPart?.digits.find(d => d.place === newDigit.place);\n partDataResults.push({\n ...rollerPartTest([newDirection, oldDirection], [newDigit, oldDigit]),\n index: globalIndex++,\n partIndex: i,\n digitIndex: j,\n });\n }\n results.push(partDataResults);\n }\n return results;\n}\n//# sourceMappingURL=preprocess-part-data.js.map","export function parseJsonString(value) {\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n}\n//# sourceMappingURL=parse-json-string.js.map","import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from \"tslib\";\nimport { zip } from 'd3-array';\nimport { property } from 'lit/decorators.js';\nimport { isArray, isObjectType } from 'remeda';\nimport { transitionDigit } from '../utils/transition-digit.js';\nimport { preprocessPartData, } from '../utils/preprocess-part-data.js';\nimport { parseJsonString } from '../utils/parse-json-string.js';\nfunction toChar(value) {\n return String.fromCodePoint(value + 48);\n}\nfunction preprocessPartsOptions(options) {\n const digitToChar = {};\n if (isArray(options.digitToChar)) {\n options.digitToChar.forEach((char, index) => {\n digitToChar[toChar(index)] = char;\n });\n }\n else if (isObjectType(options.digitToChar)) {\n Object.entries(options.digitToChar).forEach(([key, value]) => {\n digitToChar[key] = value;\n });\n }\n return {\n ...options,\n digitToChar,\n };\n}\nexport const CounterPartsMixin = (superClass) => {\n var _a, _CounterPartsMixinClass___partsOptions;\n class CounterPartsMixinClass extends superClass {\n constructor() {\n super(...arguments);\n _CounterPartsMixinClass___partsOptions.set(this, {\n ..._a.DEFAULT_PARTS_OPTIONS,\n });\n // partsOptions: InnerPartsOptions =\n // CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS;\n this.parts = [];\n this.oldParts = [];\n this.partPreprocessDataList = [];\n }\n /**\n * 这是 `usePartData` 的配置项. `usePartData` 被用于从数值的变化中生成用于滚动的数据.\n * 这里不会有太多解释, 因为它是一个底层的配置项. 你可以查看 `CounterPartsMixinClass` 的源码了解更多信息.\n */\n get partsOptions() {\n return __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n }\n set partsOptions(value) {\n const old = __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n __classPrivateFieldSet(this, _CounterPartsMixinClass___partsOptions, preprocessPartsOptions({\n ..._a.DEFAULT_PARTS_OPTIONS,\n ...value,\n }), \"f\");\n this.requestUpdate('partsOptions', old);\n }\n sampling(from, to) {\n return transitionDigit(this.numberAdapter, this.numberAdapter.max(from, to), this.numberAdapter.min(from, to), this.partsOptions.sampleCount);\n }\n // eslint-disable-next-line class-methods-use-this\n sampleSplit(samples) {\n return [samples.slice()];\n }\n sampleToString(value) {\n return this.numberAdapter.toString(value);\n }\n /**\n * 判断是否需要重新生成 parts 数据.\n *\n * {@link processPartData} 依赖 {@link partsOptions} 和 {@link value} 生成数据. 因此, 仅当依赖项变化时, 需要重新生成数据.\n *\n * @param changedProperties\n * @protected\n */\n // eslint-disable-next-line class-methods-use-this\n shouldRebuildParts(changedProperties) {\n return (changedProperties.has('value') || changedProperties.has('partsOptions'));\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value')) {\n this.oldParts = this.parts;\n }\n if (this.shouldRebuildParts(changedProperties)) {\n this.parts = this.processPartData();\n }\n if (changedProperties.has('value')) {\n this.partPreprocessDataList = preprocessPartData(this.direction, this.parts, this.oldDirection, this.oldParts);\n }\n /**\n * `value` 没变但 `direction` 变化时, 也要重新生成 `partPreprocessDataList`.\n */\n // todo test events 和 animationOptions 冲突\n // if (\n // changedProperties.has('value') ||\n // changedProperties.has('direction')\n // ) {\n // }\n }\n /**\n * process:\n * 1. 采样\n * 2. 转换\n * 3. 构造\n */\n processPartData() {\n const { decimalSeparator, digitToChar, minPlaces, fillChar, type } = this.partsOptions;\n const from = this.value;\n const to = this.oldValue;\n let _sampleToString = value => this.sampleToString(value).split(decimalSeparator);\n if (type === 'string') {\n _sampleToString = value => [this.sampleToString(value), ''];\n }\n const result = [];\n /**\n * 对 {@link from} 到 {@link to} 的范围采样.\n */\n const tempParts = this.sampleSplit(this.sampling(from, to));\n /**\n * 将时间部分的数字转换为用于滚动的字符串数组\n *\n * headNumber: 最先显示的数字. 向下滚动时, 为滚动列表的最后一个数字, 向上滚动时相反.\n * tailNumber: 最后显示的数字. 向下滚动时, 为滚动列表的第一个数字, 向上滚动时相反.\n */\n {\n const directionValue = this.numberAdapter.gt(from, to) ? 'down' : 'up';\n for (let i = 0; i < tempParts.length; i++) {\n const partData = tempParts[i];\n // const headNumber =\n // partData[directionValue === \"down\" ? partData.length - 1 : 0];\n const tailNumber = partData[directionValue === 'down' ? 0 : partData.length - 1];\n const [minIntegerPlaces = 1, minDecimalPlaces = 0] = minPlaces;\n const numberParts = _sampleToString(tailNumber);\n const integerPlaces = Math.max(\n // numberParts[0].length,\n this.stringAdapter.stringToChars(numberParts[0]).length, minIntegerPlaces);\n const decimalPlaces = Math.max(\n // numberParts[1]?.length ?? 0,\n this.stringAdapter.stringToChars(numberParts[1] ?? '').length, minDecimalPlaces);\n /**\n * 使用 zip 将二维矩阵, 旋转90度\n */\n const data = zip(...partData\n /**\n * 保证位数一致, 向前补零\n */\n .map(digitData => {\n const [integer = '', decimal = ''] = _sampleToString(digitData);\n const integerChars = this.stringAdapter.stringToChars(integer);\n const decimalChars = this.stringAdapter.stringToChars(decimal);\n const filledIntegerPlaces = Math.max(integerPlaces - integerChars.length, 0);\n const filledDecimalPlaces = Math.max(decimalPlaces - decimalChars.length, 0);\n let filledChars = [].concat(new Array(filledIntegerPlaces).fill(fillChar), integerChars);\n if (decimalPlaces > 0) {\n filledChars = filledChars.concat([decimalSeparator], decimalChars, new Array(filledDecimalPlaces).fill(fillChar));\n }\n return filledChars;\n }))\n /**\n * 删除连续的重复项\n */\n .map((digitList, index, array) => ({\n data: digitList\n .filter((digit, digitIndex, digitArray) => digitIndex === 0 || digit !== digitArray[digitIndex - 1])\n .map(digit => digitToChar[digit] ?? digit),\n place: array.length - index,\n }));\n result.push({\n digits: data,\n });\n }\n }\n return result;\n }\n }\n _a = CounterPartsMixinClass, _CounterPartsMixinClass___partsOptions = new WeakMap();\n CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS = {\n sampleCount: 16,\n decimalSeparator: '.',\n fillChar: '0',\n minPlaces: [1, 0],\n digitToChar: {},\n type: 'number',\n };\n __decorate([\n property({\n type: Object,\n attribute: 'parts-options',\n converter: value => parseJsonString(value ?? '') ?? {},\n noAccessor: true,\n })\n ], CounterPartsMixinClass.prototype, \"partsOptions\", null);\n return CounterPartsMixinClass;\n};\n//# sourceMappingURL=counter-parts.js.map","function o(e){return typeof e==\"object\"&&e!==null}export{o as a};\n","/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/round.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateRound(na, a, b) {\n return function (t) {\n return na.round(na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t)));\n };\n}\n/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/number.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateNumber(na, a, b) {\n return function (t) {\n return na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t));\n };\n}\nexport function transitionDigit(na, from, to, count) {\n let _count = count;\n const interpolateFunc = na.isInteger(from) && na.isInteger(to)\n ? interpolateRound(na, from, to)\n : interpolateNumber(na, from, to);\n /**\n * 将浮点数转换为整数进行插值计算, 提供与整数插值类似的效果.\n * 取最大的小数位数作为插值个数. 但不超过30.\n */\n // const maxDecimalPlaces = Number.isInteger(from - to)\n // ? 0\n // : Math.max(new Decimal(from).dp(), new Decimal(to).dp());\n // const multiplier = Math.pow(10, maxDecimalPlaces);\n // const count = Math.min(\n // Math.abs(Math.floor(from * multiplier) - Math.floor(to * multiplier)) + 1,\n // 30\n // );\n if (na.eq(from, to))\n _count = 1;\n // [0, 1/count, 2/count, ..., 1]\n // const percents = range(count).map((d) => d / Math.max(count - 1, 1));\n const result = [];\n for (let i = 0; i < _count; i++) {\n const percent = na.div(na.create(i), na.create(Math.max(_count - 1, 1)));\n result.push(interpolateFunc(percent));\n }\n return result;\n}\n//# sourceMappingURL=transition-digit.js.map","const BuildInNumberAdapter = () => ({\n create(value) {\n const num = Number(value);\n return Number.isFinite(num) ? num : 0;\n },\n add(a, b) {\n return a + b;\n },\n sub(a, b) {\n return a - b;\n },\n mul(a, b) {\n return a * b;\n },\n div(a, b) {\n return a / b;\n },\n compare(a, b) {\n if (a > b)\n return 1;\n if (a < b)\n return -1;\n return 0;\n },\n eq(a, b) {\n return a === b;\n },\n gt(a, b) {\n return a > b;\n },\n gte(a, b) {\n return a >= b;\n },\n lt(a, b) {\n return a < b;\n },\n lte(a, b) {\n return a <= b;\n },\n isInteger(a) {\n return Number.isInteger(a);\n },\n isNegative(a) {\n return a < 0;\n },\n isPositive(a) {\n return a > 0;\n },\n isZero(a) {\n return a === 0;\n },\n isNaN(a) {\n return Number.isNaN(a);\n },\n isFinite(a) {\n return Number.isFinite(a);\n },\n abs(a) {\n return Math.abs(a);\n },\n ceil(a) {\n return Math.ceil(a);\n },\n floor(a) {\n return Math.floor(a);\n },\n round(a) {\n return Math.round(a);\n },\n max(a, b) {\n return Math.max(a, b);\n },\n min(a, b) {\n return Math.min(a, b);\n },\n toNumber(a) {\n return Number(a);\n },\n toString(a) {\n return String(a);\n },\n});\nexport { BuildInNumberAdapter };\n//# sourceMappingURL=build-in-number.js.map","/**\n * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.\n * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].\n *\n * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.\n *\n * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a\n * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/\n */\nconst BuildInStringAdapter = () => ({\n stringToChars(value) {\n return Array.from(value);\n },\n});\nexport { BuildInStringAdapter };\n//# sourceMappingURL=build-in-string.js.map","import { isNullish, isString } from 'remeda';\nimport { BuildInNumberAdapter } from './number-adapter/index.js';\nimport { BuildInIntlSegmenterAdapter, BuildInStringAdapter, } from './string-adapter/index.js';\nexport class TimeredCounterAdapter {\n /**\n * 设置要使用的数字适配器. 仅对设置完之后的 TimeredCounter 实例生效.\n *\n * 接受的关键字除了内置的 `number` 以外, 还可以通过 {@link registerNumberAdapter} 注册的 `keyword`.\n *\n * @param adapterOrType\n */\n static setNumberAdapter(adapterOrType) {\n let adapter = BuildInNumberAdapter();\n if (isString(adapterOrType)) {\n for (const [keywords, adapterFactory,] of TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS) {\n if (keywords.includes(adapterOrType)) {\n adapter = adapterFactory();\n break;\n }\n }\n }\n else {\n adapter = adapterOrType;\n }\n TimeredCounterAdapter.NUMBER_ADAPTER = adapter;\n }\n /**\n * 与 {@link setNumberAdapter} 类似, 用于设置字符串适配器.\n */\n static setStringAdapter(adapterOrType) {\n let adapter = BuildInStringAdapter();\n if (isString(adapterOrType)) {\n for (const [keywords, adapterFactory,] of TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS) {\n if (keywords.includes(adapterOrType)) {\n adapter = adapterFactory();\n break;\n }\n }\n }\n else {\n adapter = adapterOrType;\n }\n TimeredCounterAdapter.STRING_ADAPTER = adapter;\n }\n static registerNumberAdapter(keyword, adapter) {\n TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS.set(keyword, adapter);\n }\n static registerStringAdapter(keyword, adapter) {\n TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS.set(keyword, adapter);\n }\n /**\n * 可以直接使用 adapter 文件的导出进行注册.\n *\n * adapter 文件需要导出一个名为 register 的函数, 该函数接受一个 TimeredCounterAdapter 类型的参数.\n *\n * 具体示例请查看 {@link GraphemeSplitterAdapter} or {@link DecimalJsAdapter}.\n */\n static registryAdapter(adapter) {\n adapter.register(this);\n }\n}\nTimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS = new Map([\n [['number'], BuildInNumberAdapter],\n // [['decimal.js', 'decimaljs'], DecimalJsAdapter()],\n]);\nTimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS = new Map([\n [['string'], BuildInStringAdapter],\n [['intl-segmenter'], BuildInIntlSegmenterAdapter],\n // [['grapheme-splitter'], GraphemeSplitterAdapter()],\n]);\n/**\n * 数字适配器, 有以下两种:\n * 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.\n * 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.\n *\n * 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.\n *\n * @default BuildInNumberAdapter\n */\nTimeredCounterAdapter.NUMBER_ADAPTER = BuildInNumberAdapter();\n/**\n * 字符串适配器, 有以下两种:\n * 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.\n * 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.\n * 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.\n *\n * 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.\n *\n * @default BuildInStringAdapter\n */\nTimeredCounterAdapter.STRING_ADAPTER = BuildInStringAdapter();\n/**\n * 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.\n *\n * @see https://lit.dev/docs/components/properties/#attributes\n * @protected\n */\nTimeredCounterAdapter.VALUE_CONVERTER = {\n fromAttribute(value) {\n return value;\n },\n toAttribute(value) {\n return isNullish(value)\n ? value\n : TimeredCounterAdapter.NUMBER_ADAPTER.toString(value);\n },\n};\nexport function setNumberAdapter(...args) {\n TimeredCounterAdapter.setNumberAdapter(...args);\n}\nexport function setStringAdapter(...args) {\n TimeredCounterAdapter.setStringAdapter(...args);\n}\nexport function registerNumberAdapter(...args) {\n TimeredCounterAdapter.registerNumberAdapter(...args);\n}\nexport function registerStringAdapter(...args) {\n TimeredCounterAdapter.registerStringAdapter(...args);\n}\n//# sourceMappingURL=timered-counter-adapter.js.map","/**\n * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.\n *\n * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).\n *\n * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.\n */\nconst BuildInIntlSegmenterAdapter = (locales) => {\n const segmenter = new Intl.Segmenter(locales, { granularity: \"grapheme\" });\n return {\n stringToChars(value) {\n const segments = Array.from(segmenter.segment(value));\n return segments.map((s) => s.segment);\n },\n };\n};\nexport { BuildInIntlSegmenterAdapter };\n//# sourceMappingURL=build-in-intl-segmenter.js.map","import { __decorate } from \"tslib\";\nimport { property, state } from 'lit/decorators.js';\nimport { isNonNullish, isNullish, isString } from 'remeda';\nimport { TimeredCounterAdapter } from '../timered-counter-adapter.js';\nexport const CounterBaseMixin = (superClass) => {\n class CounterBaseMixinClass extends superClass {\n get value() {\n return this.numberAdapter.create(this.__value);\n }\n set value(value) {\n value = TimeredCounterAdapter.NUMBER_ADAPTER.create(isNullish(value) || (isString(value) && value.trim() === '')\n ? 0\n : value);\n const old = this.__value;\n this.__value = value;\n if (!this.numberAdapter.eq(this.__value, old)) {\n this.requestUpdate('value', old);\n }\n }\n /**\n * 用于记录上一次的值.\n *\n * 初始化时({@link connectedCallback}), oldValue 将被设置为 `initialValue` 或 `value` 的值.\n */\n get oldValue() {\n return this.numberAdapter.create(this.__oldValue);\n }\n set oldValue(value) {\n const old = this.__oldValue;\n this.__oldValue = value;\n this.requestUpdate('oldValue', old);\n }\n /**\n * 如果初始值被设置, {@link oldValue} 的初始值, 会使用该值而不是 `value`.\n *\n * 这对于初始化完成后启动动画效果非常有用.\n */\n get initialValue() {\n return isNullish(this.__initialValue)\n ? this.__initialValue\n : this.numberAdapter.create(this.__initialValue);\n }\n set initialValue(value) {\n const old = this.__initialValue;\n this.__initialValue = value;\n this.requestUpdate('initialValue', old);\n }\n /**\n * 自定义本地化配置, 否则从浏览器环境中获取.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale\n *\n * @default \"en-US\"\n */\n get locale() {\n return this.__locale;\n }\n set locale(value) {\n const old = this.__locale;\n this.__locale = value;\n this.requestUpdate('locale', old);\n this.localeInstance = isString(this.__locale)\n ? new Intl.Locale(this.__locale)\n : new Intl.Locale(...this.__locale);\n }\n constructor(...args) {\n super(...args);\n this.__value = TimeredCounterAdapter.NUMBER_ADAPTER.create(0);\n // value: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__oldValue = TimeredCounterAdapter.NUMBER_ADAPTER.create(0);\n // oldValue: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__initialValue = null;\n this.__locale = 'en-US';\n this.localeInstance = isString(this.locale)\n ? new Intl.Locale(this.locale)\n : new Intl.Locale(...this.locale);\n this.direction = 'up';\n this.oldDirection = this.direction;\n // @ts-ignore\n this.numberAdapter = TimeredCounterAdapter.NUMBER_ADAPTER;\n // @ts-ignore\n this.stringAdapter = TimeredCounterAdapter.STRING_ADAPTER;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value') &&\n !changedProperties.has('oldValue')) {\n // oldValue 未被手动设置时, 使用默认策略更新 oldValue.\n this.oldValue = changedProperties.get('value') ?? this.value;\n }\n this.oldDirection = this.direction;\n if (!this.numberAdapter.eq(this.value, this.oldValue)) {\n this.direction = this.numberAdapter.gt(this.value, this.oldValue)\n ? 'down'\n : 'up';\n }\n }\n /**\n * oldValue 的默认初始值应当来自 initialValue 或 value.\n * 以保证 oldValue 始终有值.\n */\n connectedCallback() {\n super.connectedCallback();\n this.oldValue = isNonNullish(this.initialValue)\n ? this.initialValue\n : this.value;\n }\n }\n __decorate([\n property({\n attribute: 'value',\n reflect: true,\n converter: {\n toAttribute: TimeredCounterAdapter.VALUE_CONVERTER.toAttribute,\n },\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"value\", null);\n __decorate([\n property({\n attribute: 'old-value',\n reflect: true,\n converter: TimeredCounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"oldValue\", null);\n __decorate([\n property({\n attribute: 'initial-value',\n reflect: true,\n converter: TimeredCounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"initialValue\", null);\n __decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return value;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n },\n reflect: true,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"locale\", null);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"direction\", void 0);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"oldDirection\", void 0);\n return CounterBaseMixinClass;\n};\n//# sourceMappingURL=counter-base.js.map","function l(n){return n!=null}export{l as a};\n","import { css } from 'lit';\nexport const timeredCounterStyles = css `\n :host {\n position: relative;\n white-space: nowrap;\n\n display: inline-block;\n }\n\n //.timered-counter {\n // position: relative;\n // display: inline-flex;\n // overflow: hidden;\n //\n // /**\n // inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n // @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n // @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n // */\n // vertical-align: bottom;\n //}\n\n .timered-counter.debug {\n overflow: visible;\n }\n\n //.timered-counter-datetime-duration .duration-unit {\n // font-size: 0.4em;\n // line-height: 1;\n //}\n`;\n//# sourceMappingURL=timered-counter-styles.js.map","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitOption, mergePartDigitOption, } from '../utils/extract-group-option.js';\nexport const CounterAnimationMixin = (superClass) => {\n class CounterAnimationMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 传递给 Web Animations API 的选项.\n */\n this.animationOptions = {};\n this.cachedAnimationOptions = [];\n /**\n * 传递给 Web Animations API 的关键帧配置.\n */\n this.keyframes = {};\n this.cachedKeyframes = [];\n }\n extractAnimationOptions() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.animationOptions ?? {}, getterOptions), extractPartDigitOption(this.animationOptionsDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedAnimationOptions, result)) {\n this.cachedAnimationOptions = result;\n }\n return this.cachedAnimationOptions;\n }\n extractKeyframes() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.keyframes ?? {}, getterOptions), extractPartDigitOption(this.keyframesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedKeyframes, result)) {\n this.cachedKeyframes = result;\n }\n return this.cachedKeyframes;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'animation-options', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"animationOptions\", void 0);\n __decorate([\n property({ type: Object, attribute: 'keyframes', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"keyframes\", void 0);\n return CounterAnimationMixinClass;\n};\n//# sourceMappingURL=counter-animation.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce(((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`}),\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { css } from 'lit';\nexport const rollerStyles = css `\n :host {\n display: inline-flex;\n overflow: hidden;\n\n /**\n inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n */\n vertical-align: bottom;\n }\n\n .counter-parts {\n display: inline-flex;\n flex: 1 1 auto;\n }\n\n .roller-part {\n display: inline-flex;\n white-space: nowrap;\n }\n\n .roller__prefix,\n .roller__suffix {\n flex: none;\n }\n\n .roller-part .roller-part__wrapper {\n display: inline-block;\n text-align: center;\n }\n\n .roller-part .roller-part__suffix {\n display: inline-block;\n }\n`;\nexport const rollerDigitStyles = css `\n .roller-part-digit {\n position: relative;\n display: inline-block;\n }\n\n .placeholder {\n visibility: hidden;\n display: inline-block;\n }\n\n .roll-list {\n position: absolute;\n left: 0;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n }\n\n .roll-list.roll-list__up {\n top: 0;\n }\n\n .roll-list.roll-list__down {\n bottom: 0;\n }\n\n .roll-list__shadow {\n visibility: hidden;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -10;\n display: inline-flex;\n flex-direction: column;\n white-space: nowrap;\n }\n\n .roll-item {\n display: inline-block;\n width: 100%;\n }\n\n .roll-item.roll-item__head {\n position: absolute;\n top: 100%;\n }\n\n .roll-item.roll-item__tail {\n position: absolute;\n bottom: 100%;\n }\n`;\n//# sourceMappingURL=styles.js.map","/**\n * @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts\n */\nexport const noop = (any) => any;\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nexport function cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n//# sourceMappingURL=cubic-bezier.js.map","import { cubicBezier } from './cubic-bezier.js';\n/**\n * @see https://easings.net\n */\nexport const easeInSine = cubicBezier(0.12, 0, 0.39, 0);\nexport const easeOutSine = cubicBezier(0.61, 1, 0.88, 1);\nexport const easeInOutSine = cubicBezier(0.37, 0, 0.63, 1);\nexport const easeInQuad = cubicBezier(0.11, 0, 0.5, 0);\nexport const easeOutQuad = cubicBezier(0.5, 1, 0.89, 1);\nexport const easeInOutQuad = cubicBezier(0.45, 0, 0.55, 1);\nexport const easeInCubic = cubicBezier(0.32, 0, 0.67, 0);\nexport const easeOutCubic = cubicBezier(0.33, 1, 0.68, 1);\nexport const easeInOutCubic = cubicBezier(0.65, 0, 0.35, 1);\nexport const easeInQuart = cubicBezier(0.5, 0, 0.75, 0);\nexport const easeOutQuart = cubicBezier(0.25, 1, 0.5, 1);\nexport const easeInOutQuart = cubicBezier(0.76, 0, 0.24, 1);\nexport const easeInQuint = cubicBezier(0.64, 0, 0.78, 0);\nexport const easeOutQuint = cubicBezier(0.22, 1, 0.36, 1);\nexport const easeInOutQuint = cubicBezier(0.83, 0, 0.17, 1);\nexport const easeInExpo = cubicBezier(0.7, 0, 0.84, 0);\nexport const easeOutExpo = cubicBezier(0.16, 1, 0.3, 1);\nexport const easeInOutExpo = cubicBezier(0.87, 0, 0.13, 1);\nexport const easeInCirc = cubicBezier(0.55, 0, 1, 0.45);\nexport const easeOutCirc = cubicBezier(0, 0.55, 0.45, 1);\nexport const easeInOutCirc = cubicBezier(0.85, 0, 0.15, 1);\nexport const easeInBack = cubicBezier(0.36, 0, 0.66, -0.56);\nexport const easeOutBack = cubicBezier(0.34, 1.56, 0.64, 1);\nexport const easeInOutBack = cubicBezier(0.68, -0.6, 0.32, 1.6);\nexport function easeInElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);\n}\nexport function easeOutElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n}\nexport function easeInOutElastic(x) {\n const c5 = (2 * Math.PI) / 4.5;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n if (x < 0.5) {\n return (-(2 ** (20 * x - 10)) * Math.sin((20 * x - 11.125) * c5)) / 2;\n }\n return (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n}\nexport function easeOutBounce(x) {\n const n1 = 7.5625;\n const d1 = 2.75;\n if (x < 1 / d1) {\n return n1 * x * x;\n }\n if (x < 2 / d1) {\n x -= 1.5 / d1;\n return n1 * x * x + 0.75;\n }\n if (x < 2.5 / d1) {\n x -= 2.25 / d1;\n return n1 * x * x + 0.9375;\n }\n x -= 2.625 / d1;\n return n1 * x * x + 0.984375;\n}\nexport function easeInBounce(x) {\n return 1 - easeOutBounce(1 - x);\n}\nexport function easeInOutBounce(x) {\n if (x < 0.5) {\n return (1 - easeOutBounce(1 - 2 * x)) / 2;\n }\n return (1 + easeOutBounce(2 * x - 1)) / 2;\n}\n//# sourceMappingURL=penner-easing-functions.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { intersection, isEmpty, isNullish, isString, merge, omit, range, } from 'remeda';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { rollerDigitStyles } from './styles.js';\nimport * as EasingFunctions from '../../easing/penner-easing-functions.js';\nclass RollerDigitAnimationEvent extends Event {\n}\nlet TimeredCounterRollerDigit = class TimeredCounterRollerDigit extends LitElement {\n constructor() {\n super();\n this.digit = { data: [], place: 0 };\n this.preprocessData = {\n animate: true,\n cancelPrevAnimation: false,\n earlyReturn: '',\n index: 0,\n partIndex: 0,\n digitIndex: 0,\n };\n this.direction = 'up';\n this.textStyle = {};\n this.cellStyle = [];\n this.animationOptions = {};\n this.keyframes = {};\n this.digitWidth = 0;\n this.resizeObserver = new ResizeObserver(() => {\n this.digitWidth = this.clonedRollDigitList\n ? this.clonedRollDigitList.offsetWidth\n : 0;\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.clonedRollDigitList) {\n this.resizeObserver.observe(this.clonedRollDigitList);\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n updated(_changedProperties) {\n super.updated(_changedProperties);\n /**\n * 仅当影响滚动列表 dom 结构的属性发生变化时才会触发动画.\n */\n if (intersection(Array.from(_changedProperties.keys()), [\n 'digit',\n 'preprocessData',\n 'direction',\n 'animationOptions',\n 'keyframes',\n ]).length > 0) {\n if (this.shouldAnimate()) {\n this.startAnimation().then();\n }\n }\n }\n render() {\n const shadowCellStyle = this.cellStyle.map(style => omit(style, ['position']));\n return html `<span class=\"roller-part-digit\">\n <!-- 占位 -->\n <span\n class=\"placeholder\"\n style=${styleMap({ width: `${Math.round(this.digitWidth)}px` })}\n >0</span\n >\n <!-- 一个不可见的滚动列表的复制, 用于计算该列表的最大宽度. -->\n <span class=\"roll-list__shadow\">\n ${repeat(this.digit.data, (_, index) => index, (digit, index) => html `<span style=${styleMap(shadowCellStyle[index])}\n >${digit}</span\n >`)}\n </span>\n <span\n class=${classMap({\n /**\n * 向上(up)滚动时, 使滚动列表顶部对齐以便于应用 `translationY(-100%)` 实现向上滚动效果\n * 向下同理\n */\n 'roll-list__up': this.direction === 'up',\n 'roll-list__down': this.direction === 'down',\n 'roll-list': true,\n })}\n >\n ${this.digit.data.length > 1\n ? repeat(this.digit.data, (_, index) => index, (digit, index) => {\n if (this.direction === 'up' &&\n index === this.digit.data.length - 1) {\n return html `<span\n part=\"cell\"\n class=\"roll-item roll-item__head\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n }\n if (this.direction === 'down' && index === 0) {\n return html `\n <span\n part=\"cell\"\n class=\"roll-item roll-item__tail\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >\n `;\n }\n return html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n })\n : html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[0])}\n ><span style=${styleMap(this.textStyle)}\n >${this.digit.data[0]}</span\n ></span\n >`}</span\n ></span\n > `;\n }\n shouldAnimate() {\n const { cancelPrevAnimation, animate } = this.preprocessData;\n if (cancelPrevAnimation) {\n if (this.animation) {\n this.animation.cancel();\n }\n if (this.rollList && this.rollList.style && this.rollList.style.cssText) {\n this.rollList.style.cssText = '';\n }\n }\n if (!animate)\n return false;\n return true;\n }\n async startAnimation() {\n if (isNullish(this.rollList))\n return;\n this.__emitAnimationStart();\n const anmOptions = merge({ duration: 1000, iterations: 1, easing: 'ease-out', fill: 'forwards' }, this.animationOptions);\n const keyframes = isEmpty(this.keyframes)\n ? {\n up: { transform: ['translateY(0)', 'translateY(-100%)'] },\n down: { transform: ['translateY(0)', 'translateY(100%)'] },\n }[this.direction]\n : this.keyframes;\n /**\n * 尝试从 `PennerEasingFunctions` 中获取对应的 easing 函数\n */\n // {\n if (isString(anmOptions.easing) &&\n EasingFunctions[anmOptions.easing]) {\n const func = EasingFunctions[anmOptions.easing];\n anmOptions.easing = `linear(${range(0, 64)\n .map((_, i) => func(i / 63))\n .join(',')})`;\n }\n // }\n try {\n this.clearAnimation();\n this.animation = this.rollList.animate(keyframes, anmOptions);\n this.animation.addEventListener('finish', () => this.__emitAnimationEnd(), {\n once: true,\n });\n // /**\n // * 动画播放完成或被其他动画中断都会使得 `finished` resolve.\n // * 只有当动画顺利播放完成的情况下, 才能调用 `cancel` 取消动画. 在其他情况下调用, 会抛出异常[1].\n // *\n // * 因此, 提前检查 `playState` 的值. 当 `playState` 不是 `finished` 时, 说明动画被其他 `Animation` 实例中断.\n // * 因为已经有其他 `Animation` 实例的存在, 我们可以直接丢弃这个 `Animation` 实例, 而不用担心无动画可用.\n // *\n // * [1]: https://developer.mozilla.org/en-US/docs/Web/API/Animation/cancel#exceptions\n // */\n // await this.animation.finished;\n // if (\n // this.animation.playState === 'finished' &&\n // this.rollList.checkVisibility()\n // ) {\n // // this.animation.commitStyles();\n // // this.animation.cancel();\n // }\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n clearAnimation() {\n this.animation?.removeEventListener('finish', this.__emitAnimationEnd);\n this.animation?.cancel();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-end'));\n }\n};\nTimeredCounterRollerDigit.styles = [rollerDigitStyles];\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"digit\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"preprocessData\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRollerDigit.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"textStyle\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRollerDigit.prototype, \"cellStyle\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"keyframes\", void 0);\n__decorate([\n query('.roll-list__shadow')\n], TimeredCounterRollerDigit.prototype, \"clonedRollDigitList\", void 0);\n__decorate([\n query('.roll-list')\n], TimeredCounterRollerDigit.prototype, \"rollList\", void 0);\n__decorate([\n state()\n], TimeredCounterRollerDigit.prototype, \"digitWidth\", void 0);\nTimeredCounterRollerDigit = __decorate([\n customElement('timered-counter-roller-digit')\n], TimeredCounterRollerDigit);\nexport { TimeredCounterRollerDigit };\n//# sourceMappingURL=roller-digit.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { isNumber, values } from 'remeda';\nimport './roller-digit.js';\nimport { rollerStyles } from './styles.js';\nclass RollerAnimationEvent extends Event {\n}\nlet TimeredCounterRoller = class TimeredCounterRoller extends LitElement {\n constructor() {\n super(...arguments);\n this.color = '';\n this.direction = 'up';\n this.parts = [];\n this.partPreprocessDataList = [];\n this.animationOptions = [];\n this.keyframes = [];\n this.cellStyles = [];\n this.digitStyles = [];\n this.partStyles = [];\n this.parentContainerRect = {};\n this.__partDigitsColorStyles = [];\n /**\n * 记录一次更新中, 启动动画并结束的 <timered-counter-roller-digit> 元素个数.\n *\n * 在每次更新前重置为 0.\n *\n * @see {@link __handleDigitAnimationEnd}\n * @private\n */\n this.digitAnimateEndCount = 0;\n /**\n * 记录一次更新中, 需要启动动画的 <timered-counter-roller-digit> 元素总数.\n *\n * 在每次更新前重新计算.\n * @private\n */\n this.digitAnimatedCount = 0;\n }\n render() {\n return html `<span\n class=\"roller__prefix\"\n data-part-id=\"-1\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-1]?.[0] ?? {}))}\n >\n <slot part=\"prefix\" name=\"prefix\"></slot>\n </span>\n <span class=\"counter-parts\">\n ${repeat(this.parts, (_, index) => index, (part, partIndex) => html `<span\n part=\"part\"\n class=\"roller-part\"\n style=${styleMap((this.partStyles?.[partIndex] ?? {}))}\n >${repeat(part.digits, (_, index) => `${part.digits.length - index}`, (digitInfo, digitIndex) => html `<timered-counter-roller-digit\n exportparts=\"digit, cell\"\n part=\"digit\"\n class=\"roller-part__wrapper\"\n style=${styleMap((this.digitStyles?.[partIndex]?.[digitIndex] ??\n {}))}\n data-part-id=\"${partIndex}\"\n data-digit-id=\"${digitIndex}\"\n .digit=${digitInfo}\n .preprocessData=${this.partPreprocessDataList[partIndex][digitIndex]}\n .direction=${this.direction}\n .textStyle=${this.__partDigitsColorStyles?.[partIndex]?.[digitIndex] ?? {}}\n .cellStyle=${this.cellStyles[partIndex][digitIndex]}\n .animationOptions=${this.animationOptions[partIndex][digitIndex]}\n .keyframes=${this.keyframes[partIndex][digitIndex]}\n @roller-digit-animation-end=${this\n .__handleDigitAnimationEnd}\n ></timered-counter-roller-digit>`)}${html `<span\n class=\"roller-part__suffix\"\n data-part-id=\"${partIndex}\"\n data-digit-id=\"-1\"\n style=${styleMap((this.__partDigitsColorStyles?.[partIndex]?.[-1] ??\n {}))}\n ><slot\n part=\"part-suffix\"\n name=${`part-suffix-${partIndex}`}\n ></slot\n ></span>`}</span\n > `)}</span\n ><span\n class=\"roller__suffix\"\n data-part-id=\"-2\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-2]?.[0] ?? {}))}\n ><slot part=\"suffix\" name=\"suffix\"></slot\n ></span>`;\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('direction') ||\n _changedProperties.has('parts')) {\n this.digitAnimateEndCount = 0;\n this.digitAnimatedCount = this.partPreprocessDataList\n .flat()\n .filter(({ animate }) => animate).length;\n if (this.digitAnimatedCount > 0) {\n this.__emitAnimationStart();\n }\n }\n this.__partDigitsColorStyles = this.__generatePartDigitsColorStyles();\n }\n __handleDigitAnimationEnd() {\n this.digitAnimateEndCount++;\n if (this.digitAnimateEndCount < this.digitAnimatedCount)\n return;\n this.__emitAnimationEnd();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-end'));\n }\n __generatePartDigitsColorStyles() {\n const result = [];\n const containerRect = this.parentContainerRect;\n const { \n // parts,\n // oldParts,\n prefixContainer, suffixContainer, color, } = this;\n const partDigitElements = Array.from(this.shadowRoot?.querySelectorAll('[data-part-id]').values() ?? []);\n /**\n * 当某次更新**将**会导致 DOM 宽高发生变化时(如: 滚动数字的位数增加/减少会导致宽度变化),\n * 需要跳过这次更新然后等待 DOM 宽高变化完成才能更新(宽高变化后将通过 {@link containerRect} 触发).\n */\n if (!containerRect) {\n return result;\n }\n /**\n * 比较 {@link data} 前后不同判断是否导致 DOM 宽度会发生变化.\n */\n // if (parts.length !== oldParts.length) {\n // this.requestUpdate();\n // return result;\n // }\n // for (let i = 0; i < parts.length; i++) {\n // if (parts[i].digits.length !== oldParts[i].digits.length) {\n // this.requestUpdate();\n // return result;\n // }\n // }\n if (prefixContainer)\n partDigitElements[-1] = prefixContainer;\n if (suffixContainer)\n partDigitElements[-2] = suffixContainer;\n for (const el of values(partDigitElements)) {\n const partId = Number.parseInt(el.dataset.partId ?? '-1', 10);\n const digitId = Number.parseInt(el.dataset.digitId ?? '-1', 10);\n if (!isNumber(partId) || !isNumber(digitId)) {\n throw new Error('The data-part-id and data-digit-id attributes are required.');\n }\n if (!result[partId])\n result[partId] = [];\n if (CSS.supports('color', color)) {\n result[partId][digitId] = { color };\n }\n else if (CSS.supports('background-image', color)) {\n result[partId][digitId] = {\n backgroundImage: color,\n backgroundClip: 'text',\n backgroundSize: `${this.offsetWidth}px ${this.offsetHeight}px`,\n backgroundPositionX: `${-el.offsetLeft}px`,\n backgroundPositionY: `${-el.offsetTop}px`,\n backgroundRepeat: 'no-repeat',\n color: 'transparent',\n // @ts-ignore\n '-webkit-text-fill-color': 'transparent',\n };\n }\n else {\n result[partId][digitId] = {};\n // todo error event\n // eslint-disable-next-line no-console\n console.warn(new Error('The color property is not supported.'));\n }\n }\n return result;\n }\n};\nTimeredCounterRoller.styles = [rollerStyles];\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"parts\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partPreprocessDataList\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"keyframes\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"cellStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"digitStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partStyles\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRoller.prototype, \"parentContainerRect\", void 0);\n__decorate([\n query('.roller__prefix')\n], TimeredCounterRoller.prototype, \"prefixContainer\", void 0);\n__decorate([\n query('.roller__suffix')\n], TimeredCounterRoller.prototype, \"suffixContainer\", void 0);\nTimeredCounterRoller = __decorate([\n customElement('timered-counter-roller')\n], TimeredCounterRoller);\nexport { TimeredCounterRoller };\n//# sourceMappingURL=roller.js.map","import{a as e}from\"./chunk-RAAYCPUM.js\";function r(...t){return e(Object.values,t)}export{r as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nexport const CounterAiraMixin = (superClass) => {\n class CounterAiraMixinClass extends superClass {\n constructor() {\n super(...arguments);\n this.ariaLabel = '';\n this.ariaLive = 'polite';\n // updated(changedProperties: PropertyValues<this>) {\n // if (changedProperties.has('value')) {\n // this.ariaLabel = this.generateAriaLabel();\n // }\n // }\n }\n /**\n * 生成 aria-label 属性值. 在每次更新完成后调用.\n */\n generateAriaLabel() {\n let label = '';\n const { direction } = this;\n for (const part of this.parts) {\n for (const digit of part.digits) {\n label += `${digit.data[direction === 'up' ? digit.data.length - 1 : 0]}`;\n }\n }\n return label;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n this.ariaLabel = this.generateAriaLabel();\n }\n }\n __decorate([\n property({ attribute: 'aria-label', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLabel\", void 0);\n __decorate([\n property({ attribute: 'aira-live', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLive\", void 0);\n return CounterAiraMixinClass;\n};\n//# sourceMappingURL=counter-aira.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { CounterStylesMixin } from './mixins/counter-styles.js';\nimport { CounterPartsMixin } from './mixins/counter-parts.js';\nimport { CounterBaseMixin } from './mixins/counter-base.js';\nimport { timeredCounterStyles } from './styles/timered-counter-styles.js';\nimport { CounterAnimationMixin } from './mixins/counter-animation.js';\nimport './transitions/roller/index.js';\nimport { CounterAiraMixin } from './mixins/counter-aira.js';\nclass TimeredCounterAnimationEvent extends Event {\n}\nlet TimeredCounter = class TimeredCounter extends CounterAiraMixin(CounterAnimationMixin(CounterStylesMixin(CounterPartsMixin(CounterBaseMixin(LitElement))))) {\n constructor() {\n super();\n this.resizeObserver = new ResizeObserver(() => {\n this.partsContainerRect = this.partsContainer\n ? this.partsContainer.getBoundingClientRect()\n : new DOMRect();\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.partsContainer) {\n this.resizeObserver.observe(this.partsContainer);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n class=\"timered-counter\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n dispatchTimeredCounterAnimationStart() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-start'));\n }\n dispatchTimeredCounterAnimationEnd() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-end'));\n }\n};\nTimeredCounter.styles = [timeredCounterStyles];\n__decorate([\n state()\n], TimeredCounter.prototype, \"partsContainerRect\", void 0);\n__decorate([\n query('timered-counter-roller')\n], TimeredCounter.prototype, \"partsContainer\", void 0);\nTimeredCounter = __decorate([\n customElement('timered-counter')\n], TimeredCounter);\nexport { TimeredCounter };\n//# sourceMappingURL=timered-counter.js.map","import { css } from 'lit';\nexport const timeredCounterNumberStyles = css ``;\n//# sourceMappingURL=timered-counter-number-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isBoolean, isNullish } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterNumberStyles } from './styles/timered-counter-number-styles.js';\nlet TimeredCounterNumber = class TimeredCounterNumber extends TimeredCounter {\n constructor() {\n super(...arguments);\n /**\n * 本地化数字格式化配置. 传入 `true` 时使用浏览器的默认配置.\n *\n * 详细配置参数请参考 [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)\n *\n * @default false\n */\n this.localeNumber = false;\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置中的小数点分隔符. 根据不同的地区可能是 `.` 或 `,`.\n * @see https://en.wikipedia.org/wiki/Decimal_separator\n */\n this.localDecimalSeparator = '';\n /**\n * 本地化数字格式化配置中的分组分隔符.\n * @see https://en.wikipedia.org/wiki/Decimal_separator#Digit_grouping\n */\n this.localeGroupingSeparator = '';\n }\n sampleToString(value) {\n return this.localeNumber\n ? // todo Intl.NumberFormat 最大支持 21 位数.\n this.localeNumberInstance.format(this.numberAdapter.toNumber(value))\n : this.numberAdapter.toString(value);\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n willUpdate(_changedProperties) {\n if (_changedProperties.has('localeNumber') ||\n _changedProperties.has('locale')) {\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置变化时, 更新 `partsOptions` 中的 `decimalSeparator`.\n */\n {\n const numberParts = this.localeNumberInstance.formatToParts(123456.789);\n const decimalSeparator = numberParts.find(part => part.type === 'decimal')?.value || '.';\n const groupingSeparator = numberParts.find(part => part.type === 'group')?.value || '';\n if (this.localDecimalSeparator !== decimalSeparator ||\n this.localeGroupingSeparator !== groupingSeparator) {\n this.localDecimalSeparator = decimalSeparator;\n const oldPartsOptions = this.partsOptions;\n this.partsOptions = {\n ...oldPartsOptions,\n decimalSeparator: this.localDecimalSeparator,\n };\n _changedProperties.set('partsOptions', oldPartsOptions);\n }\n }\n }\n super.willUpdate(_changedProperties);\n }\n};\nTimeredCounterNumber.styles = [...TimeredCounter.styles, timeredCounterNumberStyles];\n__decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return false;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return true;\n }\n },\n reflect: true,\n attribute: 'locale-number',\n })\n], TimeredCounterNumber.prototype, \"localeNumber\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localDecimalSeparator\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localeGroupingSeparator\", void 0);\nTimeredCounterNumber = __decorate([\n customElement('timered-counter-number')\n], TimeredCounterNumber);\nexport { TimeredCounterNumber };\n//# sourceMappingURL=timered-counter-number.js.map","import { css } from 'lit';\nexport const timeredCounterStringStyles = css ``;\n//# sourceMappingURL=timered-counter-string-styles.js.map","/**\n * @license https://github.com/HarasimowiczKamil/any-base\n */\nimport { isDeepEqual } from 'remeda';\nfunction isValid(number, alphabet) {\n for (const char of number) {\n if (alphabet.indexOf(char) === -1) {\n return false;\n }\n }\n return true;\n}\nfunction convert(srcAlphabet, dstAlphabet, number) {\n let i;\n let divide;\n let newLen;\n let { length } = number;\n const numberMap = {};\n const fromBase = srcAlphabet.length;\n const toBase = dstAlphabet.length;\n const result = [];\n if (!isValid(number, srcAlphabet)) {\n throw new Error(`Number \"${number}\" contains of non-alphabetic digits (${srcAlphabet})`);\n }\n if (isDeepEqual(srcAlphabet, dstAlphabet)) {\n return number.join('');\n }\n for (i = 0; i < length; i++) {\n numberMap[i] = srcAlphabet.indexOf(number[i]);\n }\n do {\n divide = 0;\n newLen = 0;\n for (i = 0; i < length; i++) {\n divide = divide * fromBase + numberMap[i];\n if (divide >= toBase) {\n numberMap[newLen++] = Math.floor(divide / toBase);\n divide %= toBase;\n }\n else if (newLen > 0) {\n numberMap[newLen++] = 0;\n }\n }\n length = newLen;\n result.push(dstAlphabet[divide]);\n } while (newLen !== 0);\n return result.reverse().join('');\n}\nexport function anyBase(sa, srcAlphabet, dstAlphabet) {\n return (number) => convert(sa.stringToChars(srcAlphabet), sa.stringToChars(dstAlphabet), sa.stringToChars(number));\n}\nexport const BIN = '01';\nexport const OCT = '01234567';\nexport const DEC = '0123456789';\nexport const HEX = '0123456789abcdef';\n//# sourceMappingURL=any-base.js.map","import { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { isEmpty, isString } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterStringStyles } from './styles/timered-counter-string-styles.js';\nimport { anyBase } from './utils/any-base.js';\n/**\n * 替换一些特定的字符.\n * 1. \" \": 空格字符在 HTML 中会被忽略导致无法计算字符宽度, 使用 \\xa0 替换.\n */\nconst REPLACED_CHARS = {\n ' ': '\\xa0', // &nbsp;\n};\nlet TimeredCounterString = class TimeredCounterString extends TimeredCounter {\n constructor() {\n super(...arguments);\n // /**\n // * 自定义字符集, 传入的 `value` 的字符串表示形式的每个字符都**必须**被包含在该字符集中.\n // *\n // * @default `value` 的去重字符集.\n // */\n // @property({\n // reflect: true,\n // })\n this.__alphabet = '';\n this.__initialValueString = '';\n this.__valueString = '';\n this.__oldValueString = '';\n this.__partsOptions = null;\n this.__decimalToAnyBase = anyBase(this.stringAdapter, '0123456789', this.__alphabet);\n this.__anyBaseToDecimal = anyBase(this.stringAdapter, this.__alphabet, '0123456789');\n }\n get initialValue() {\n return super.initialValue;\n }\n set initialValue(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n this.__initialValueString = value ?? '';\n if (isEmpty(this.__initialValueString)) {\n super.initialValue = this.numberAdapter.create(0);\n return;\n }\n /**\n * `initialValue` 在初始化时会被赋值给 `oldValue`, 因此, 同步更新逻辑与 `value` 的 setter 一致.\n */\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n super.initialValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__initialValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持任意字符串.\n */\n set value(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n else if (this.__valueString === value) {\n return;\n }\n this.__oldValueString = this.__valueString;\n this.__valueString = value ?? '';\n if (isEmpty(this.__valueString)) {\n super.value = this.numberAdapter.create(0);\n return;\n }\n /**\n * 传入的 value 通过 `__anyBaseToDecimal` 转换为十进制数值, `__anyBaseToDecimal` 则基于 `__alphabet` 计算.\n * 因此, 当 `__alphabet` 更新时, 需要重新计算 `value` 和 `oldValue` 的值.\n * 以确保 `value` 和 `oldValue` 能够通过 `__decimalToAnyBase` 转换为原始字符串.\n */\n this.__updateAlphabet(this.__valueString, this.__oldValueString);\n super.oldValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__oldValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n type: 'string',\n fillChar: REPLACED_CHARS[' '],\n ...this.__partsOptions,\n digitToChar: {\n ' ': REPLACED_CHARS[' '],\n ...this.__partsOptions.digitToChar,\n },\n };\n }\n /**\n * 根据 `value`, `initialValue`, `oldValue` 更新字符集.\n * @private\n */\n __updateAlphabet(value, oldValue) {\n const allChars = isEmpty(value) && isEmpty(oldValue)\n ? ''\n : `\\x00${oldValue ?? ''}${value ?? ''}`;\n const charSet = new Set(this.stringAdapter.stringToChars(allChars));\n // if (charSet.size < 10) {\n // for (let i = 0; i < 10; i++) {\n // charSet.add(i.toString());\n // if (charSet.size >= 10) break;\n // }\n // }\n this.__alphabet = Array.from(charSet).sort().join('');\n const sa = this.stringAdapter;\n const alphabet = this.__alphabet;\n this.__decimalToAnyBase = anyBase(sa, '0123456789', alphabet);\n this.__anyBaseToDecimal = anyBase(sa, alphabet, '0123456789');\n }\n sampleToString(value) {\n return this.__decimalToAnyBase(this.numberAdapter.toString(value));\n }\n connectedCallback() {\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n this.initialValue = this.__initialValueString;\n this.value = this.__valueString;\n /**\n * TimeredCounterString 有自定义的 `fillChar` 和 `digitToChar`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n super.connectedCallback();\n }\n};\nTimeredCounterString.styles = [...TimeredCounter.styles, timeredCounterStringStyles];\nTimeredCounterString = __decorate([\n customElement('timered-counter-string')\n], TimeredCounterString);\nexport { TimeredCounterString };\n//# sourceMappingURL=timered-counter-string.js.map","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const sign = compareLocalAsc(laterDate_, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarDays(laterDate_, earlierDate_),\n );\n\n laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n const isLastDayNotFull = Number(\n compareLocalAsc(laterDate_, earlierDate_) === -sign,\n );\n\n const result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n const diff =\n laterDate.getFullYear() - earlierDate.getFullYear() ||\n laterDate.getMonth() - earlierDate.getMonth() ||\n laterDate.getDate() - earlierDate.getDate() ||\n laterDate.getHours() - earlierDate.getHours() ||\n laterDate.getMinutes() - earlierDate.getMinutes() ||\n laterDate.getSeconds() - earlierDate.getSeconds() ||\n laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n if (diff < 0) return -1;\n if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n const diff =\n differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\n\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport function differenceInQuarters(laterDate, earlierDate, options) {\n const diff = differenceInMonths(laterDate, earlierDate, options) / 3;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInQuarters;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInDays } from \"./differenceInDays.js\";\n\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport function differenceInWeeks(laterDate, earlierDate, options) {\n const diff = differenceInDays(laterDate, earlierDate, options) / 7;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInWeeks;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addHours } from \"./addHours.js\";\n\n/**\n * The {@link subHours} function options.\n */\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport function subHours(date, amount, options) {\n return addHours(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link subMilliseconds} function options.\n */\n\n/**\n * Subtract the specified number of milliseconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the milliseconds subtracted\n */\nexport function subMilliseconds(date, amount, options) {\n return addMilliseconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMilliseconds;\n","import { addMinutes } from \"./addMinutes.js\";\n\n/**\n * The {@link subMinutes} function options.\n */\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the minutes subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport function subMinutes(date, amount, options) {\n return addMinutes(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMinutes;\n","import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n const _date = toDate(date, options?.in);\n _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n","import { addQuarters } from \"./addQuarters.js\";\n\n/**\n * The {@link subQuarters} function options.\n */\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport function subQuarters(date, amount, options) {\n return addQuarters(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subQuarters;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addSeconds } from \"./addSeconds.js\";\n\n/**\n * The {@link subSeconds} function options.\n */\n\n/**\n * Subtract the specified number of seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport function subSeconds(date, amount, options) {\n return addSeconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subSeconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n","import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\n */\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","export var DurationPartType;\n(function (DurationPartType) {\n DurationPartType[\"Millisecond\"] = \"millisecond\";\n DurationPartType[\"Second\"] = \"second\";\n DurationPartType[\"Minute\"] = \"minute\";\n DurationPartType[\"Hour\"] = \"hour\";\n DurationPartType[\"Day\"] = \"day\";\n DurationPartType[\"Week\"] = \"weekOfYear\";\n DurationPartType[\"Month\"] = \"month\";\n DurationPartType[\"Quarter\"] = \"quarter\";\n DurationPartType[\"Year\"] = \"year\";\n})(DurationPartType || (DurationPartType = {}));\nexport const DurationPartMillisecond = {\n [DurationPartType.Millisecond]: 1,\n [DurationPartType.Second]: 1000,\n [DurationPartType.Minute]: 60000,\n [DurationPartType.Hour]: 3600000,\n [DurationPartType.Day]: 86400000,\n [DurationPartType.Week]: 604800000,\n [DurationPartType.Month]: 2629800000,\n [DurationPartType.Quarter]: 7889400000,\n [DurationPartType.Year]: 31557600000,\n};\nexport const DurationPartMillisecondToType = {\n 1: DurationPartType.Millisecond,\n 1000: DurationPartType.Second,\n 60000: DurationPartType.Minute,\n 3600000: DurationPartType.Hour,\n 86400000: DurationPartType.Day,\n 604800000: DurationPartType.Week,\n 2629800000: DurationPartType.Month,\n 7889400000: DurationPartType.Quarter,\n 31557600000: DurationPartType.Year,\n};\n//# sourceMappingURL=duration.js.map","export const DateTimeFields = [\n \"era\",\n \"year\",\n \"quarter\",\n \"month\",\n \"weekOfYear\",\n \"weekday\",\n \"day\",\n \"dayPeriod\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n];\nexport function getLocalizedDateTimeFields(locale) {\n const displayNames = new Intl.DisplayNames(locale, {\n type: \"dateTimeField\",\n });\n return DateTimeFields.reduce((acc, field) => {\n acc[field] = displayNames.of(field) ?? \"\";\n return acc;\n }, {});\n}\n//# sourceMappingURL=localized-date-time-fields.js.map","import { differenceInMilliseconds, differenceInDays, differenceInHours, differenceInMinutes, differenceInMonths, differenceInQuarters, differenceInSeconds, differenceInWeeks, differenceInYears, subDays, subHours, subMilliseconds, subMinutes, subMonths, subQuarters, subSeconds, subWeeks, subYears, } from 'date-fns';\nimport { DurationPartType } from '../types/duration.js';\n/**\n * 计算两个日期之间的时间间隔. 返回一个数组, 包含 {@link parts} 每个部分的值.\n *\n * @example duration(new Date(\"2022-01-01\"), new Date(\"2022-01-02\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 0, 0]\n * @example duration(new Date(\"2022-01-01 12:00:00\"), new Date(\"2022-01-02 12:30:00\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 30, 0]\n *\n * @param start\n * @param end\n * @param parts\n */\nexport function durationObject(start, end, parts) {\n let remain = end;\n const result = {};\n for (const part of parts) {\n let value = 0;\n switch (part) {\n case DurationPartType.Year:\n value = differenceInYears(remain, start);\n remain = subYears(remain, value);\n break;\n case DurationPartType.Quarter:\n value = differenceInQuarters(remain, start);\n remain = subQuarters(remain, value);\n break;\n case DurationPartType.Month:\n value = differenceInMonths(remain, start);\n remain = subMonths(remain, value);\n break;\n case DurationPartType.Week:\n value = differenceInWeeks(remain, start);\n remain = subWeeks(remain, value);\n break;\n case DurationPartType.Day:\n value = differenceInDays(remain, start);\n remain = subDays(remain, value);\n break;\n case DurationPartType.Hour:\n value = differenceInHours(remain, start);\n remain = subHours(remain, value);\n break;\n case DurationPartType.Minute:\n value = differenceInMinutes(remain, start);\n remain = subMinutes(remain, value);\n break;\n case DurationPartType.Second:\n value = differenceInSeconds(remain, start);\n remain = subSeconds(remain, value);\n break;\n case DurationPartType.Millisecond:\n value = differenceInMilliseconds(remain, start);\n remain = subMilliseconds(remain, value);\n break;\n default:\n throw new Error(`Unknown duration part: ${part}`);\n }\n result[part] = value;\n }\n return result;\n}\nexport function duration(start, end, parts) {\n const obj = durationObject(start, end, parts);\n return parts.map(part => obj[part]);\n}\n//# sourceMappingURL=duration.js.map","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { isNumber } from 'remeda';\nimport { DurationPartType } from '../types/duration.js';\nconst ISO8601DurationMarker = {\n [DurationPartType.Year]: 'Y',\n [DurationPartType.Month]: 'M',\n [DurationPartType.Week]: 'W',\n [DurationPartType.Day]: 'D',\n [DurationPartType.Hour]: 'H',\n [DurationPartType.Minute]: 'M',\n [DurationPartType.Second]: 'S',\n};\nconst DateParts = [\n DurationPartType.Year,\n DurationPartType.Month,\n DurationPartType.Week,\n DurationPartType.Day,\n];\nconst TimeParts = [\n DurationPartType.Hour,\n DurationPartType.Minute,\n DurationPartType.Second,\n];\nexport function iso8601Duration(duration) {\n const datePart = DateParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n const timePart = TimeParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n return `P${datePart.join('')}T${timePart.join('')}`;\n}\n//# sourceMappingURL=iso8601-duration.js.map","import { css } from 'lit';\nexport const timeredCounterDatetimeStyles = css `\n ::part(part-suffix) {\n font-size: 0.4em;\n line-height: 1;\n }\n`;\n//# sourceMappingURL=timered-counter-datetime-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isArray, isDate, isNullish, isString, map } from 'remeda';\nimport { isValid, toDate, isBefore } from 'date-fns';\nimport { TimeredCounter } from './timered-counter.js';\nimport { DurationPartMillisecond, DurationPartType } from './types/duration.js';\nimport { getLocalizedDateTimeFields } from './utils/localized-date-time-fields.js';\nimport { duration, durationObject } from './utils/duration.js';\nimport { iso8601Duration } from './utils/iso8601-duration.js';\nimport { timeredCounterDatetimeStyles } from './styles/timered-counter-datetime-styles.js';\nimport { parseJsonString } from './utils/parse-json-string.js';\n/**\n * 根据最小精度对 from 进行优化. 避免频繁更新.\n *\n * 1. from 先会被减小到 minPrecisionMs 的整数倍.\n * 2. 加上 to 余 minPrecisionMs 的值, 保证 from 与 to 的差值是 minPrecisionMs 的整数倍.\n */\nfunction optimizeFrom(from, to, minPrecision) {\n const minPrecisionMs = DurationPartMillisecond[minPrecision];\n const fromTS = from.getTime();\n const toTS = to.getTime();\n const base = fromTS - (fromTS % minPrecisionMs);\n return base + (toTS % minPrecisionMs);\n}\nfunction toDurationInMilliseconds(value, minPrecision) {\n if (isString(value))\n value = parseJsonString(value);\n if (!isArray(value))\n value = [value, value];\n const result = [\n isDate(value[0]) ? value[0] : toDate(value[0]),\n isDate(value[1]) ? value[1] : toDate(value[1]),\n ];\n if (!isValid(result[0]) || !isValid(result[1])) {\n throw new Error(`value ${value[0]} or ${value[1]} is not a valid date.`);\n }\n const durationInMilliseconds = Math.abs(result[1].getTime() - optimizeFrom(result[0], result[1], minPrecision));\n return {\n durationInMilliseconds,\n from: result[0],\n to: result[1],\n };\n}\nlet TimeredCounterDatetimeDuration = class TimeredCounterDatetimeDuration extends TimeredCounter {\n constructor() {\n super(...arguments);\n this.__precision = [DurationPartType.Second, DurationPartType.Day];\n this.__initialValuePlain = null;\n this.__partsOptions = null;\n this.__from = new Date();\n this.__to = new Date();\n this.__minPrecision = DurationPartType.Second;\n this.__maxPrecision = DurationPartType.Day;\n this.__availableDurationParts = [];\n this.__dateTimeFieldLabels = {};\n }\n /**\n * 计数器显示的精度.\n * 1. 当为单个值时, 仅显示该精度的时间部分.\n * 2. 当为数组时, 第一个值表示最小精度, 第二个值表示最大精度.\n *\n * @default [DurationPartType.Second, DurationPartType.Day]\n *\n * @example DurationPartType.Second 显示从年份到秒数的所有精度.\n * @example [DurationPartType.Second, DurationPartType.Day] 显示从天数到秒数的所有精度.\n * @example [DurationPartType.Millisecond, DurationPartType.Year] 显示从年份到毫秒的所有精度.\n */\n get precision() {\n return this.__precision;\n }\n set precision(value) {\n if (isString(value))\n value = parseJsonString(value);\n this.__precision = value;\n /**\n * `precision` 相关属性的更新需要立即更新, 以便于在 `value`, `initialValue` 等属性的 setter 中使用.\n */\n this.__minPrecision = isArray(this.__precision)\n ? this.__precision[0]\n : this.__precision;\n this.__maxPrecision = isArray(this.__precision)\n ? this.__precision[1]\n : this.__precision;\n this.__availableDurationParts = Object.values(DurationPartType)\n .reverse()\n .map(type => {\n const minPrecisionBreakpoint = DurationPartMillisecond[this.__minPrecision];\n const maxPrecisionBreakpoint = DurationPartMillisecond[this.__maxPrecision];\n const partMilliseconds = DurationPartMillisecond[type];\n return {\n type,\n available: partMilliseconds >= minPrecisionBreakpoint &&\n partMilliseconds <= maxPrecisionBreakpoint,\n };\n })\n .filter(part => part.available);\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持 Date 类型.\n */\n set value(value) {\n const { from, to, durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n this.__from = from;\n this.__to = to;\n super.value = durationInMilliseconds;\n }\n get initialValue() {\n return super.initialValue;\n }\n /**\n * 同 value\n */\n set initialValue(value) {\n this.__initialValuePlain = value;\n const { durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n super.initialValue = durationInMilliseconds;\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n minPlaces: [2, undefined],\n ...this.__partsOptions,\n };\n }\n sampleSplit(samples) {\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n const tempParts = availableDurationPartTypes.map(() => []);\n for (const n of samples) {\n const num = this.numberAdapter.toNumber(n);\n /**\n * 计算并保存每个在 {@link precision} 范围内的时间部分的值\n */\n const availablePartValues = duration(new Date(Math.min(num, 0)), new Date(Math.max(num, 0)), availableDurationPartTypes);\n availablePartValues.forEach((value, i) => tempParts[i].push(value));\n }\n return tempParts;\n }\n generateAriaLabel() {\n return iso8601Duration(durationObject(isBefore(this.__from, this.__to) ? this.__from : this.__to, isBefore(this.__from, this.__to) ? this.__to : this.__from, map(this.__availableDurationParts, part => part.type)));\n }\n connectedCallback() {\n this.role = 'timer';\n /**\n * TimeredCounterDatetimeDuration 将 `minPlaces` 默认设置为 `[2]`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n this.initialValue = this.__initialValuePlain;\n /**\n * 类似上方的 partsOptions, precision 也需要在初始化时手动触发 setter. 以此确保 __minPrecision, __maxPrecision, __availableDurationParts 有值.\n */\n this.precision = this.__precision;\n super.connectedCallback();\n }\n shouldRebuildParts(changedProperties) {\n return (super.shouldRebuildParts(changedProperties) ||\n changedProperties.has('precision'));\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('locale')) {\n this.__dateTimeFieldLabels = getLocalizedDateTimeFields(this.localeInstance);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n ><slot name=\"prefix\" slot=\"prefix\"></slot\n ><slot name=\"suffix\" slot=\"suffix\"></slot>${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<span slot=${`part-suffix-${partIndex}`} class=\"duration-unit\"\n >${this.__dateTimeFieldLabels[availableDurationPartTypes[partIndex]]}</span\n >`)}\n </timered-counter-roller>\n `;\n }\n};\nTimeredCounterDatetimeDuration.styles = [...TimeredCounter.styles, timeredCounterDatetimeStyles];\n__decorate([\n property({\n reflect: true,\n converter: value => {\n if (isNullish(value))\n return value;\n return parseJsonString(value);\n },\n })\n], TimeredCounterDatetimeDuration.prototype, \"precision\", null);\nTimeredCounterDatetimeDuration = __decorate([\n customElement('timered-counter-datetime-duration')\n], TimeredCounterDatetimeDuration);\nexport { TimeredCounterDatetimeDuration };\n//# sourceMappingURL=timered-counter-datetime-duration.js.map","// export {\n// easeIn,\n// easeOut,\n// easeInOut,\n// anticipate,\n// steps,\n// cubicBezier,\n// } from \"motion\";\nexport const linear = (x) => x;\n//# sourceMappingURL=easing-functions.js.map"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","value","get","SuppressedError","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$6","constructor","this","_$cssResult$","Error","cssText","styleSheet","replaceSync","set","toString","reduce","n","cssRules","is","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","enumerable","getPropertyOptions","hasOwnProperty","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","x","_$litType$","strings","values","T","for","E","A","C","createTreeWalker","N","parts","lastIndex","exec","test","startsWith","V","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M$1","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","M","_$AP","remove","setConnected","k$1","element","fill","j","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","Z","litHtmlPolyfillSupport","litHtmlVersions","r$5","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","customElements","define","init","querySelector","i$2","_$Ct","_$Ci","_$AQ","dt","ut","w","done","hasNext","lazy","lazyArgs","assign","isSingle","single","items","B","at","entries","hasMany","next","isNaN","Date","splice","getTime","extractPartOption","option","getterOptions","groupOption","isFunction","extractGroupOption","result","extractPartDigitOption","extractedOption","digits","partOption","extractPartDigitCellOption","digitData","partDigitOption","mergeGroupOption","source","merge","mergePartOption","from","concat","parseInt","mergePartDigitOption","CounterStylesMixin","superClass","CounterStylesMixinClass","cellStyles","cachedCellStyles","digitStyles","cachedDigitStyles","partStyles","cachedPartStyles","color","extractCellStyles","preprocessData","partPreprocessDataList","direction","oldValue","mergePartDigitCellOption","cellStylesDynamic","isDeepEqual","extractDigitStyles","digitStylesDynamic","extractPartStyles","partStylesDynamic","property","zip","matrix","valueof","min","undefined","transpose","row","rollerPartTest","newDirection","oldDirection","newDigits","oldDigits","animate","cancelPrevAnimation","earlyReturn","parseJsonString","error","preprocessPartsOptions","digitToChar","char","fromCodePoint","isObjectType","CounterPartsMixin","_a","_CounterPartsMixinClass___partsOptions","CounterPartsMixinClass","DEFAULT_PARTS_OPTIONS","oldParts","partsOptions","old","__classPrivateFieldSet","sampling","to","na","count","_count","interpolateFunc","isInteger","round","mul","sub","create","interpolateRound","interpolateNumber","eq","percent","div","max","transitionDigit","numberAdapter","sampleCount","sampleSplit","samples","sampleToString","shouldRebuildParts","changedProperties","processPartData","newData","oldData","results","globalIndex","newPart","oldPart","partDataResults","newDigit","oldDigit","find","place","partIndex","digitIndex","preprocessPartData","decimalSeparator","minPlaces","fillChar","_sampleToString","tempParts","directionValue","gt","partData","tailNumber","minIntegerPlaces","minDecimalPlaces","numberParts","integerPlaces","stringAdapter","stringToChars","decimalPlaces","integer","decimal","integerChars","decimalChars","filledIntegerPlaces","filledDecimalPlaces","filledChars","digitList","array","filter","digit","digitArray","BuildInNumberAdapter","num","isFinite","compare","gte","lt","lte","isNegative","isPositive","isZero","abs","ceil","floor","toNumber","BuildInStringAdapter","TimeredCounterAdapter","setNumberAdapter","adapterOrType","adapter","isString","keywords","adapterFactory","AVAILABLE_NUMBER_ADAPTERS","includes","NUMBER_ADAPTER","setStringAdapter","AVAILABLE_STRING_ADAPTERS","STRING_ADAPTER","registerNumberAdapter","keyword","registerStringAdapter","registryAdapter","register","locales","segmenter","Intl","Segmenter","granularity","segment","VALUE_CONVERTER","isNullish","CounterBaseMixin","CounterBaseMixinClass","__value","trim","__oldValue","initialValue","__initialValue","locale","__locale","localeInstance","Locale","args","isNonNullish","timeredCounterStyles","css","CounterAnimationMixin","CounterAnimationMixinClass","animationOptions","cachedAnimationOptions","keyframes","cachedKeyframes","extractAnimationOptions","animationOptionsDynamic","extractKeyframes","keyframesDynamic","replace","style","ft","removeProperty","setProperty","join","st","nt","classList","rollerStyles","rollerDigitStyles","noop","any","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","c4","PI","sin","easeOutElastic","easeInOutElastic","c5","easeOutBounce","n1","d1","easeInBounce","easeInOutBounce","RollerDigitAnimationEvent","Event","TimeredCounterRollerDigit","textStyle","cellStyle","digitWidth","resizeObserver","ResizeObserver","clonedRollDigitList","offsetWidth","_changedProperties","observe","disconnect","intersection","shouldAnimate","startAnimation","then","shadowCellStyle","omit","html","styleMap","width","repeat","classMap","animation","cancel","rollList","__emitAnimationStart","anmOptions","duration","iterations","easing","isEmpty","up","transform","down","EasingFunctions","func","range","clearAnimation","__emitAnimationEnd","console","dispatchEvent","query","customElement","RollerAnimationEvent","TimeredCounterRoller","parentContainerRect","__partDigitsColorStyles","digitAnimateEndCount","digitAnimatedCount","part","digitInfo","__handleDigitAnimationEnd","__generatePartDigitsColorStyles","containerRect","prefixContainer","suffixContainer","partDigitElements","querySelectorAll","partId","dataset","digitId","isNumber","CSS","supports","backgroundImage","backgroundClip","backgroundSize","offsetHeight","backgroundPositionX","offsetLeft","backgroundPositionY","offsetTop","backgroundRepeat","warn","CounterAiraMixin","CounterAiraMixinClass","ariaLabel","ariaLive","generateAriaLabel","label","TimeredCounterAnimationEvent","exports","TimeredCounter","partsContainerRect","partsContainer","getBoundingClientRect","DOMRect","dispatchTimeredCounterAnimationStart","dispatchTimeredCounterAnimationEnd","timeredCounterNumberStyles","TimeredCounterNumber","localeNumber","localeNumberInstance","NumberFormat","isBoolean","localDecimalSeparator","localeGroupingSeparator","format","formatToParts","groupingSeparator","oldPartsOptions","timeredCounterStringStyles","anyBase","sa","srcAlphabet","dstAlphabet","number","divide","newLen","numberMap","fromBase","toBase","alphabet","isValid","convert","REPLACED_CHARS","TimeredCounterString","__alphabet","__initialValueString","__valueString","__oldValueString","__partsOptions","__decimalToAnyBase","__anyBaseToDecimal","__updateAlphabet","allChars","charSet","sort","millisecondsInHour","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","NaN","setDate","getDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getMonth","setFullYear","getFullYear","addMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","normalizeDates","dates","normalize","bind","startOfDay","setHours","compareAsc","dateLeft","dateRight","diff","differenceInDays","laterDate","earlierDate","laterDate_","earlierDate_","sign","compareLocalAsc","difference","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","differenceInCalendarDays","getRoundingMethod","method","trunc","differenceInHours","roundingMethod","differenceInMilliseconds","differenceInMinutes","isLastDayOfMonth","endOfDay","month","endOfMonth","differenceInMonths","workingLaterDate","differenceInCalendarMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","differenceInCalendarYears","isBefore","dateToCompare","subDays","subHours","addHours","subMilliseconds","subMinutes","setTime","addMinutes","subQuarters","addQuarters","subSeconds","addSeconds","subWeeks","addWeeks","subYears","addYears","DurationPartType","DurationPartMillisecond","Millisecond","Second","Minute","Hour","Day","Week","Month","Quarter","Year","DurationPartMillisecondToType","DateTimeFields","durationObject","start","end","remain","obj","ISO8601DurationMarker","DateParts","TimeParts","timeredCounterDatetimeStyles","toDurationInMilliseconds","minPrecision","isDate","durationInMilliseconds","minPrecisionMs","fromTS","optimizeFrom","TimeredCounterDatetimeDuration","__precision","__initialValuePlain","__from","__to","__minPrecision","__maxPrecision","__availableDurationParts","__dateTimeFieldLabels","precision","minPrecisionBreakpoint","maxPrecisionBreakpoint","partMilliseconds","available","availableDurationPartTypes","datePart","timePart","iso8601Duration","role","displayNames","DisplayNames","acc","field","of","getLocalizedDateTimeFields"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,37,41,48,51,52,58,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,112]}