@richardmcquiston01/dashboard-widgets-toolkit 0.11.2 → 0.13.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.
- package/dist/core.cjs +251 -0
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +57 -3
- package/dist/core.d.ts +57 -3
- package/dist/core.js +250 -1
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +251 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +250 -1
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +109 -106
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +8 -2
- package/dist/react.d.ts +8 -2
- package/dist/react.js +109 -106
- package/dist/react.js.map +1 -1
- package/dist/{storage-VaaysVnZ.d.cts → storage-DNB7gjvT.d.cts} +1 -1
- package/dist/{storage-VaaysVnZ.d.ts → storage-DNB7gjvT.d.ts} +1 -1
- package/dist/styles.css +11 -6
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LegacyWidgetDefinition, MAX_REPORTED_PROBLEMS, RefreshOptions, ValidateWidgetDataOptions, WidgetLoader, WidgetLoaderOptions, createWidgetLoader, fromLegacyDefinition, isSafeHref, isSafeImageUrl, upgradeLegacyWidgetData, validateWidgetData, validateWidgetDefinition } from './core.cjs';
|
|
2
|
-
export { s as AddPageOptions, t as AlertListItem, A as AlertListWidgetData, u as BarListItem, B as BarListWidgetData, v as BooleanOption, C as CachedPayload, w as ChoiceOption, x as ColorOption, y as ColumnsOption, z as ConflictPolicy, E as DATE_RANGE_PRESETS, F as DEFAULT_COMPARISON_LABEL, H as DEFAULT_CURRENCY, I as DEFAULT_DETAIL_PAGE_SIZE, J as DEFAULT_EMPTY_TEXT, M as DEFAULT_MAX_LAYOUT_BYTES, Q as DEFAULT_PAGE_KEY, U as DEFAULT_PAGE_ROWS, V as DETAIL_MODES, f as DashboardLayout, D as DashboardWidget, X as DateRangeOption, Y as DateRangePreset, Z as DeltaDirection, _ as DeltaSentiment, $ as DetailCell, a0 as DetailColumn, d as DetailData, a1 as DetailMode, a2 as DetailPage, a3 as DetailProvider, c as DetailProviderOptions, a4 as DetailProviders, e as DetailQuery, h as DetailSort, a5 as EMPTY_LAYOUT, a6 as EmptyWidget, a7 as EncodingOptions, a8 as EnforceLocksOptions, a9 as Err, aa as ErrorWidget, ab as FormatOptions, g as GaugeWidgetData, ac as GraphPoint, ad as GraphSeries, G as GraphWidgetData, ae as GridItem, af as KpiDelta, ag as KpiDeltaOptions, K as KpiWidgetData, ah as LAYOUT_ENVELOPE_VERSION, ai as LayoutItem, aj as LayoutPage, k as LayoutPersistence, ak as LayoutPersistenceOptions, al as LoadedLayout, am as LoadingWidget, L as Locale, an as MAX_DETAIL_PAGE_SIZE, ao as MAX_GRAPH_SERIES, ap as MAX_PAGE_ROWS, aq as MAX_PAGE_TITLE_LENGTH, ar as MAX_PARSED_PAGES, as as MAX_TEXT_OPTION_LENGTH, at as MAX_WIDGET_OPTIONS, au as MAX_WIDGET_WIDTH, av as MIN_WIDGET_WIDTH, N as NiceDomain, l as NormalizeOptions, aw as NumberOption, ax as OPTION_KEY_PATTERN, ay as Ok, az as OkWidget, aA as OptionContext, aB as OptionValue, O as OptionValues, P as PageItem, aC as PageOptions, aD as PageRoom, aE as PlacedRow, aF as ProviderOptions, m as ResolveOptions, aG as ResolvedDetailOptions, R as ResolvedTableControls, aH as ResolvedWidget, aI as ResolvedWidgetLock,
|
|
1
|
+
export { LegacyWidgetDefinition, MAX_REPORTED_PROBLEMS, RefreshOptions, THEME_TOKEN_VARIABLES, ThemeColorKey, ThemeLengthKey, ThemeMode, ThemeOptions, ThemeTokenKey, ThemeTokens, ValidateWidgetDataOptions, WidgetLoader, WidgetLoaderOptions, WidgetThemeStyles, createTheme, createWidgetLoader, fromLegacyDefinition, isSafeHref, isSafeImageUrl, upgradeLegacyWidgetData, validateWidgetData, validateWidgetDefinition } from './core.cjs';
|
|
2
|
+
export { s as AddPageOptions, t as AlertListItem, A as AlertListWidgetData, u as BarListItem, B as BarListWidgetData, v as BooleanOption, C as CachedPayload, w as ChoiceOption, x as ColorOption, y as ColumnsOption, z as ConflictPolicy, E as DATE_RANGE_PRESETS, F as DEFAULT_COMPARISON_LABEL, H as DEFAULT_CURRENCY, I as DEFAULT_DETAIL_PAGE_SIZE, J as DEFAULT_EMPTY_TEXT, M as DEFAULT_MAX_LAYOUT_BYTES, Q as DEFAULT_PAGE_KEY, U as DEFAULT_PAGE_ROWS, V as DETAIL_MODES, f as DashboardLayout, D as DashboardWidget, X as DateRangeOption, Y as DateRangePreset, Z as DeltaDirection, _ as DeltaSentiment, $ as DetailCell, a0 as DetailColumn, d as DetailData, a1 as DetailMode, a2 as DetailPage, a3 as DetailProvider, c as DetailProviderOptions, a4 as DetailProviders, e as DetailQuery, h as DetailSort, a5 as EMPTY_LAYOUT, a6 as EmptyWidget, a7 as EncodingOptions, a8 as EnforceLocksOptions, a9 as Err, aa as ErrorWidget, ab as FormatOptions, g as GaugeWidgetData, ac as GraphPoint, ad as GraphSeries, G as GraphWidgetData, ae as GridItem, af as KpiDelta, ag as KpiDeltaOptions, K as KpiWidgetData, ah as LAYOUT_ENVELOPE_VERSION, ai as LayoutItem, aj as LayoutPage, k as LayoutPersistence, ak as LayoutPersistenceOptions, al as LoadedLayout, am as LoadingWidget, L as Locale, an as MAX_DETAIL_PAGE_SIZE, ao as MAX_GRAPH_SERIES, ap as MAX_PAGE_ROWS, aq as MAX_PAGE_TITLE_LENGTH, ar as MAX_PARSED_PAGES, as as MAX_TEXT_OPTION_LENGTH, at as MAX_WIDGET_OPTIONS, au as MAX_WIDGET_WIDTH, av as MIN_WIDGET_WIDTH, N as NiceDomain, l as NormalizeOptions, aw as NumberOption, ax as OPTION_KEY_PATTERN, ay as Ok, az as OkWidget, aA as OptionContext, aB as OptionValue, O as OptionValues, P as PageItem, aC as PageOptions, aD as PageRoom, aE as PlacedRow, aF as ProviderOptions, m as ResolveOptions, aG as ResolvedDetailOptions, R as ResolvedTableControls, aH as ResolvedWidget, aI as ResolvedWidgetLock, p as Result, aJ as RetryOptions, aK as SaveOptions, aL as SavedLayout, aM as SortDirection, aN as SortOption, aO as StorageAdapter, aP as StorageLogEvent, aQ as StoreErrorCode, aR as StoreResult, S as StoreScope, aS as StoredValue, aT as TableCell, aU as TableColumn, T as TableWidgetData, aV as TextOption, i as TextWidgetData, aW as VALUE_FORMATS, aX as ValueFormat, aY as WIDGET_FILLS, aZ as WIDGET_KINDS, a_ as WIDGET_OPTION_TYPES, a$ as WIDGET_SIZES, b0 as WIDTH_COLUMNS, b1 as WidgetCache, n as WidgetContext, j as WidgetData, b2 as WidgetDataOf, b as WidgetDefinition, b3 as WidgetDetailOptions, b4 as WidgetEmptyState, a as WidgetFill, q as WidgetKind, b5 as WidgetLock, b6 as WidgetOption, r as WidgetPayload, b7 as WidgetProvider, o as WidgetProviders, W as WidgetSize, b8 as WidgetStatus, b9 as WidgetTableControls, ba as addPage, bb as applyClientOptions, bc as assignPages, bd as baseColumnSpan, be as cacheKeyFor, bf as coerceOptionValue, bg as createLayoutPersistence, bh as defaultDetailQuery, bi as defaultOptionValue, bj as defineWidget, bk as deriveDetailData, bl as describeUnknownError, bm as emptyTextFor, bn as emptyWidget, bo as enforceLocks, bp as err, bq as failedWidget, br as fillColumnSpans, bs as fillWidthSpans, bt as fillsHeight, bu as fillsWidth, bv as finalizeWidget, bw as fitCount, bx as formatCount, by as formatPercentChange, bz as formatValue, bA as hasPages, bB as hiddenWidgets, bC as hideWidget, bD as isClientApplied, bE as isColumnKeyFor, bF as isHidden, bG as isIsoInterval, bH as isMinimized, bI as isWidgetEmptyState, bJ as isWidgetKind, bK as isWidgetVisibleTo, bL as isWidgetWidth, bM as itemWidth, bN as kpiDelta, bO as labelStride, bP as loadingWidgets, bQ as memoryAdapter, bR as minimizeWidget, bS as movePage, bT as moveWidget, bU as moveWidgetBy, bV as moveWidgetDown, bW as moveWidgetToPage, bX as moveWidgetUp, bY as nextPageKey, bZ as niceDomain, b_ as niceStep, b$ as normalizeLayout, c0 as ok, c1 as optionValuesFor, c2 as optionsCacheSuffix, c3 as pageLayout, c4 as pageList, c5 as pageOf, c6 as pageRoom, c7 as pageWidgets, c8 as parseDetailQuery, c9 as parseLayout, ca as parseSortValue, cb as percentChange, cc as placeRows, cd as pruneLayout, ce as queryRows, cf as readOnly, cg as removePage, ch as renamePage, ci as resolveDateRange, cj as resolveDetailOptions, ck as resolveOptionValues, cl as resolvePageKey, cm as resolvePayload, cn as resolveTableControls, co as resolveWidget, cp as resolveWidgetLock, cq as resolveWidgetUnapplied, cr as resolveWidgets, cs as restoreWidget, ct as sameOptionValues, cu as serializeDetailQuery, cv as serializeLayout, cw as shareOf, cx as showWidget, cy as sortDefinitions, cz as sortFromOptions, cA as tableDetailData, cB as toggleHidden, cC as toggleMinimized, cD as usesWidthColumns, cE as utf8Length, cF as validateDetailData, cG as visibleWidgets, cH as widgetsFor, cI as widthForSize, cJ as withEncoding, cK as withFallback, cL as withLogging, cM as withPageLayout, cN as withPrefix, cO as withReadCache, cP as withRetry } from './storage-DNB7gjvT.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LegacyWidgetDefinition, MAX_REPORTED_PROBLEMS, RefreshOptions, ValidateWidgetDataOptions, WidgetLoader, WidgetLoaderOptions, createWidgetLoader, fromLegacyDefinition, isSafeHref, isSafeImageUrl, upgradeLegacyWidgetData, validateWidgetData, validateWidgetDefinition } from './core.js';
|
|
2
|
-
export { s as AddPageOptions, t as AlertListItem, A as AlertListWidgetData, u as BarListItem, B as BarListWidgetData, v as BooleanOption, C as CachedPayload, w as ChoiceOption, x as ColorOption, y as ColumnsOption, z as ConflictPolicy, E as DATE_RANGE_PRESETS, F as DEFAULT_COMPARISON_LABEL, H as DEFAULT_CURRENCY, I as DEFAULT_DETAIL_PAGE_SIZE, J as DEFAULT_EMPTY_TEXT, M as DEFAULT_MAX_LAYOUT_BYTES, Q as DEFAULT_PAGE_KEY, U as DEFAULT_PAGE_ROWS, V as DETAIL_MODES, f as DashboardLayout, D as DashboardWidget, X as DateRangeOption, Y as DateRangePreset, Z as DeltaDirection, _ as DeltaSentiment, $ as DetailCell, a0 as DetailColumn, d as DetailData, a1 as DetailMode, a2 as DetailPage, a3 as DetailProvider, c as DetailProviderOptions, a4 as DetailProviders, e as DetailQuery, h as DetailSort, a5 as EMPTY_LAYOUT, a6 as EmptyWidget, a7 as EncodingOptions, a8 as EnforceLocksOptions, a9 as Err, aa as ErrorWidget, ab as FormatOptions, g as GaugeWidgetData, ac as GraphPoint, ad as GraphSeries, G as GraphWidgetData, ae as GridItem, af as KpiDelta, ag as KpiDeltaOptions, K as KpiWidgetData, ah as LAYOUT_ENVELOPE_VERSION, ai as LayoutItem, aj as LayoutPage, k as LayoutPersistence, ak as LayoutPersistenceOptions, al as LoadedLayout, am as LoadingWidget, L as Locale, an as MAX_DETAIL_PAGE_SIZE, ao as MAX_GRAPH_SERIES, ap as MAX_PAGE_ROWS, aq as MAX_PAGE_TITLE_LENGTH, ar as MAX_PARSED_PAGES, as as MAX_TEXT_OPTION_LENGTH, at as MAX_WIDGET_OPTIONS, au as MAX_WIDGET_WIDTH, av as MIN_WIDGET_WIDTH, N as NiceDomain, l as NormalizeOptions, aw as NumberOption, ax as OPTION_KEY_PATTERN, ay as Ok, az as OkWidget, aA as OptionContext, aB as OptionValue, O as OptionValues, P as PageItem, aC as PageOptions, aD as PageRoom, aE as PlacedRow, aF as ProviderOptions, m as ResolveOptions, aG as ResolvedDetailOptions, R as ResolvedTableControls, aH as ResolvedWidget, aI as ResolvedWidgetLock,
|
|
1
|
+
export { LegacyWidgetDefinition, MAX_REPORTED_PROBLEMS, RefreshOptions, THEME_TOKEN_VARIABLES, ThemeColorKey, ThemeLengthKey, ThemeMode, ThemeOptions, ThemeTokenKey, ThemeTokens, ValidateWidgetDataOptions, WidgetLoader, WidgetLoaderOptions, WidgetThemeStyles, createTheme, createWidgetLoader, fromLegacyDefinition, isSafeHref, isSafeImageUrl, upgradeLegacyWidgetData, validateWidgetData, validateWidgetDefinition } from './core.js';
|
|
2
|
+
export { s as AddPageOptions, t as AlertListItem, A as AlertListWidgetData, u as BarListItem, B as BarListWidgetData, v as BooleanOption, C as CachedPayload, w as ChoiceOption, x as ColorOption, y as ColumnsOption, z as ConflictPolicy, E as DATE_RANGE_PRESETS, F as DEFAULT_COMPARISON_LABEL, H as DEFAULT_CURRENCY, I as DEFAULT_DETAIL_PAGE_SIZE, J as DEFAULT_EMPTY_TEXT, M as DEFAULT_MAX_LAYOUT_BYTES, Q as DEFAULT_PAGE_KEY, U as DEFAULT_PAGE_ROWS, V as DETAIL_MODES, f as DashboardLayout, D as DashboardWidget, X as DateRangeOption, Y as DateRangePreset, Z as DeltaDirection, _ as DeltaSentiment, $ as DetailCell, a0 as DetailColumn, d as DetailData, a1 as DetailMode, a2 as DetailPage, a3 as DetailProvider, c as DetailProviderOptions, a4 as DetailProviders, e as DetailQuery, h as DetailSort, a5 as EMPTY_LAYOUT, a6 as EmptyWidget, a7 as EncodingOptions, a8 as EnforceLocksOptions, a9 as Err, aa as ErrorWidget, ab as FormatOptions, g as GaugeWidgetData, ac as GraphPoint, ad as GraphSeries, G as GraphWidgetData, ae as GridItem, af as KpiDelta, ag as KpiDeltaOptions, K as KpiWidgetData, ah as LAYOUT_ENVELOPE_VERSION, ai as LayoutItem, aj as LayoutPage, k as LayoutPersistence, ak as LayoutPersistenceOptions, al as LoadedLayout, am as LoadingWidget, L as Locale, an as MAX_DETAIL_PAGE_SIZE, ao as MAX_GRAPH_SERIES, ap as MAX_PAGE_ROWS, aq as MAX_PAGE_TITLE_LENGTH, ar as MAX_PARSED_PAGES, as as MAX_TEXT_OPTION_LENGTH, at as MAX_WIDGET_OPTIONS, au as MAX_WIDGET_WIDTH, av as MIN_WIDGET_WIDTH, N as NiceDomain, l as NormalizeOptions, aw as NumberOption, ax as OPTION_KEY_PATTERN, ay as Ok, az as OkWidget, aA as OptionContext, aB as OptionValue, O as OptionValues, P as PageItem, aC as PageOptions, aD as PageRoom, aE as PlacedRow, aF as ProviderOptions, m as ResolveOptions, aG as ResolvedDetailOptions, R as ResolvedTableControls, aH as ResolvedWidget, aI as ResolvedWidgetLock, p as Result, aJ as RetryOptions, aK as SaveOptions, aL as SavedLayout, aM as SortDirection, aN as SortOption, aO as StorageAdapter, aP as StorageLogEvent, aQ as StoreErrorCode, aR as StoreResult, S as StoreScope, aS as StoredValue, aT as TableCell, aU as TableColumn, T as TableWidgetData, aV as TextOption, i as TextWidgetData, aW as VALUE_FORMATS, aX as ValueFormat, aY as WIDGET_FILLS, aZ as WIDGET_KINDS, a_ as WIDGET_OPTION_TYPES, a$ as WIDGET_SIZES, b0 as WIDTH_COLUMNS, b1 as WidgetCache, n as WidgetContext, j as WidgetData, b2 as WidgetDataOf, b as WidgetDefinition, b3 as WidgetDetailOptions, b4 as WidgetEmptyState, a as WidgetFill, q as WidgetKind, b5 as WidgetLock, b6 as WidgetOption, r as WidgetPayload, b7 as WidgetProvider, o as WidgetProviders, W as WidgetSize, b8 as WidgetStatus, b9 as WidgetTableControls, ba as addPage, bb as applyClientOptions, bc as assignPages, bd as baseColumnSpan, be as cacheKeyFor, bf as coerceOptionValue, bg as createLayoutPersistence, bh as defaultDetailQuery, bi as defaultOptionValue, bj as defineWidget, bk as deriveDetailData, bl as describeUnknownError, bm as emptyTextFor, bn as emptyWidget, bo as enforceLocks, bp as err, bq as failedWidget, br as fillColumnSpans, bs as fillWidthSpans, bt as fillsHeight, bu as fillsWidth, bv as finalizeWidget, bw as fitCount, bx as formatCount, by as formatPercentChange, bz as formatValue, bA as hasPages, bB as hiddenWidgets, bC as hideWidget, bD as isClientApplied, bE as isColumnKeyFor, bF as isHidden, bG as isIsoInterval, bH as isMinimized, bI as isWidgetEmptyState, bJ as isWidgetKind, bK as isWidgetVisibleTo, bL as isWidgetWidth, bM as itemWidth, bN as kpiDelta, bO as labelStride, bP as loadingWidgets, bQ as memoryAdapter, bR as minimizeWidget, bS as movePage, bT as moveWidget, bU as moveWidgetBy, bV as moveWidgetDown, bW as moveWidgetToPage, bX as moveWidgetUp, bY as nextPageKey, bZ as niceDomain, b_ as niceStep, b$ as normalizeLayout, c0 as ok, c1 as optionValuesFor, c2 as optionsCacheSuffix, c3 as pageLayout, c4 as pageList, c5 as pageOf, c6 as pageRoom, c7 as pageWidgets, c8 as parseDetailQuery, c9 as parseLayout, ca as parseSortValue, cb as percentChange, cc as placeRows, cd as pruneLayout, ce as queryRows, cf as readOnly, cg as removePage, ch as renamePage, ci as resolveDateRange, cj as resolveDetailOptions, ck as resolveOptionValues, cl as resolvePageKey, cm as resolvePayload, cn as resolveTableControls, co as resolveWidget, cp as resolveWidgetLock, cq as resolveWidgetUnapplied, cr as resolveWidgets, cs as restoreWidget, ct as sameOptionValues, cu as serializeDetailQuery, cv as serializeLayout, cw as shareOf, cx as showWidget, cy as sortDefinitions, cz as sortFromOptions, cA as tableDetailData, cB as toggleHidden, cC as toggleMinimized, cD as usesWidthColumns, cE as utf8Length, cF as validateDetailData, cG as visibleWidgets, cH as widgetsFor, cI as widthForSize, cJ as withEncoding, cK as withFallback, cL as withLogging, cM as withPageLayout, cN as withPrefix, cO as withReadCache, cP as withRetry } from './storage-DNB7gjvT.js';
|
package/dist/index.js
CHANGED
|
@@ -3234,6 +3234,255 @@ function createLayoutPersistence(adapter, options = {}) {
|
|
|
3234
3234
|
};
|
|
3235
3235
|
}
|
|
3236
3236
|
|
|
3237
|
-
|
|
3237
|
+
// src/core/theme.ts
|
|
3238
|
+
var THEME_TOKEN_VARIABLES = {
|
|
3239
|
+
font: "--dwt-font",
|
|
3240
|
+
surface: "--dwt-surface",
|
|
3241
|
+
page: "--dwt-page",
|
|
3242
|
+
text: "--dwt-text",
|
|
3243
|
+
textSecondary: "--dwt-text-secondary",
|
|
3244
|
+
textMuted: "--dwt-text-muted",
|
|
3245
|
+
border: "--dwt-border",
|
|
3246
|
+
grid: "--dwt-grid",
|
|
3247
|
+
baseline: "--dwt-baseline",
|
|
3248
|
+
crosshair: "--dwt-crosshair",
|
|
3249
|
+
link: "--dwt-link",
|
|
3250
|
+
focus: "--dwt-focus",
|
|
3251
|
+
good: "--dwt-good",
|
|
3252
|
+
bad: "--dwt-bad",
|
|
3253
|
+
meterTrack: "--dwt-meter-track",
|
|
3254
|
+
barTrack: "--dwt-bar-track",
|
|
3255
|
+
buttonHover: "--dwt-button-hover",
|
|
3256
|
+
radius: "--dwt-radius",
|
|
3257
|
+
gap: "--dwt-gap",
|
|
3258
|
+
padding: "--dwt-padding",
|
|
3259
|
+
minColumn: "--dwt-min-column"
|
|
3260
|
+
};
|
|
3261
|
+
var LENGTH_KEYS = /* @__PURE__ */ new Set([
|
|
3262
|
+
"radius",
|
|
3263
|
+
"gap",
|
|
3264
|
+
"padding",
|
|
3265
|
+
"minColumn"
|
|
3266
|
+
]);
|
|
3267
|
+
function kindOf(key) {
|
|
3268
|
+
if (key === "font") {
|
|
3269
|
+
return "font";
|
|
3270
|
+
}
|
|
3271
|
+
return LENGTH_KEYS.has(key) ? "length" : "color";
|
|
3272
|
+
}
|
|
3273
|
+
var NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
3274
|
+
var SCOPE_PATTERN = /^[A-Za-z0-9_\-[\]=.# '"]+$/;
|
|
3275
|
+
var HEX_COLOR = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
3276
|
+
var COLOR_FUNCTION = /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color|color-mix|light-dark)\(.+\)$/i;
|
|
3277
|
+
var VAR_REFERENCE = /^var\(\s*--[A-Za-z0-9_-]+\s*(?:,.+)?\)$/;
|
|
3278
|
+
var COLOR_KEYWORD = /^[A-Za-z]+$/;
|
|
3279
|
+
var LENGTH_VALUE = /^(?:0|-?(?:\d+\.?\d*|\.\d+)(?:px|rem|em|%|ch|vw|vh|cqw|cqh))$/;
|
|
3280
|
+
var LENGTH_FUNCTION = /^(?:calc|min|max|clamp)\(.+\)$/i;
|
|
3281
|
+
var FONT_VALUE = /^[A-Za-z0-9 ,'"_-]+$/;
|
|
3282
|
+
function unsafeReason(value) {
|
|
3283
|
+
if ([...value].some(
|
|
3284
|
+
(character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127
|
|
3285
|
+
)) {
|
|
3286
|
+
return "contains a control character or line break";
|
|
3287
|
+
}
|
|
3288
|
+
if (/[;{}<>\\@]/.test(value)) {
|
|
3289
|
+
return "contains one of ; { } < > \\ @";
|
|
3290
|
+
}
|
|
3291
|
+
const lower = value.toLowerCase();
|
|
3292
|
+
if (lower.includes("/*") || lower.includes("*/")) {
|
|
3293
|
+
return "contains a comment marker";
|
|
3294
|
+
}
|
|
3295
|
+
if (lower.includes("url(") || lower.includes("expression(")) {
|
|
3296
|
+
return "contains url( or expression(";
|
|
3297
|
+
}
|
|
3298
|
+
let depth = 0;
|
|
3299
|
+
for (const character of value) {
|
|
3300
|
+
if (character === "(") {
|
|
3301
|
+
depth += 1;
|
|
3302
|
+
} else if (character === ")") {
|
|
3303
|
+
depth -= 1;
|
|
3304
|
+
if (depth < 0) {
|
|
3305
|
+
return "has unbalanced parentheses";
|
|
3306
|
+
}
|
|
3307
|
+
}
|
|
3308
|
+
}
|
|
3309
|
+
return depth === 0 ? null : "has unbalanced parentheses";
|
|
3310
|
+
}
|
|
3311
|
+
function countOf(value, character) {
|
|
3312
|
+
return value.split(character).length - 1;
|
|
3313
|
+
}
|
|
3314
|
+
function invalidReason(kind, value) {
|
|
3315
|
+
if (value !== value.trim() || value === "") {
|
|
3316
|
+
return "must not be empty or have leading or trailing spaces";
|
|
3317
|
+
}
|
|
3318
|
+
if (kind === "font") {
|
|
3319
|
+
if (!FONT_VALUE.test(value)) {
|
|
3320
|
+
return "allows only letters, digits, spaces, commas, hyphens, underscores and quotes";
|
|
3321
|
+
}
|
|
3322
|
+
if (countOf(value, "'") % 2 !== 0 || countOf(value, '"') % 2 !== 0) {
|
|
3323
|
+
return "has an unclosed quote";
|
|
3324
|
+
}
|
|
3325
|
+
return null;
|
|
3326
|
+
}
|
|
3327
|
+
const unsafe = unsafeReason(value);
|
|
3328
|
+
if (unsafe !== null) {
|
|
3329
|
+
return unsafe;
|
|
3330
|
+
}
|
|
3331
|
+
if (value.includes("'") || value.includes('"')) {
|
|
3332
|
+
return "must not contain quotes";
|
|
3333
|
+
}
|
|
3334
|
+
if (kind === "color") {
|
|
3335
|
+
const valid2 = HEX_COLOR.test(value) || COLOR_FUNCTION.test(value) || VAR_REFERENCE.test(value) || COLOR_KEYWORD.test(value);
|
|
3336
|
+
return valid2 ? null : "is not a color (use #hex, rgb(), hsl(), oklch() and similar, var(--name) or a keyword)";
|
|
3337
|
+
}
|
|
3338
|
+
const valid = LENGTH_VALUE.test(value) || LENGTH_FUNCTION.test(value) || VAR_REFERENCE.test(value);
|
|
3339
|
+
return valid ? null : "is not a length (use a number with px, rem, em, %, ch, vw or vh, 0, calc(), min(), max(), clamp() or var(--name))";
|
|
3340
|
+
}
|
|
3341
|
+
function collectVariables(themeName, mode, tokens) {
|
|
3342
|
+
const variables = {};
|
|
3343
|
+
if (tokens === void 0) {
|
|
3344
|
+
return ok(variables);
|
|
3345
|
+
}
|
|
3346
|
+
const label = (key) => `createTheme "${themeName}": ${mode}.${key}`;
|
|
3347
|
+
const knownKeys = [
|
|
3348
|
+
...Object.keys(THEME_TOKEN_VARIABLES),
|
|
3349
|
+
"series"
|
|
3350
|
+
];
|
|
3351
|
+
for (const key of Object.keys(tokens)) {
|
|
3352
|
+
if (!knownKeys.includes(key)) {
|
|
3353
|
+
return err(
|
|
3354
|
+
`${label(key)} is not a theme token. Known tokens: ${knownKeys.join(", ")}.`
|
|
3355
|
+
);
|
|
3356
|
+
}
|
|
3357
|
+
}
|
|
3358
|
+
for (const key of Object.keys(THEME_TOKEN_VARIABLES)) {
|
|
3359
|
+
const value = tokens[key];
|
|
3360
|
+
if (value === void 0) {
|
|
3361
|
+
continue;
|
|
3362
|
+
}
|
|
3363
|
+
if (typeof value !== "string") {
|
|
3364
|
+
return err(`${label(key)} must be a string, got ${typeof value}.`);
|
|
3365
|
+
}
|
|
3366
|
+
const reason = invalidReason(kindOf(key), value);
|
|
3367
|
+
if (reason !== null) {
|
|
3368
|
+
return err(`${label(key)} "${value}" ${reason}.`);
|
|
3369
|
+
}
|
|
3370
|
+
variables[THEME_TOKEN_VARIABLES[key]] = value;
|
|
3371
|
+
}
|
|
3372
|
+
const series = tokens.series;
|
|
3373
|
+
if (series !== void 0) {
|
|
3374
|
+
if (!Array.isArray(series) || series.length === 0) {
|
|
3375
|
+
return err(`${label("series")} must be a non-empty array of colors.`);
|
|
3376
|
+
}
|
|
3377
|
+
if (series.length > MAX_GRAPH_SERIES) {
|
|
3378
|
+
return err(
|
|
3379
|
+
`${label("series")} has ${series.length} colors; charts draw at most ${MAX_GRAPH_SERIES} series.`
|
|
3380
|
+
);
|
|
3381
|
+
}
|
|
3382
|
+
for (const [index, value] of series.entries()) {
|
|
3383
|
+
const reason = typeof value === "string" ? invalidReason("color", value) : "must be a string";
|
|
3384
|
+
if (reason !== null) {
|
|
3385
|
+
return err(
|
|
3386
|
+
`${label(`series[${index}]`)} "${String(value)}" ${reason}.`
|
|
3387
|
+
);
|
|
3388
|
+
}
|
|
3389
|
+
variables[`--dwt-series-${index + 1}`] = value;
|
|
3390
|
+
}
|
|
3391
|
+
}
|
|
3392
|
+
return ok(variables);
|
|
3393
|
+
}
|
|
3394
|
+
function declarations(variables) {
|
|
3395
|
+
return Object.entries(variables).map(([variable, value]) => ` ${variable}: ${value};`).join("\n");
|
|
3396
|
+
}
|
|
3397
|
+
function targets(prefix, scope) {
|
|
3398
|
+
const lead = prefix === "" ? "" : `${prefix} `;
|
|
3399
|
+
return `${lead}${scope} .dwt-dashboard,
|
|
3400
|
+
${lead}${scope} .dwt-card`;
|
|
3401
|
+
}
|
|
3402
|
+
function rule(prefix, scope, variables) {
|
|
3403
|
+
return `${targets(prefix, scope)} {
|
|
3404
|
+
${declarations(variables)}
|
|
3405
|
+
}`;
|
|
3406
|
+
}
|
|
3407
|
+
function createTheme(options) {
|
|
3408
|
+
const name = options.name;
|
|
3409
|
+
if (typeof name !== "string" || !NAME_PATTERN.test(name)) {
|
|
3410
|
+
return err(
|
|
3411
|
+
`createTheme: name "${String(name)}" must start with a lower-case letter and contain only lower-case letters, digits and hyphens.`
|
|
3412
|
+
);
|
|
3413
|
+
}
|
|
3414
|
+
const scope = (options.scope ?? `[data-dwt-theme='${name}']`).trim();
|
|
3415
|
+
if (scope === "" || !SCOPE_PATTERN.test(scope)) {
|
|
3416
|
+
return err(
|
|
3417
|
+
`createTheme "${name}": scope "${scope}" must be a selector of letters, digits and _ - [ ] = . # ' " or spaces (no commas, colons or combinators).`
|
|
3418
|
+
);
|
|
3419
|
+
}
|
|
3420
|
+
const modes = ["base", "light", "dark"];
|
|
3421
|
+
const variables = {
|
|
3422
|
+
base: {},
|
|
3423
|
+
light: {},
|
|
3424
|
+
dark: {}
|
|
3425
|
+
};
|
|
3426
|
+
for (const mode of modes) {
|
|
3427
|
+
const collected = collectVariables(
|
|
3428
|
+
name,
|
|
3429
|
+
mode,
|
|
3430
|
+
options[mode]
|
|
3431
|
+
);
|
|
3432
|
+
if (!collected.ok) {
|
|
3433
|
+
return collected;
|
|
3434
|
+
}
|
|
3435
|
+
variables[mode] = collected.value;
|
|
3436
|
+
}
|
|
3437
|
+
if (modes.every((mode) => Object.keys(variables[mode]).length === 0)) {
|
|
3438
|
+
return err(
|
|
3439
|
+
`createTheme "${name}": no tokens were set. Pass at least one value in base, light or dark.`
|
|
3440
|
+
);
|
|
3441
|
+
}
|
|
3442
|
+
const blocks = [];
|
|
3443
|
+
if (Object.keys(variables.base).length > 0) {
|
|
3444
|
+
blocks.push(rule("", scope, variables.base));
|
|
3445
|
+
}
|
|
3446
|
+
if (Object.keys(variables.light).length > 0) {
|
|
3447
|
+
blocks.push(
|
|
3448
|
+
rule(":root:where([data-theme='light'])", scope, variables.light)
|
|
3449
|
+
);
|
|
3450
|
+
blocks.push(
|
|
3451
|
+
`@media (prefers-color-scheme: light) {
|
|
3452
|
+
${indent(
|
|
3453
|
+
rule(
|
|
3454
|
+
":root:where(:not([data-theme='dark'], .dark))",
|
|
3455
|
+
scope,
|
|
3456
|
+
variables.light
|
|
3457
|
+
)
|
|
3458
|
+
)}
|
|
3459
|
+
}`
|
|
3460
|
+
);
|
|
3461
|
+
}
|
|
3462
|
+
if (Object.keys(variables.dark).length > 0) {
|
|
3463
|
+
blocks.push(
|
|
3464
|
+
rule(":root:where([data-theme='dark'], .dark)", scope, variables.dark)
|
|
3465
|
+
);
|
|
3466
|
+
blocks.push(
|
|
3467
|
+
`@media (prefers-color-scheme: dark) {
|
|
3468
|
+
${indent(
|
|
3469
|
+
rule(":root:where(:not([data-theme='light']))", scope, variables.dark)
|
|
3470
|
+
)}
|
|
3471
|
+
}`
|
|
3472
|
+
);
|
|
3473
|
+
}
|
|
3474
|
+
return ok({
|
|
3475
|
+
name,
|
|
3476
|
+
scope,
|
|
3477
|
+
css: `${blocks.join("\n\n")}
|
|
3478
|
+
`,
|
|
3479
|
+
variables
|
|
3480
|
+
});
|
|
3481
|
+
}
|
|
3482
|
+
function indent(block) {
|
|
3483
|
+
return block.split("\n").map((line) => ` ${line}`).join("\n");
|
|
3484
|
+
}
|
|
3485
|
+
|
|
3486
|
+
export { DATE_RANGE_PRESETS, DEFAULT_COMPARISON_LABEL, DEFAULT_CURRENCY, DEFAULT_DETAIL_PAGE_SIZE, DEFAULT_EMPTY_TEXT, DEFAULT_MAX_LAYOUT_BYTES, DEFAULT_PAGE_KEY, DEFAULT_PAGE_ROWS, DETAIL_MODES, EMPTY_LAYOUT, LAYOUT_ENVELOPE_VERSION, MAX_DETAIL_PAGE_SIZE, MAX_GRAPH_SERIES, MAX_PAGE_ROWS, MAX_PAGE_TITLE_LENGTH, MAX_PARSED_PAGES, MAX_REPORTED_PROBLEMS, MAX_TEXT_OPTION_LENGTH, MAX_WIDGET_OPTIONS, MAX_WIDGET_WIDTH, MIN_WIDGET_WIDTH, OPTION_KEY_PATTERN, THEME_TOKEN_VARIABLES, VALUE_FORMATS, WIDGET_FILLS, WIDGET_KINDS, WIDGET_OPTION_TYPES, WIDGET_SIZES, WIDTH_COLUMNS, addPage, applyClientOptions, assignPages, baseColumnSpan, cacheKeyFor, coerceOptionValue, createLayoutPersistence, createTheme, createWidgetLoader, defaultDetailQuery, defaultOptionValue, defineWidget, deriveDetailData, describeUnknownError, emptyTextFor, emptyWidget, enforceLocks, err, failedWidget, fillColumnSpans, fillWidthSpans, fillsHeight, fillsWidth, finalizeWidget, fitCount, formatCount, formatPercentChange, formatValue, fromLegacyDefinition, hasPages, hiddenWidgets, hideWidget, isClientApplied, isColumnKeyFor, isHidden, isIsoInterval, isMinimized, isSafeHref, isSafeImageUrl, isWidgetEmptyState, isWidgetKind, isWidgetVisibleTo, isWidgetWidth, itemWidth, kpiDelta, labelStride, loadingWidgets, memoryAdapter, minimizeWidget, movePage, moveWidget, moveWidgetBy, moveWidgetDown, moveWidgetToPage, moveWidgetUp, nextPageKey, niceDomain, niceStep, normalizeLayout, ok, optionValuesFor, optionsCacheSuffix, pageLayout, pageList, pageOf, pageRoom, pageWidgets, parseDetailQuery, parseLayout, parseSortValue, percentChange, placeRows, pruneLayout, queryRows, readOnly, removePage, renamePage, resolveDateRange, resolveDetailOptions, resolveOptionValues, resolvePageKey, resolvePayload, resolveTableControls, resolveWidget, resolveWidgetLock, resolveWidgetUnapplied, resolveWidgets, restoreWidget, sameOptionValues, serializeDetailQuery, serializeLayout, shareOf, showWidget, sortDefinitions, sortFromOptions, tableDetailData, toggleHidden, toggleMinimized, upgradeLegacyWidgetData, usesWidthColumns, utf8Length, validateDetailData, validateWidgetData, validateWidgetDefinition, visibleWidgets, widgetsFor, widthForSize, withEncoding, withFallback, withLogging, withPageLayout, withPrefix, withReadCache, withRetry };
|
|
3238
3487
|
//# sourceMappingURL=index.js.map
|
|
3239
3488
|
//# sourceMappingURL=index.js.map
|