@energinet/watt 4.6.12 → 4.6.14

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.
@@ -73,6 +73,9 @@ function* tokenize(value, budget) {
73
73
  yield token(typeof value, String(value));
74
74
  else if (value === null)
75
75
  yield token('null', String(null));
76
+ else if ('toJSON' in value && typeof value.toJSON === 'function') {
77
+ budget = yield* tokenize(value.toJSON(), budget);
78
+ }
76
79
  else {
77
80
  const [firstKey] = Object.keys(value);
78
81
  const isArray = Array.isArray(value);
@@ -1 +1 @@
1
- {"version":3,"file":"energinet-watt-json-viewer.mjs","sources":["../../../libs/watt/package/json-viewer/watt-json.utils.ts","../../../libs/watt/package/json-viewer/watt-json-row.component.ts","../../../libs/watt/package/json-viewer/watt-json.component.ts","../../../libs/watt/package/json-viewer/watt-json-viewer.component.ts","../../../libs/watt/package/json-viewer/index.ts","../../../libs/watt/package/json-viewer/energinet-watt-json-viewer.ts"],"sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\n//\n\n/** Compares two values. When deep is false, objects/arrays compare by type only. */\nexport function isEqual(a: unknown, b: unknown, { deep = true, ignoreCase = false } = {}): boolean {\n if (typeof a !== typeof b) return false;\n const eq = (a: string, b: string) => (ignoreCase ? a.toLowerCase() === b.toLowerCase() : a === b);\n const replacer = (_: string, v: unknown) => {\n if (Array.isArray(v)) return deep ? v : [];\n if (v && typeof v === 'object') return deep ? Object.fromEntries(Object.entries(v).sort()) : {};\n return v;\n };\n try {\n return eq(JSON.stringify(a, replacer), JSON.stringify(b, replacer));\n } catch {\n return a === b;\n }\n}\n\n/** Type guard that checks if a value is a non-empty array or object. */\nexport function isNonEmpty(value: unknown): value is Record<string, unknown> | unknown[] {\n return typeof value === 'object' && value !== null ? Object.keys(value).length > 0 : false;\n}\n\n/** Merges two arrays by alternating elements, preserving the order. */\nexport function interleave<T>(a: T[], b: T[]): T[] {\n return Array.from({ length: Math.max(a.length, b.length) })\n .flatMap((_, i) => [a[i], b[i]])\n .filter((k) => k !== undefined);\n}\n\n/** Truncates a string to maxLength, appending '…' if truncated. */\nexport function truncate(value: string, maxLength: number) {\n return value.length > maxLength ? value.slice(0, Math.max(maxLength - 1, 0)) + '…' : value;\n}\n\n/**\n * Generator that produces syntax-highlighted tokens for a JSON value.\n * Uses a character budget to limit output length, yielding tokens and\n * returning the remaining budget via the generator return value.\n */\nexport function* tokenize(\n value: unknown,\n budget: number\n): Generator<{ kind: string; value: string }, number> {\n /** Creates a token and deducts its length from the budget. */\n const token = (kind: string, value: string) => {\n budget -= value.length;\n return { kind, value };\n };\n\n if (typeof value === 'string') yield token('string', JSON.stringify(truncate(value, budget)));\n else if (typeof value !== 'object') yield token(typeof value, String(value));\n else if (value === null) yield token('null', String(null));\n else {\n const [firstKey] = Object.keys(value);\n const isArray = Array.isArray(value);\n yield token('punctuation', isArray ? '[' : '{');\n\n for (const [key, child] of Object.entries(value)) {\n if (key !== firstKey) yield token('punctuation', ', ');\n if (budget <= 0) {\n yield token('punctuation', '…');\n break;\n }\n\n if (!isArray) {\n yield token('key', key);\n yield token('punctuation', ': ');\n }\n\n budget = yield* tokenize(child, budget);\n }\n\n yield token('punctuation', isArray ? ']' : '}');\n }\n\n return budget;\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\nimport { WattIconComponent } from '@energinet/watt/icon';\nimport { isNonEmpty, tokenize } from './watt-json.utils';\n\n@Component({\n selector: 'watt-json-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [WattIconComponent],\n styles: `\n watt-json-row {\n position: relative;\n padding-left: calc(var(--watt-json-level) * 20px);\n padding-right: calc(var(--watt-json-level) * 20px);\n color: var(--watt-color-primary);\n }\n\n watt-json-row > watt-icon {\n position: absolute;\n top: 2px;\n transform: translateX(-100%);\n }\n\n .watt-json-row-added:not(:empty) {\n background-color: var(--watt-color-state-success-light);\n }\n\n .watt-json-row-removed:not(:empty) {\n background-color: var(--watt-color-state-danger-light);\n }\n\n .watt-json-function,\n .watt-json-undefined {\n color: var(--watt-on-light-low-emphasis);\n }\n\n .watt-json-punctuation {\n color: var(--watt-on-light-medium-emphasis);\n }\n\n .watt-json-key {\n color: var(--watt-color-primary);\n }\n\n .watt-json-string {\n color: var(--watt-color-state-success);\n }\n\n .watt-json-number {\n color: var(--watt-color-state-warning);\n }\n\n .watt-json-boolean,\n .watt-json-null {\n color: var(--watt-color-state-danger);\n }\n `,\n host: {\n '[class.watt-json-row-added]': '!isBaseline() && !isSame()',\n '[class.watt-json-row-removed]': 'isBaseline() && !isSame()',\n },\n template: `\n @if (value() !== undefined) {\n @if (expandable()) {\n <watt-icon size=\"s\" [name]=\"expanded() ? 'down' : 'right'\" />\n }\n <span>{{ label() }}: </span>\n <span [hidden]=\"expandable() && expanded()\">\n @for (token of tokens(); track $index) {\n <span [class]=\"'watt-json-' + token.kind\">{{ token.value }}</span>\n }\n </span>\n }\n `,\n})\nexport class WattJsonRow {\n readonly label = input<string>();\n readonly isBaseline = input.required<boolean>();\n readonly isSame = input.required<boolean>();\n readonly expanded = input.required<boolean>();\n readonly value = input<unknown>();\n readonly diff = input(false);\n\n protected readonly expandable = computed(() => isNonEmpty(this.value()));\n protected readonly budget = computed(() => (this.diff() ? 40 : 80));\n protected readonly tokens = computed(() => [\n ...tokenize(this.value(), this.expandable() ? this.budget() : Infinity),\n ]);\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { VATER } from '@energinet/watt/vater';\nimport { WattJsonRow } from './watt-json-row.component';\nimport { interleave, isNonEmpty, isEqual } from './watt-json.utils';\n\nexport type TreeState = {\n expanded: boolean;\n maxDepth: number;\n};\n\n@Component({\n selector: 'watt-json',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [VATER, WattJsonRow],\n styles: `\n watt-json {\n cursor: default;\n }\n\n .watt-json-row {\n position: relative;\n }\n\n .watt-json-row::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n pointer-events: none;\n }\n\n .watt-json-row:hover::after {\n background-color: rgba(0, 0, 0, 0.1);\n outline: 1px solid var(--watt-color-neutral-grey-500);\n outline-offset: -1px;\n }\n `,\n host: { '[style.--watt-json-level]': 'level()' },\n template: `\n @if (!isRoot()) {\n <vater-flex class=\"watt-json-row\" direction=\"row\" (click)=\"toggleExpanded()\">\n @if (diff()) {\n <watt-json-row\n [label]=\"label()\"\n [isBaseline]=\"true\"\n [isSame]=\"isSame()\"\n [expanded]=\"expanded()\"\n [value]=\"baseline()\"\n [diff]=\"diff()\"\n />\n }\n <watt-json-row\n [label]=\"label()\"\n [isBaseline]=\"false\"\n [isSame]=\"isSame()\"\n [expanded]=\"expanded()\"\n [value]=\"json()\"\n [diff]=\"diff()\"\n />\n </vater-flex>\n }\n @defer (when expanded()) {\n @for (child of children(); track child.key) {\n <watt-json\n [hidden]=\"!expanded()\"\n [label]=\"child.key\"\n [json]=\"child.json\"\n [baseline]=\"child.baseline\"\n [diff]=\"diff()\"\n [ignoreCase]=\"ignoreCase()\"\n [tree]=\"tree()\"\n [level]=\"level() + 1\"\n />\n }\n }\n `,\n})\nexport class WattJson {\n readonly label = input<string>();\n readonly json = input<unknown>();\n readonly baseline = input<unknown>();\n readonly diff = input(false);\n readonly ignoreCase = input(false);\n readonly tree = input.required<TreeState>();\n readonly level = input(0);\n\n protected readonly toMap = (v: unknown) => new Map(Object.entries(isNonEmpty(v) ? v : []));\n protected readonly children = computed(() => {\n const json = this.toMap(this.json());\n const baseline = this.toMap(this.baseline());\n const keys = new Set(interleave([...json.keys()], [...baseline.keys()]));\n return [...keys].map((key) => ({ key, json: json.get(key), baseline: baseline.get(key) }));\n });\n\n protected readonly isRoot = computed(() => this.level() === 0);\n protected readonly isSame = computed(() => {\n if (!this.diff()) return true;\n return isEqual(this.baseline(), this.json(), {\n deep: !this.expanded(),\n ignoreCase: this.ignoreCase(),\n });\n });\n\n protected readonly expandable = computed(() => this.children().length > 0);\n protected readonly expanded = linkedSignal({\n source: this.tree,\n computation: (t) =>\n this.level() < t.maxDepth && t.expanded ? this.expandable() : this.isRoot(),\n });\n\n protected readonly toggleExpanded = () =>\n // Prevent toggle when text is being selected\n this.expanded.update((e) => (getSelection()?.isCollapsed && this.expandable() ? !e : e));\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { ChangeDetectionStrategy, Component, computed, input, linkedSignal } from '@angular/core';\nimport { TreeState, WattJson } from './watt-json.component';\n\n@Component({\n selector: 'watt-json-viewer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [WattJson],\n template: `\n <watt-json\n [baseline]=\"compare()\"\n [json]=\"json()\"\n [diff]=\"compare() !== undefined\"\n [ignoreCase]=\"ignoreCase()\"\n [tree]=\"tree()\"\n />\n `,\n})\nexport class WattJsonViewer {\n /**\n * The JSON data to display. Accepts any value that can be serialized by JSON.stringify.\n */\n readonly json = input.required<unknown>();\n\n /**\n * Optional baseline value to compare against. When provided, enables diff mode\n * with the baseline on the left (red) and `json` on the right (green).\n */\n readonly compare = input<unknown>();\n\n /**\n * When true, string comparisons in diff mode are case-insensitive.\n */\n readonly ignoreCase = input(false);\n\n /**\n * Maximum depth for `expandAll()`. Beyond this depth nodes start collapsed but can be\n * expanded manually. Useful when dealing with large objects or circular references.\n */\n readonly maxDepth = input(50);\n\n /**\n * Whether the tree starts expanded or collapsed.\n */\n readonly initialExpanded = input(false);\n\n /**\n * Expands all nodes up to `maxDepth`.\n */\n readonly expandAll = () => this.expanded.set(true);\n\n /**\n * Collapses all nodes.\n */\n readonly collapseAll = () => this.expanded.set(false);\n\n // Use equality function + computed object to always return a new reference, even\n // when `expanded` is \"updated\" to its current value. This ensures that \"Expand all\"\n // and \"Collapse all\" always works, regardless of the current state of `expanded`.\n protected readonly expanded = linkedSignal(this.initialExpanded, { equal: () => false });\n protected readonly tree = computed<TreeState>(() => ({\n expanded: this.expanded(),\n maxDepth: this.maxDepth(),\n }));\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nexport { WattJsonViewer } from './watt-json-viewer.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;AACA;;;;;;;;;;;;;;;AAeG;AACH;AACA;AAEA;SACgB,OAAO,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,EAAE,EAAA;AACtF,IAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AAAE,QAAA,OAAO,KAAK;AACvC,IAAA,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,CAAS,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACjG,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAU,KAAI;AACzC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE;AAC1C,QAAA,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;AAC/F,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;AACD,IAAA,IAAI;QACF,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrE;AAAE,IAAA,MAAM;QACN,OAAO,CAAC,KAAK,CAAC;IAChB;AACF;AAEA;AACM,SAAU,UAAU,CAAC,KAAc,EAAA;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;AAC5F;AAEA;AACM,SAAU,UAAU,CAAI,CAAM,EAAE,CAAM,EAAA;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD,SAAA,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AACnC;AAEA;AACM,SAAU,QAAQ,CAAC,KAAa,EAAE,SAAiB,EAAA;AACvD,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK;AAC5F;AAEA;;;;AAIG;UACc,QAAQ,CACvB,KAAc,EACd,MAAc,EAAA;;AAGd,IAAA,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,KAAI;AAC5C,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM;AACtB,QAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACxB,IAAA,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,MAAM,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACxF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,KAAK,CAAC,OAAO,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;SACvE,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;SACrD;QACH,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACpC,QAAA,MAAM,KAAK,CAAC,aAAa,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,QAAQ;AAAE,gBAAA,MAAM,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC;AACtD,YAAA,IAAI,MAAM,IAAI,CAAC,EAAE;AACf,gBAAA,MAAM,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC;gBAC/B;YACF;YAEA,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AACvB,gBAAA,MAAM,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC;YAClC;YAEA,MAAM,GAAG,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACzC;AAEA,QAAA,MAAM,KAAK,CAAC,aAAa,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;IACjD;AAEA,IAAA,OAAO,MAAM;AACf;;AC/FA;AACA;;;;;;;;;;;;;;;AAeG;AACH;MAkFa,WAAW,CAAA;IACb,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACvB,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAW;AACtC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAW;AAClC,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAW;IACpC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AACxB,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AAET,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,iFAAC;IACrD,MAAM,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAChD,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM;QACzC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;AACxE,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;uGAZS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,4BAAA,EAAA,6BAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdZ;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+xBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjES,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAmEhB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAvEvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,eAAA,EACR,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,iBAAiB,CAAC,EAAA,IAAA,EAiDtB;AACJ,wBAAA,6BAA6B,EAAE,4BAA4B;AAC3D,wBAAA,+BAA+B,EAAE,2BAA2B;qBAC7D,EAAA,QAAA,EACS;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+xBAAA,CAAA,EAAA;;;ACjGH;AACA;;;;;;;;;;;;;;;AAeG;AACH;MAuFa,QAAQ,CAAA;IACV,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACvB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;IACvB,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AACnB,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,iFAAC;AACzB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,CAAC,4EAAC;IAEN,KAAK,GAAG,CAAC,CAAU,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACvE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxE,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5F,IAAA,CAAC,+EAAC;AAEiB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,6EAAC;AAC3C,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAAE,YAAA,OAAO,IAAI;QAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AAC3C,YAAA,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC;AACJ,IAAA,CAAC,6EAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,iFAAC;AACvD,IAAA,QAAQ,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACxC,MAAM,EAAE,IAAI,CAAC,IAAI;AACjB,QAAA,WAAW,EAAE,CAAC,CAAC,KACb,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAC7E;IAEiB,cAAc,GAAG;;AAElC,IAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;uGAnC/E,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvCT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/DgB,WAAW,sOAiEjB,QAAQ,CAAA,CAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBArEpB,SAAS;+BACE,WAAW,EAAA,aAAA,EACN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,KAAK,EAAE,WAAW,CAAC,EAAA,IAAA,EAyBvB,EAAE,2BAA2B,EAAE,SAAS,EAAE,EAAA,QAAA,EACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sTAAA,CAAA,EAAA;;;ACtGH;AACA;;;;;;;;;;;;;;;AAeG;AACH;MAkBa,cAAc,CAAA;AACzB;;AAEG;AACM,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAW;AAEzC;;;AAGG;IACM,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAEnC;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,iFAAC;AAElC;;;AAGG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,+EAAC;AAE7B;;AAEG;AACM,IAAA,eAAe,GAAG,KAAK,CAAC,KAAK,sFAAC;AAEvC;;AAEG;AACM,IAAA,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAElD;;AAEG;AACM,IAAA,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;;;;AAKlC,IAAA,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,KAAK,GAAG;AACrE,IAAA,IAAI,GAAG,QAAQ,CAAY,OAAO;AACnD,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,KAAA,CAAC,2EAAC;uGA7CQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVf;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAWP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,QAAQ,CAAC;AACnB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACF,iBAAA;;;AClCD;AACA;;;;;;;;;;;;;;;AAeG;AACH;;ACjBA;;AAEG;;;;"}
1
+ {"version":3,"file":"energinet-watt-json-viewer.mjs","sources":["../../../libs/watt/package/json-viewer/watt-json.utils.ts","../../../libs/watt/package/json-viewer/watt-json-row.component.ts","../../../libs/watt/package/json-viewer/watt-json.component.ts","../../../libs/watt/package/json-viewer/watt-json-viewer.component.ts","../../../libs/watt/package/json-viewer/index.ts","../../../libs/watt/package/json-viewer/energinet-watt-json-viewer.ts"],"sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\n//\n\n/** Compares two values. When deep is false, objects/arrays compare by type only. */\nexport function isEqual(a: unknown, b: unknown, { deep = true, ignoreCase = false } = {}): boolean {\n if (typeof a !== typeof b) return false;\n const eq = (a: string, b: string) => (ignoreCase ? a.toLowerCase() === b.toLowerCase() : a === b);\n const replacer = (_: string, v: unknown) => {\n if (Array.isArray(v)) return deep ? v : [];\n if (v && typeof v === 'object') return deep ? Object.fromEntries(Object.entries(v).sort()) : {};\n return v;\n };\n try {\n return eq(JSON.stringify(a, replacer), JSON.stringify(b, replacer));\n } catch {\n return a === b;\n }\n}\n\n/** Type guard that checks if a value is a non-empty array or object. */\nexport function isNonEmpty(value: unknown): value is Record<string, unknown> | unknown[] {\n return typeof value === 'object' && value !== null ? Object.keys(value).length > 0 : false;\n}\n\n/** Merges two arrays by alternating elements, preserving the order. */\nexport function interleave<T>(a: T[], b: T[]): T[] {\n return Array.from({ length: Math.max(a.length, b.length) })\n .flatMap((_, i) => [a[i], b[i]])\n .filter((k) => k !== undefined);\n}\n\n/** Truncates a string to maxLength, appending '…' if truncated. */\nexport function truncate(value: string, maxLength: number) {\n return value.length > maxLength ? value.slice(0, Math.max(maxLength - 1, 0)) + '…' : value;\n}\n\n/**\n * Generator that produces syntax-highlighted tokens for a JSON value.\n * Uses a character budget to limit output length, yielding tokens and\n * returning the remaining budget via the generator return value.\n */\nexport function* tokenize(\n value: unknown,\n budget: number\n): Generator<{ kind: string; value: string }, number> {\n /** Creates a token and deducts its length from the budget. */\n const token = (kind: string, value: string) => {\n budget -= value.length;\n return { kind, value };\n };\n\n if (typeof value === 'string') yield token('string', JSON.stringify(truncate(value, budget)));\n else if (typeof value !== 'object') yield token(typeof value, String(value));\n else if (value === null) yield token('null', String(null));\n else if ('toJSON' in value && typeof value.toJSON === 'function') {\n budget = yield* tokenize(value.toJSON(), budget);\n } else {\n const [firstKey] = Object.keys(value);\n const isArray = Array.isArray(value);\n yield token('punctuation', isArray ? '[' : '{');\n\n for (const [key, child] of Object.entries(value)) {\n if (key !== firstKey) yield token('punctuation', ', ');\n if (budget <= 0) {\n yield token('punctuation', '…');\n break;\n }\n\n if (!isArray) {\n yield token('key', key);\n yield token('punctuation', ': ');\n }\n\n budget = yield* tokenize(child, budget);\n }\n\n yield token('punctuation', isArray ? ']' : '}');\n }\n\n return budget;\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\nimport { WattIconComponent } from '@energinet/watt/icon';\nimport { isNonEmpty, tokenize } from './watt-json.utils';\n\n@Component({\n selector: 'watt-json-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [WattIconComponent],\n styles: `\n watt-json-row {\n position: relative;\n padding-left: calc(var(--watt-json-level) * 20px);\n padding-right: calc(var(--watt-json-level) * 20px);\n color: var(--watt-color-primary);\n }\n\n watt-json-row > watt-icon {\n position: absolute;\n top: 2px;\n transform: translateX(-100%);\n }\n\n .watt-json-row-added:not(:empty) {\n background-color: var(--watt-color-state-success-light);\n }\n\n .watt-json-row-removed:not(:empty) {\n background-color: var(--watt-color-state-danger-light);\n }\n\n .watt-json-function,\n .watt-json-undefined {\n color: var(--watt-on-light-low-emphasis);\n }\n\n .watt-json-punctuation {\n color: var(--watt-on-light-medium-emphasis);\n }\n\n .watt-json-key {\n color: var(--watt-color-primary);\n }\n\n .watt-json-string {\n color: var(--watt-color-state-success);\n }\n\n .watt-json-number {\n color: var(--watt-color-state-warning);\n }\n\n .watt-json-boolean,\n .watt-json-null {\n color: var(--watt-color-state-danger);\n }\n `,\n host: {\n '[class.watt-json-row-added]': '!isBaseline() && !isSame()',\n '[class.watt-json-row-removed]': 'isBaseline() && !isSame()',\n },\n template: `\n @if (value() !== undefined) {\n @if (expandable()) {\n <watt-icon size=\"s\" [name]=\"expanded() ? 'down' : 'right'\" />\n }\n <span>{{ label() }}: </span>\n <span [hidden]=\"expandable() && expanded()\">\n @for (token of tokens(); track $index) {\n <span [class]=\"'watt-json-' + token.kind\">{{ token.value }}</span>\n }\n </span>\n }\n `,\n})\nexport class WattJsonRow {\n readonly label = input<string>();\n readonly isBaseline = input.required<boolean>();\n readonly isSame = input.required<boolean>();\n readonly expanded = input.required<boolean>();\n readonly value = input<unknown>();\n readonly diff = input(false);\n\n protected readonly expandable = computed(() => isNonEmpty(this.value()));\n protected readonly budget = computed(() => (this.diff() ? 40 : 80));\n protected readonly tokens = computed(() => [\n ...tokenize(this.value(), this.expandable() ? this.budget() : Infinity),\n ]);\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { VATER } from '@energinet/watt/vater';\nimport { WattJsonRow } from './watt-json-row.component';\nimport { interleave, isNonEmpty, isEqual } from './watt-json.utils';\n\nexport type TreeState = {\n expanded: boolean;\n maxDepth: number;\n};\n\n@Component({\n selector: 'watt-json',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [VATER, WattJsonRow],\n styles: `\n watt-json {\n cursor: default;\n }\n\n .watt-json-row {\n position: relative;\n }\n\n .watt-json-row::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n pointer-events: none;\n }\n\n .watt-json-row:hover::after {\n background-color: rgba(0, 0, 0, 0.1);\n outline: 1px solid var(--watt-color-neutral-grey-500);\n outline-offset: -1px;\n }\n `,\n host: { '[style.--watt-json-level]': 'level()' },\n template: `\n @if (!isRoot()) {\n <vater-flex class=\"watt-json-row\" direction=\"row\" (click)=\"toggleExpanded()\">\n @if (diff()) {\n <watt-json-row\n [label]=\"label()\"\n [isBaseline]=\"true\"\n [isSame]=\"isSame()\"\n [expanded]=\"expanded()\"\n [value]=\"baseline()\"\n [diff]=\"diff()\"\n />\n }\n <watt-json-row\n [label]=\"label()\"\n [isBaseline]=\"false\"\n [isSame]=\"isSame()\"\n [expanded]=\"expanded()\"\n [value]=\"json()\"\n [diff]=\"diff()\"\n />\n </vater-flex>\n }\n @defer (when expanded()) {\n @for (child of children(); track child.key) {\n <watt-json\n [hidden]=\"!expanded()\"\n [label]=\"child.key\"\n [json]=\"child.json\"\n [baseline]=\"child.baseline\"\n [diff]=\"diff()\"\n [ignoreCase]=\"ignoreCase()\"\n [tree]=\"tree()\"\n [level]=\"level() + 1\"\n />\n }\n }\n `,\n})\nexport class WattJson {\n readonly label = input<string>();\n readonly json = input<unknown>();\n readonly baseline = input<unknown>();\n readonly diff = input(false);\n readonly ignoreCase = input(false);\n readonly tree = input.required<TreeState>();\n readonly level = input(0);\n\n protected readonly toMap = (v: unknown) => new Map(Object.entries(isNonEmpty(v) ? v : []));\n protected readonly children = computed(() => {\n const json = this.toMap(this.json());\n const baseline = this.toMap(this.baseline());\n const keys = new Set(interleave([...json.keys()], [...baseline.keys()]));\n return [...keys].map((key) => ({ key, json: json.get(key), baseline: baseline.get(key) }));\n });\n\n protected readonly isRoot = computed(() => this.level() === 0);\n protected readonly isSame = computed(() => {\n if (!this.diff()) return true;\n return isEqual(this.baseline(), this.json(), {\n deep: !this.expanded(),\n ignoreCase: this.ignoreCase(),\n });\n });\n\n protected readonly expandable = computed(() => this.children().length > 0);\n protected readonly expanded = linkedSignal({\n source: this.tree,\n computation: (t) =>\n this.level() < t.maxDepth && t.expanded ? this.expandable() : this.isRoot(),\n });\n\n protected readonly toggleExpanded = () =>\n // Prevent toggle when text is being selected\n this.expanded.update((e) => (getSelection()?.isCollapsed && this.expandable() ? !e : e));\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { ChangeDetectionStrategy, Component, computed, input, linkedSignal } from '@angular/core';\nimport { TreeState, WattJson } from './watt-json.component';\n\n@Component({\n selector: 'watt-json-viewer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [WattJson],\n template: `\n <watt-json\n [baseline]=\"compare()\"\n [json]=\"json()\"\n [diff]=\"compare() !== undefined\"\n [ignoreCase]=\"ignoreCase()\"\n [tree]=\"tree()\"\n />\n `,\n})\nexport class WattJsonViewer {\n /**\n * The JSON data to display. Accepts any value that can be serialized by JSON.stringify.\n */\n readonly json = input.required<unknown>();\n\n /**\n * Optional baseline value to compare against. When provided, enables diff mode\n * with the baseline on the left (red) and `json` on the right (green).\n */\n readonly compare = input<unknown>();\n\n /**\n * When true, string comparisons in diff mode are case-insensitive.\n */\n readonly ignoreCase = input(false);\n\n /**\n * Maximum depth for `expandAll()`. Beyond this depth nodes start collapsed but can be\n * expanded manually. Useful when dealing with large objects or circular references.\n */\n readonly maxDepth = input(50);\n\n /**\n * Whether the tree starts expanded or collapsed.\n */\n readonly initialExpanded = input(false);\n\n /**\n * Expands all nodes up to `maxDepth`.\n */\n readonly expandAll = () => this.expanded.set(true);\n\n /**\n * Collapses all nodes.\n */\n readonly collapseAll = () => this.expanded.set(false);\n\n // Use equality function + computed object to always return a new reference, even\n // when `expanded` is \"updated\" to its current value. This ensures that \"Expand all\"\n // and \"Collapse all\" always works, regardless of the current state of `expanded`.\n protected readonly expanded = linkedSignal(this.initialExpanded, { equal: () => false });\n protected readonly tree = computed<TreeState>(() => ({\n expanded: this.expanded(),\n maxDepth: this.maxDepth(),\n }));\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nexport { WattJsonViewer } from './watt-json-viewer.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { WattButtonComponent } from '@energinet/watt/button';
11
11
  import { WattBreakpointsObserver } from '@energinet/watt/core/breakpoints';
12
12
  import { NgTemplateOutlet } from '@angular/common';
13
13
  import { MatExpansionPanel, MatExpansionPanelTitle, MatExpansionPanelHeader } from '@angular/material/expansion';
14
+ import { WattIconComponent } from '@energinet/watt/icon';
14
15
 
15
16
  //#region License
16
17
  /**
@@ -123,13 +124,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
123
124
  */
124
125
  //#endregion
125
126
  class WattNavListItemComponent {
126
- link = input.required(...(ngDevMode ? [{ debugName: "link" }] : /* istanbul ignore next */ []));
127
+ link = input(...(ngDevMode ? [undefined, { debugName: "link" }] : /* istanbul ignore next */ []));
127
128
  target = input('_self', ...(ngDevMode ? [{ debugName: "target" }] : /* istanbul ignore next */ []));
129
+ variant = input('link', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
130
+ icon = input('arrowRightAlt', ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
131
+ shortcut = input(...(ngDevMode ? [undefined, { debugName: "shortcut" }] : /* istanbul ignore next */ []));
128
132
  isActive = output();
133
+ buttonClick = output();
129
134
  /**
130
135
  * @ignore
131
136
  */
132
- isExternalLink = computed(() => /^(http:\/\/|https:\/\/)/i.test(this.link()), ...(ngDevMode ? [{ debugName: "isExternalLink" }] : /* istanbul ignore next */ []));
137
+ isExternalLink = computed(() => /^(http:\/\/|https:\/\/)/i.test(this.link() ?? ''), ...(ngDevMode ? [{ debugName: "isExternalLink" }] : /* istanbul ignore next */ []));
133
138
  /**
134
139
  * @ignore
135
140
  */
@@ -137,43 +142,83 @@ class WattNavListItemComponent {
137
142
  this.isActive.emit(isActive);
138
143
  }
139
144
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: WattNavListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: WattNavListItemComponent, isStandalone: true, selector: "watt-nav-list-item", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActive" }, ngImport: i0, template: `
141
- @if (isExternalLink()) {
142
- <a [href]="link()" [attr.target]="target()"
143
- ><ng-container *ngTemplateOutlet="templateContent"
144
- /></a>
145
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: WattNavListItemComponent, isStandalone: true, selector: "watt-nav-list-item", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActive", buttonClick: "buttonClick" }, host: { properties: { "class.watt-nav-list-item--link": "variant() === \"link\"", "class.watt-nav-list-item--button": "variant() === \"button\"" } }, ngImport: i0, template: `
146
+ @if (variant() === 'button') {
147
+ <button type="button" [attr.aria-keyshortcuts]="shortcut()" (click)="buttonClick.emit()">
148
+ <span class="watt-nav-list-item__button-content">
149
+ <ng-container *ngTemplateOutlet="templateContent" />
150
+ </span>
151
+
152
+ @if (shortcut()) {
153
+ <span class="watt-nav-list-item__shortcut" aria-hidden="true">{{ shortcut() }}</span>
154
+ }
155
+
156
+ <watt-icon class="watt-nav-list-item__cta-icon" [name]="icon()" aria-hidden="true" />
157
+ </button>
158
+ } @else if (link(); as link) {
159
+ @if (isExternalLink()) {
160
+ <a [href]="link" [attr.target]="target()"
161
+ ><ng-container *ngTemplateOutlet="templateContent"
162
+ /></a>
163
+ } @else {
164
+ <a
165
+ [routerLink]="link"
166
+ routerLinkActive="active"
167
+ (isActiveChange)="onRouterLinkActive($event)"
168
+ ><ng-container *ngTemplateOutlet="templateContent"
169
+ /></a>
170
+ }
145
171
  } @else {
146
- <a
147
- [routerLink]="link()"
148
- routerLinkActive="active"
149
- (isActiveChange)="onRouterLinkActive($event)"
150
- ><ng-container *ngTemplateOutlet="templateContent"
151
- /></a>
172
+ <span class="watt-nav-list-item__content">
173
+ <ng-container *ngTemplateOutlet="templateContent" />
174
+ </span>
152
175
  }
153
176
 
154
177
  <ng-template #templateContent>
155
178
  <ng-content />
156
179
  </ng-template>
157
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
180
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
158
181
  }
159
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: WattNavListItemComponent, decorators: [{
160
183
  type: Component,
161
184
  args: [{
162
185
  selector: 'watt-nav-list-item',
163
186
  changeDetection: ChangeDetectionStrategy.OnPush,
164
- imports: [NgTemplateOutlet, RouterLink, RouterLinkActive],
187
+ host: {
188
+ '[class.watt-nav-list-item--link]': 'variant() === "link"',
189
+ '[class.watt-nav-list-item--button]': 'variant() === "button"',
190
+ },
191
+ imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, WattIconComponent],
165
192
  template: `
166
- @if (isExternalLink()) {
167
- <a [href]="link()" [attr.target]="target()"
168
- ><ng-container *ngTemplateOutlet="templateContent"
169
- /></a>
193
+ @if (variant() === 'button') {
194
+ <button type="button" [attr.aria-keyshortcuts]="shortcut()" (click)="buttonClick.emit()">
195
+ <span class="watt-nav-list-item__button-content">
196
+ <ng-container *ngTemplateOutlet="templateContent" />
197
+ </span>
198
+
199
+ @if (shortcut()) {
200
+ <span class="watt-nav-list-item__shortcut" aria-hidden="true">{{ shortcut() }}</span>
201
+ }
202
+
203
+ <watt-icon class="watt-nav-list-item__cta-icon" [name]="icon()" aria-hidden="true" />
204
+ </button>
205
+ } @else if (link(); as link) {
206
+ @if (isExternalLink()) {
207
+ <a [href]="link" [attr.target]="target()"
208
+ ><ng-container *ngTemplateOutlet="templateContent"
209
+ /></a>
210
+ } @else {
211
+ <a
212
+ [routerLink]="link"
213
+ routerLinkActive="active"
214
+ (isActiveChange)="onRouterLinkActive($event)"
215
+ ><ng-container *ngTemplateOutlet="templateContent"
216
+ /></a>
217
+ }
170
218
  } @else {
171
- <a
172
- [routerLink]="link()"
173
- routerLinkActive="active"
174
- (isActiveChange)="onRouterLinkActive($event)"
175
- ><ng-container *ngTemplateOutlet="templateContent"
176
- /></a>
219
+ <span class="watt-nav-list-item__content">
220
+ <ng-container *ngTemplateOutlet="templateContent" />
221
+ </span>
177
222
  }
178
223
 
179
224
  <ng-template #templateContent>
@@ -181,7 +226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
181
226
  </ng-template>
182
227
  `,
183
228
  }]
184
- }], propDecorators: { link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: true }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], isActive: [{ type: i0.Output, args: ["isActive"] }] } });
229
+ }], propDecorators: { link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], isActive: [{ type: i0.Output, args: ["isActive"] }], buttonClick: [{ type: i0.Output, args: ["buttonClick"] }] } });
185
230
 
186
231
  //#region License
187
232
  /**
@@ -228,7 +273,7 @@ class WattNavListComponent {
228
273
  <ng-template #navListTemplate>
229
274
  <ng-content />
230
275
  </ng-template>
231
- `, isInline: true, styles: ["watt-nav-list{background-color:var(--watt-sidenav-background-color)}watt-nav-list watt-nav-list-item{display:block}watt-nav-list watt-nav-list-item a{padding:var(--watt-space-s) var(--watt-space-m);padding:var(--watt-space-s);display:block;border-left:var(--watt-space-xs) solid transparent;border-radius:var(--watt-space-s);color:var(--watt-color-neutral-white);text-decoration:none}watt-nav-list watt-nav-list-item a:hover{transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye)}watt-nav-list watt-nav-list-item a:hover{background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list watt-nav-list-item a.active{background-color:var(--watt-nav-list-active-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel{background-color:var(--watt-sidenav-background-color);margin:0;border-radius:0}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header.mat-expanded:hover,watt-nav-list.watt-nav-list--expandable .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye);background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header{border-radius:var(--watt-space-s);padding-left:calc(var(--watt-space-xs) + var(--watt-space-s));height:40px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header-title{color:var(--watt-color-neutral-white)}watt-nav-list.watt-nav-list--expandable .mat-expansion-indicator:after{color:var(--watt-color-neutral-white);position:relative;top:-3px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-body{padding:0}watt-nav-list.watt-nav-list--expandable watt-nav-list-item a{padding-left:var(--watt-space-m)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: WattExpandOnActiveLinkDirective, selector: "[wattExpandOnActiveLink]", inputs: ["wattNavListItemComponents"], exportAs: ["wattExpandOnActiveLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
276
+ `, isInline: true, styles: ["watt-nav-list{background-color:var(--watt-sidenav-background-color);--watt-nav-list-action-background-color: #06515d}watt-nav-list watt-nav-list-item{display:block}watt-nav-list watt-nav-list-item a,watt-nav-list watt-nav-list-item button,watt-nav-list watt-nav-list-item .watt-nav-list-item__content{padding:var(--watt-space-s) var(--watt-space-m);padding:var(--watt-space-s);display:block;width:100%;border-left:var(--watt-space-xs) solid transparent;border-radius:var(--watt-space-s);color:var(--watt-color-neutral-white);font:inherit;text-align:left;text-decoration:none;background-color:transparent;cursor:pointer}watt-nav-list watt-nav-list-item .watt-nav-list-item__content{cursor:default}watt-nav-list watt-nav-list-item button{border-top:0;border-right:0;border-bottom:0}watt-nav-list watt-nav-list-item a:hover,watt-nav-list watt-nav-list-item button:hover{transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye)}watt-nav-list watt-nav-list-item a:hover,watt-nav-list watt-nav-list-item button:hover{background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list watt-nav-list-item a.active{background-color:var(--watt-nav-list-active-background-color)}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button{display:flex;align-items:center;gap:var(--watt-space-s);min-height:40px;background-color:var(--watt-nav-list-action-background-color);border-color:var(--watt-nav-list-action-background-color)}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button .watt-nav-list-item__button-content{min-width:0}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button .watt-nav-list-item__shortcut{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;display:none;margin-left:auto;color:var(--watt-color-neutral-white);white-space:nowrap}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button .watt-nav-list-item__cta-icon{margin-left:auto}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:hover .watt-nav-list-item__shortcut,watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:focus-visible .watt-nav-list-item__shortcut{display:inline-flex}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:hover .watt-nav-list-item__shortcut+.watt-nav-list-item__cta-icon,watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:focus-visible .watt-nav-list-item__shortcut+.watt-nav-list-item__cta-icon{display:none}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:hover,watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:focus-visible{background-color:var(--watt-nav-list-hover-background-color);border-color:var(--watt-nav-list-hover-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel{background-color:var(--watt-sidenav-background-color);margin:0;border-radius:0}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header.mat-expanded:hover,watt-nav-list.watt-nav-list--expandable .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye);background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header{border-radius:var(--watt-space-s);padding-left:calc(var(--watt-space-xs) + var(--watt-space-s));height:40px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header-title{color:var(--watt-color-neutral-white)}watt-nav-list.watt-nav-list--expandable .mat-expansion-indicator:after{color:var(--watt-color-neutral-white);position:relative;top:-3px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-body{padding:0}watt-nav-list.watt-nav-list--expandable watt-nav-list-item a,watt-nav-list.watt-nav-list--expandable watt-nav-list-item button,watt-nav-list.watt-nav-list--expandable watt-nav-list-item .watt-nav-list-item__content{padding-left:var(--watt-space-m)}watt-nav-list.watt-nav-list--expandable watt-nav-list-item.watt-nav-list-item--button button{padding-left:var(--watt-space-s)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: WattExpandOnActiveLinkDirective, selector: "[wattExpandOnActiveLink]", inputs: ["wattNavListItemComponents"], exportAs: ["wattExpandOnActiveLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
232
277
  }
233
278
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: WattNavListComponent, decorators: [{
234
279
  type: Component,
@@ -259,7 +304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
259
304
  MatExpansionPanelTitle,
260
305
  MatExpansionPanelHeader,
261
306
  WattExpandOnActiveLinkDirective,
262
- ], styles: ["watt-nav-list{background-color:var(--watt-sidenav-background-color)}watt-nav-list watt-nav-list-item{display:block}watt-nav-list watt-nav-list-item a{padding:var(--watt-space-s) var(--watt-space-m);padding:var(--watt-space-s);display:block;border-left:var(--watt-space-xs) solid transparent;border-radius:var(--watt-space-s);color:var(--watt-color-neutral-white);text-decoration:none}watt-nav-list watt-nav-list-item a:hover{transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye)}watt-nav-list watt-nav-list-item a:hover{background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list watt-nav-list-item a.active{background-color:var(--watt-nav-list-active-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel{background-color:var(--watt-sidenav-background-color);margin:0;border-radius:0}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header.mat-expanded:hover,watt-nav-list.watt-nav-list--expandable .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye);background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header{border-radius:var(--watt-space-s);padding-left:calc(var(--watt-space-xs) + var(--watt-space-s));height:40px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header-title{color:var(--watt-color-neutral-white)}watt-nav-list.watt-nav-list--expandable .mat-expansion-indicator:after{color:var(--watt-color-neutral-white);position:relative;top:-3px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-body{padding:0}watt-nav-list.watt-nav-list--expandable watt-nav-list-item a{padding-left:var(--watt-space-m)}\n"] }]
307
+ ], styles: ["watt-nav-list{background-color:var(--watt-sidenav-background-color);--watt-nav-list-action-background-color: #06515d}watt-nav-list watt-nav-list-item{display:block}watt-nav-list watt-nav-list-item a,watt-nav-list watt-nav-list-item button,watt-nav-list watt-nav-list-item .watt-nav-list-item__content{padding:var(--watt-space-s) var(--watt-space-m);padding:var(--watt-space-s);display:block;width:100%;border-left:var(--watt-space-xs) solid transparent;border-radius:var(--watt-space-s);color:var(--watt-color-neutral-white);font:inherit;text-align:left;text-decoration:none;background-color:transparent;cursor:pointer}watt-nav-list watt-nav-list-item .watt-nav-list-item__content{cursor:default}watt-nav-list watt-nav-list-item button{border-top:0;border-right:0;border-bottom:0}watt-nav-list watt-nav-list-item a:hover,watt-nav-list watt-nav-list-item button:hover{transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye)}watt-nav-list watt-nav-list-item a:hover,watt-nav-list watt-nav-list-item button:hover{background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list watt-nav-list-item a.active{background-color:var(--watt-nav-list-active-background-color)}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button{display:flex;align-items:center;gap:var(--watt-space-s);min-height:40px;background-color:var(--watt-nav-list-action-background-color);border-color:var(--watt-nav-list-action-background-color)}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button .watt-nav-list-item__button-content{min-width:0}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button .watt-nav-list-item__shortcut{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;display:none;margin-left:auto;color:var(--watt-color-neutral-white);white-space:nowrap}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button .watt-nav-list-item__cta-icon{margin-left:auto}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:hover .watt-nav-list-item__shortcut,watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:focus-visible .watt-nav-list-item__shortcut{display:inline-flex}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:hover .watt-nav-list-item__shortcut+.watt-nav-list-item__cta-icon,watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:focus-visible .watt-nav-list-item__shortcut+.watt-nav-list-item__cta-icon{display:none}watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:hover,watt-nav-list watt-nav-list-item.watt-nav-list-item--button button:focus-visible{background-color:var(--watt-nav-list-hover-background-color);border-color:var(--watt-nav-list-hover-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel{background-color:var(--watt-sidenav-background-color);margin:0;border-radius:0}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header.mat-expanded:hover,watt-nav-list.watt-nav-list--expandable .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){transition:background-color linear var(--watt-faster-than-a-blink-of-an-eye);background-color:var(--watt-nav-list-hover-background-color)}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header{border-radius:var(--watt-space-s);padding-left:calc(var(--watt-space-xs) + var(--watt-space-s));height:40px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-header-title{color:var(--watt-color-neutral-white)}watt-nav-list.watt-nav-list--expandable .mat-expansion-indicator:after{color:var(--watt-color-neutral-white);position:relative;top:-3px}watt-nav-list.watt-nav-list--expandable .mat-expansion-panel-body{padding:0}watt-nav-list.watt-nav-list--expandable watt-nav-list-item a,watt-nav-list.watt-nav-list--expandable watt-nav-list-item button,watt-nav-list.watt-nav-list--expandable watt-nav-list-item .watt-nav-list-item__content{padding-left:var(--watt-space-m)}watt-nav-list.watt-nav-list--expandable watt-nav-list-item.watt-nav-list-item--button button{padding-left:var(--watt-space-s)}\n"] }]
263
308
  }], propDecorators: { navListItemComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => WattNavListItemComponent), { isSignal: true }] }], expandable: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandable", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }] } });
264
309
 
265
310
  //#region License
@@ -1 +1 @@
1
- {"version":3,"file":"energinet-watt-shell.mjs","sources":["../../../libs/watt/package/shell/shell.component.ts","../../../libs/watt/package/shell/shell.component.html","../../../libs/watt/package/shell/nav-list/watt-expand-on-active-link.directive.ts","../../../libs/watt/package/shell/nav-list/watt-nav-list-item.component.ts","../../../libs/watt/package/shell/nav-list/watt-nav-list.component.ts","../../../libs/watt/package/shell/nav-list/index.ts","../../../libs/watt/package/shell/index.ts","../../../libs/watt/package/shell/energinet-watt-shell.ts"],"sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Router, NavigationEnd } from '@angular/router';\nimport { Component, inject, viewChild } from '@angular/core';\n\nimport { filter, map } from 'rxjs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\n\nimport { WattButtonComponent } from '@energinet/watt/button';\nimport { WattBreakpointsObserver } from '@energinet/watt/core/breakpoints';\n\n@Component({\n selector: 'watt-shell',\n styleUrls: ['./shell.component.scss'],\n templateUrl: './shell.component.html',\n imports: [MatSidenavModule, MatToolbarModule, WattButtonComponent],\n})\nexport class WattShellComponent {\n private breakpointObserver = inject(WattBreakpointsObserver);\n private router = inject(Router);\n private readonly sidenav = viewChild.required<MatSidenav>('drawer');\n\n /**\n * @ignore\n */\n private onNavigationEnd$ = this.router.events.pipe(\n filter((event) => event instanceof NavigationEnd)\n );\n\n /**\n * @ignore\n */\n isHandset = toSignal(\n this.breakpointObserver\n .observe(['XSmall', 'Small', 'Medium'])\n .pipe(map((result) => result.matches))\n );\n\n constructor() {\n this.onNavigationEnd$.pipe(takeUntilDestroyed()).subscribe(() => {\n const sidenav = this.sidenav();\n if (this.isHandset() && sidenav.opened) {\n sidenav.close();\n }\n });\n }\n}\n","<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<mat-sidenav-container class=\"watt-sidenav-container\">\n <mat-sidenav\n #drawer\n class=\"watt-sidenav\"\n [disableClose]=\"isHandset() === false\"\n [mode]=\"isHandset() ? 'over' : 'side'\"\n [opened]=\"isHandset() === false\"\n role=\"navigation\"\n >\n @if (isHandset()) {\n <watt-button\n variant=\"icon\"\n icon=\"close\"\n class=\"watt-sidenav-close-button\"\n (click)=\"drawer.toggle()\"\n />\n }\n <ng-content select=\"[watt-shell-sidenav]\" />\n </mat-sidenav>\n\n <mat-sidenav-content class=\"watt-sidenav-content\">\n <mat-toolbar class=\"watt-toolbar\">\n @if (isHandset()) {\n <watt-button variant=\"icon\" icon=\"menu\" (click)=\"drawer.toggle()\" />\n }\n\n <ng-content select=\"[watt-shell-toolbar]\" />\n </mat-toolbar>\n\n <main class=\"watt-main-content\">\n <ng-content />\n </main>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Directive, inject, input, effect, OutputRefSubscription } from '@angular/core';\nimport { MatExpansionPanel } from '@angular/material/expansion';\n\nimport { type WattNavListItemComponent } from './watt-nav-list-item.component';\n\n@Directive({\n selector: '[wattExpandOnActiveLink]',\n exportAs: 'wattExpandOnActiveLink',\n})\nexport class WattExpandOnActiveLinkDirective {\n private panel = inject(MatExpansionPanel);\n\n private navListItemsEffect = effect((cleanupFn) => {\n const subs: OutputRefSubscription[] = [];\n\n cleanupFn(() => subs.forEach((sub) => sub.unsubscribe()));\n\n const navListItems = this.wattNavListItemComponents();\n\n if (navListItems.length > 0) {\n subs.push(\n ...navListItems.map((item) =>\n item.isActive.subscribe((isActive) => {\n if (isActive) {\n this.panel.open();\n }\n })\n )\n );\n }\n });\n\n wattNavListItemComponents = input<readonly WattNavListItemComponent[]>([]);\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\n@Component({\n selector: 'watt-nav-list-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, RouterLink, RouterLinkActive],\n template: `\n @if (isExternalLink()) {\n <a [href]=\"link()\" [attr.target]=\"target()\"\n ><ng-container *ngTemplateOutlet=\"templateContent\"\n /></a>\n } @else {\n <a\n [routerLink]=\"link()\"\n routerLinkActive=\"active\"\n (isActiveChange)=\"onRouterLinkActive($event)\"\n ><ng-container *ngTemplateOutlet=\"templateContent\"\n /></a>\n }\n\n <ng-template #templateContent>\n <ng-content />\n </ng-template>\n `,\n})\nexport class WattNavListItemComponent {\n link = input.required<string>();\n target = input<'_self' | '_blank' | '_parent' | '_top'>('_self');\n isActive = output<boolean>();\n\n /**\n * @ignore\n */\n isExternalLink = computed(() => /^(http:\\/\\/|https:\\/\\/)/i.test(this.link()));\n\n /**\n * @ignore\n */\n onRouterLinkActive(isActive: boolean) {\n this.isActive.emit(isActive);\n }\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n contentChildren,\n input,\n} from '@angular/core';\nimport {\n MatExpansionPanel,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from '@angular/material/expansion';\n\nimport { WattExpandOnActiveLinkDirective } from './watt-expand-on-active-link.directive';\nimport { WattNavListItemComponent } from './watt-nav-list-item.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'watt-nav-list',\n styleUrl: './watt-nav-list.component.scss',\n host: {\n '[class.watt-nav-list--expandable]': 'expandable()',\n },\n template: `\n @if (expandable()) {\n <mat-expansion-panel\n wattExpandOnActiveLink\n [wattNavListItemComponents]=\"navListItemComponents()\"\n class=\"mat-elevation-z0\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title class=\"watt-text-m\">{{ title() }}</mat-panel-title>\n </mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"navListTemplate\" />\n </mat-expansion-panel>\n } @else {\n <ng-container *ngTemplateOutlet=\"navListTemplate\" />\n }\n\n <ng-template #navListTemplate>\n <ng-content />\n </ng-template>\n `,\n imports: [\n NgTemplateOutlet,\n MatExpansionPanel,\n MatExpansionPanelTitle,\n MatExpansionPanelHeader,\n WattExpandOnActiveLinkDirective,\n ],\n})\nexport class WattNavListComponent {\n /**\n * @ignore\n */\n navListItemComponents = contentChildren(WattNavListItemComponent);\n\n expandable = input(false);\n title = input('');\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nexport { WattNavListComponent } from './watt-nav-list.component';\nexport { WattNavListItemComponent } from './watt-nav-list-item.component';\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nexport { WattShellComponent } from './shell.component';\nexport * from './nav-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"energinet-watt-shell.mjs","sources":["../../../libs/watt/package/shell/shell.component.ts","../../../libs/watt/package/shell/shell.component.html","../../../libs/watt/package/shell/nav-list/watt-expand-on-active-link.directive.ts","../../../libs/watt/package/shell/nav-list/watt-nav-list-item.component.ts","../../../libs/watt/package/shell/nav-list/watt-nav-list.component.ts","../../../libs/watt/package/shell/nav-list/index.ts","../../../libs/watt/package/shell/index.ts","../../../libs/watt/package/shell/energinet-watt-shell.ts"],"sourcesContent":["//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Router, NavigationEnd } from '@angular/router';\nimport { Component, inject, viewChild } from '@angular/core';\n\nimport { filter, map } from 'rxjs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\n\nimport { WattButtonComponent } from '@energinet/watt/button';\nimport { WattBreakpointsObserver } from '@energinet/watt/core/breakpoints';\n\n@Component({\n selector: 'watt-shell',\n styleUrls: ['./shell.component.scss'],\n templateUrl: './shell.component.html',\n imports: [MatSidenavModule, MatToolbarModule, WattButtonComponent],\n})\nexport class WattShellComponent {\n private breakpointObserver = inject(WattBreakpointsObserver);\n private router = inject(Router);\n private readonly sidenav = viewChild.required<MatSidenav>('drawer');\n\n /**\n * @ignore\n */\n private onNavigationEnd$ = this.router.events.pipe(\n filter((event) => event instanceof NavigationEnd)\n );\n\n /**\n * @ignore\n */\n isHandset = toSignal(\n this.breakpointObserver\n .observe(['XSmall', 'Small', 'Medium'])\n .pipe(map((result) => result.matches))\n );\n\n constructor() {\n this.onNavigationEnd$.pipe(takeUntilDestroyed()).subscribe(() => {\n const sidenav = this.sidenav();\n if (this.isHandset() && sidenav.opened) {\n sidenav.close();\n }\n });\n }\n}\n","<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<mat-sidenav-container class=\"watt-sidenav-container\">\n <mat-sidenav\n #drawer\n class=\"watt-sidenav\"\n [disableClose]=\"isHandset() === false\"\n [mode]=\"isHandset() ? 'over' : 'side'\"\n [opened]=\"isHandset() === false\"\n role=\"navigation\"\n >\n @if (isHandset()) {\n <watt-button\n variant=\"icon\"\n icon=\"close\"\n class=\"watt-sidenav-close-button\"\n (click)=\"drawer.toggle()\"\n />\n }\n <ng-content select=\"[watt-shell-sidenav]\" />\n </mat-sidenav>\n\n <mat-sidenav-content class=\"watt-sidenav-content\">\n <mat-toolbar class=\"watt-toolbar\">\n @if (isHandset()) {\n <watt-button variant=\"icon\" icon=\"menu\" (click)=\"drawer.toggle()\" />\n }\n\n <ng-content select=\"[watt-shell-toolbar]\" />\n </mat-toolbar>\n\n <main class=\"watt-main-content\">\n <ng-content />\n </main>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { Directive, inject, input, effect, OutputRefSubscription } from '@angular/core';\nimport { MatExpansionPanel } from '@angular/material/expansion';\n\nimport { type WattNavListItemComponent } from './watt-nav-list-item.component';\n\n@Directive({\n selector: '[wattExpandOnActiveLink]',\n exportAs: 'wattExpandOnActiveLink',\n})\nexport class WattExpandOnActiveLinkDirective {\n private panel = inject(MatExpansionPanel);\n\n private navListItemsEffect = effect((cleanupFn) => {\n const subs: OutputRefSubscription[] = [];\n\n cleanupFn(() => subs.forEach((sub) => sub.unsubscribe()));\n\n const navListItems = this.wattNavListItemComponents();\n\n if (navListItems.length > 0) {\n subs.push(\n ...navListItems.map((item) =>\n item.isActive.subscribe((isActive) => {\n if (isActive) {\n this.panel.open();\n }\n })\n )\n );\n }\n });\n\n wattNavListItemComponents = input<readonly WattNavListItemComponent[]>([]);\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { WattIcon, WattIconComponent } from '@energinet/watt/icon';\n\nexport type WattNavListItemVariant = 'link' | 'button';\n\n@Component({\n selector: 'watt-nav-list-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.watt-nav-list-item--link]': 'variant() === \"link\"',\n '[class.watt-nav-list-item--button]': 'variant() === \"button\"',\n },\n imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, WattIconComponent],\n template: `\n @if (variant() === 'button') {\n <button type=\"button\" [attr.aria-keyshortcuts]=\"shortcut()\" (click)=\"buttonClick.emit()\">\n <span class=\"watt-nav-list-item__button-content\">\n <ng-container *ngTemplateOutlet=\"templateContent\" />\n </span>\n\n @if (shortcut()) {\n <span class=\"watt-nav-list-item__shortcut\" aria-hidden=\"true\">{{ shortcut() }}</span>\n }\n\n <watt-icon class=\"watt-nav-list-item__cta-icon\" [name]=\"icon()\" aria-hidden=\"true\" />\n </button>\n } @else if (link(); as link) {\n @if (isExternalLink()) {\n <a [href]=\"link\" [attr.target]=\"target()\"\n ><ng-container *ngTemplateOutlet=\"templateContent\"\n /></a>\n } @else {\n <a\n [routerLink]=\"link\"\n routerLinkActive=\"active\"\n (isActiveChange)=\"onRouterLinkActive($event)\"\n ><ng-container *ngTemplateOutlet=\"templateContent\"\n /></a>\n }\n } @else {\n <span class=\"watt-nav-list-item__content\">\n <ng-container *ngTemplateOutlet=\"templateContent\" />\n </span>\n }\n\n <ng-template #templateContent>\n <ng-content />\n </ng-template>\n `,\n})\nexport class WattNavListItemComponent {\n link = input<string>();\n target = input<'_self' | '_blank' | '_parent' | '_top'>('_self');\n variant = input<WattNavListItemVariant>('link');\n icon = input<WattIcon>('arrowRightAlt');\n shortcut = input<string>();\n isActive = output<boolean>();\n buttonClick = output<void>();\n\n /**\n * @ignore\n */\n isExternalLink = computed(() => /^(http:\\/\\/|https:\\/\\/)/i.test(this.link() ?? ''));\n\n /**\n * @ignore\n */\n onRouterLinkActive(isActive: boolean) {\n this.isActive.emit(isActive);\n }\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n contentChildren,\n input,\n} from '@angular/core';\nimport {\n MatExpansionPanel,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from '@angular/material/expansion';\n\nimport { WattExpandOnActiveLinkDirective } from './watt-expand-on-active-link.directive';\nimport { WattNavListItemComponent } from './watt-nav-list-item.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'watt-nav-list',\n styleUrl: './watt-nav-list.component.scss',\n host: {\n '[class.watt-nav-list--expandable]': 'expandable()',\n },\n template: `\n @if (expandable()) {\n <mat-expansion-panel\n wattExpandOnActiveLink\n [wattNavListItemComponents]=\"navListItemComponents()\"\n class=\"mat-elevation-z0\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title class=\"watt-text-m\">{{ title() }}</mat-panel-title>\n </mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"navListTemplate\" />\n </mat-expansion-panel>\n } @else {\n <ng-container *ngTemplateOutlet=\"navListTemplate\" />\n }\n\n <ng-template #navListTemplate>\n <ng-content />\n </ng-template>\n `,\n imports: [\n NgTemplateOutlet,\n MatExpansionPanel,\n MatExpansionPanelTitle,\n MatExpansionPanelHeader,\n WattExpandOnActiveLinkDirective,\n ],\n})\nexport class WattNavListComponent {\n /**\n * @ignore\n */\n navListItemComponents = contentChildren(WattNavListItemComponent);\n\n expandable = input(false);\n title = input('');\n}\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nexport { WattNavListComponent } from './watt-nav-list.component';\nexport {\n WattNavListItemComponent,\n type WattNavListItemVariant,\n} from './watt-nav-list-item.component';\n","//#region License\n/**\n * @license\n * Copyright 2020 Energinet DataHub A/S\n *\n * Licensed under the Apache License, Version 2.0 (the \"License2\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//#endregion\nexport { WattShellComponent } from './shell.component';\nexport * from './nav-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@energinet/watt",
4
- "version": "4.6.12",
4
+ "version": "4.6.14",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": {
@@ -17,10 +17,15 @@ declare class WattShellComponent {
17
17
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WattShellComponent, "watt-shell", never, {}, {}, never, ["[watt-shell-sidenav]", "[watt-shell-toolbar]", "*"], true, never>;
18
18
  }
19
19
 
20
+ type WattNavListItemVariant = 'link' | 'button';
20
21
  declare class WattNavListItemComponent {
21
- link: _angular_core.InputSignal<string>;
22
+ link: _angular_core.InputSignal<string | undefined>;
22
23
  target: _angular_core.InputSignal<"_self" | "_blank" | "_parent" | "_top">;
24
+ variant: _angular_core.InputSignal<WattNavListItemVariant>;
25
+ icon: _angular_core.InputSignal<"close" | "link" | "search" | "filter" | "plus" | "minus" | "edit" | "redo" | "undo" | "remove" | "removeForever" | "cancel" | "checkmark" | "user" | "settings" | "contentCopy" | "date" | "time" | "email" | "markEmailUnread" | "openInNew" | "monetization" | "payments" | "forwardMessage" | "forward" | "menu" | "moreVertical" | "logout" | "login" | "help" | "alternateEmail" | "refresh" | "language" | "pendingActions" | "toggleOn" | "toggleOff" | "personCheck" | "send" | "left" | "right" | "up" | "down" | "arrowDropDown" | "arrowRightAlt" | "arrowLeftAlt" | "keyboardDoubleArrowLeft" | "keyboardDoubleArrowRight" | "danger" | "warning" | "success" | "info" | "feedback" | "save" | "upload" | "download" | "fileDownload" | "fileUpload" | "print" | "preview" | "attachFile" | "article" | "contract" | "power" | "location" | "smartDisplay" | "windmill" | "solarPower" | "priorityHigh" | "notifications" | "notificationsUnread" | "horizontalRule" | "wrongLocation" | "heatPump" | "inventory" | "globe" | "calculate" | "bar_chart_4_bars" | "view_list" | "view_stream" | "construction" | "factory" | "nest_eco_leaf" | "flash_on" | "matchCase" | "share">;
26
+ shortcut: _angular_core.InputSignal<string | undefined>;
23
27
  isActive: _angular_core.OutputEmitterRef<boolean>;
28
+ buttonClick: _angular_core.OutputEmitterRef<void>;
24
29
  /**
25
30
  * @ignore
26
31
  */
@@ -30,7 +35,7 @@ declare class WattNavListItemComponent {
30
35
  */
31
36
  onRouterLinkActive(isActive: boolean): void;
32
37
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WattNavListItemComponent, never>;
33
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WattNavListItemComponent, "watt-nav-list-item", never, { "link": { "alias": "link"; "required": true; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, { "isActive": "isActive"; }, never, ["*"], true, never>;
38
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WattNavListItemComponent, "watt-nav-list-item", never, { "link": { "alias": "link"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "shortcut": { "alias": "shortcut"; "required": false; "isSignal": true; }; }, { "isActive": "isActive"; "buttonClick": "buttonClick"; }, never, ["*"], true, never>;
34
39
  }
35
40
 
36
41
  declare class WattNavListComponent {
@@ -45,3 +50,4 @@ declare class WattNavListComponent {
45
50
  }
46
51
 
47
52
  export { WattNavListComponent, WattNavListItemComponent, WattShellComponent };
53
+ export type { WattNavListItemVariant };