@oicl/openbridge-webcomponents 0.0.20260411072018 → 0.0.20260414105212
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ar/building-blocks/poi/poi-base.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi/poi-base.js +1 -1
- package/dist/ar/building-blocks/poi/poi-base.js.map +1 -1
- package/dist/ar/building-blocks/poi-button/poi-button.css.js +27 -37
- package/dist/ar/building-blocks/poi-button/poi-button.css.js.map +1 -1
- package/dist/ar/building-blocks/poi-button/poi-button.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi-button/poi-button.js +11 -5
- package/dist/ar/building-blocks/poi-button/poi-button.js.map +1 -1
- package/dist/ar/building-blocks/poi-graphic-line/poi-graphic-line.css.js +7 -7
- package/dist/ar/building-blocks/poi-graphic-line/poi-graphic-line.d.ts +1 -1
- package/dist/ar/building-blocks/poi-graphic-line/poi-graphic-line.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi-graphic-line/poi-graphic-line.js +7 -3
- package/dist/ar/building-blocks/poi-graphic-line/poi-graphic-line.js.map +1 -1
- package/dist/ar/building-blocks/poi-header/poi-header.js +3 -3
- package/dist/ar/building-blocks/poi-header/poi-header.js.map +1 -1
- package/dist/ar/building-blocks/poi-line/poi-line.css.js +12 -7
- package/dist/ar/building-blocks/poi-line/poi-line.css.js.map +1 -1
- package/dist/ar/building-blocks/poi-line/poi-line.d.ts +2 -2
- package/dist/ar/building-blocks/poi-line/poi-line.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi-line/poi-line.js +4 -5
- package/dist/ar/building-blocks/poi-line/poi-line.js.map +1 -1
- package/dist/ar/building-blocks/poi-object/poi-object.css.js +0 -8
- package/dist/ar/building-blocks/poi-object/poi-object.css.js.map +1 -1
- package/dist/ar/building-blocks/poi-object/poi-object.d.ts +4 -1
- package/dist/ar/building-blocks/poi-object/poi-object.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi-object/poi-object.js +19 -1
- package/dist/ar/building-blocks/poi-object/poi-object.js.map +1 -1
- package/dist/ar/building-blocks/poi-pointer/poi-pointer.css.js +1 -14
- package/dist/ar/building-blocks/poi-pointer/poi-pointer.css.js.map +1 -1
- package/dist/ar/building-blocks/poi-pointer/poi-pointer.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi-pointer/poi-pointer.js +4 -4
- package/dist/ar/building-blocks/poi-pointer/poi-pointer.js.map +1 -1
- package/dist/ar/building-blocks/poi-selection-frame/poi-selection-frame.css.js +20 -20
- package/dist/ar/building-blocks/poi-selection-frame/poi-selection-frame.d.ts +4 -1
- package/dist/ar/building-blocks/poi-selection-frame/poi-selection-frame.d.ts.map +1 -1
- package/dist/ar/building-blocks/poi-selection-frame/poi-selection-frame.js +33 -4
- package/dist/ar/building-blocks/poi-selection-frame/poi-selection-frame.js.map +1 -1
- package/dist/ar/building-blocks/ruler-pointer/ruler-pointer.js +1 -1
- package/dist/ar/building-blocks/ruler-pointer/ruler-pointer.js.map +1 -1
- package/dist/ar/poi-controller/poi-controller.d.ts +1 -1
- package/dist/ar/poi-controller/poi-controller.js +1 -1
- package/dist/ar/poi-controller/poi-controller.js.map +1 -1
- package/dist/ar/poi-group/poi-group.d.ts.map +1 -1
- package/dist/ar/poi-group/poi-group.js +1 -1
- package/dist/ar/poi-group/poi-group.js.map +1 -1
- package/dist/ar/poi-layer/poi-layer.css.js +1 -1
- package/dist/ar/poi-layer/poi-layer.d.ts +2 -1
- package/dist/ar/poi-layer/poi-layer.d.ts.map +1 -1
- package/dist/ar/poi-layer/poi-layer.js +8 -3
- package/dist/ar/poi-layer/poi-layer.js.map +1 -1
- package/dist/ar/poi-layer-stack/poi-layer-stack.d.ts +2 -1
- package/dist/ar/poi-layer-stack/poi-layer-stack.d.ts.map +1 -1
- package/dist/ar/poi-layer-stack/poi-layer-stack.js +12 -3
- package/dist/ar/poi-layer-stack/poi-layer-stack.js.map +1 -1
- package/dist/components/slider/slider.css.js +62 -18
- package/dist/components/slider/slider.css.js.map +1 -1
- package/dist/components/slider/slider.d.ts +1 -0
- package/dist/components/slider/slider.d.ts.map +1 -1
- package/dist/components/slider/slider.js +13 -2
- package/dist/components/slider/slider.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-base.d.ts","sourceRoot":"","sources":["../../../../src/ar/building-blocks/poi/poi-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAkB,MAAM,KAAK,CAAC;AAGhE,OAAO,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAW,GAAG,EAAE,2BAA2B,EAAC,MAAM,UAAU,CAAC;AACpE,OAAO,EAAC,WAAW,IAAI,YAAY,EAAC,CAAC;AACrC,OAAO,EAAC,2BAA2B,IAAI,2BAA2B,EAAC,CAAC;AAEpE,gBAAgB;AAChB,KAAK,uBAAuB,GACxB,2BAA2B,CAAC,KAAK,GACjC,2BAA2B,CAAC,MAAM,GAClC,2BAA2B,CAAC,IAAI,CAAC;AAmBrC;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,UAAW,YAAW,GAAG;IACvD,OAAO,CAAC,cAAc,CAAC,CAAmB;IAEjC,iBAAiB;IASA,IAAI,EAAE,UAAU,CAAmB;
|
|
1
|
+
{"version":3,"file":"poi-base.d.ts","sourceRoot":"","sources":["../../../../src/ar/building-blocks/poi/poi-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -423,7 +423,7 @@ __decorateClass([
|
|
|
423
423
|
property({ type: String })
|
|
424
424
|
], ObcPoiBase.prototype, "type");
|
|
425
425
|
__decorateClass([
|
|
426
|
-
property({ type: String
|
|
426
|
+
property({ type: String })
|
|
427
427
|
], ObcPoiBase.prototype, "value");
|
|
428
428
|
__decorateClass([
|
|
429
429
|
property({ type: String })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-base.js","sources":["../../../../src/ar/building-blocks/poi/poi-base.ts"],"sourcesContent":["import {LitElement, TemplateResult, html, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport componentStyle from './poi-base.css?inline';\nimport './poi.js';\nimport {\n ObcPoiButtonType,\n ObcPoiButtonDataItem,\n} from '../poi-button/poi-button.js';\nimport {ObcPoiHeaderState} from '../poi-header/poi-header.js';\nimport {ObcPoiState, ObcPoiType, ObcPoiValue} from './poi.js';\nimport {\n ObcPoiPointerState,\n ObcPoiPointerType,\n} from '../poi-pointer/poi-pointer.js';\nimport {POI_ATTR, Poi, PoiDataVisualRectPreference} from './poi.js';\nexport {ObcPoiValue as PoiBaseValue};\nexport {PoiDataVisualRectPreference as PoiBaseVisualRectPreference};\n\n/** @internal */\ntype VisualElementPreference =\n | PoiDataVisualRectPreference.Group\n | PoiDataVisualRectPreference.Anchor\n | PoiDataVisualRectPreference.Size;\n\nfunction stripWhitespaceTextNodes(el: Element): void {\n for (const node of Array.from(el.childNodes)) {\n if (\n node.nodeType === Node.TEXT_NODE &&\n (node.textContent ?? '').trim() === ''\n ) {\n node.remove();\n }\n }\n}\n\nconst X_FILTER_CUTOFF_HZ = 16;\nconst X_FILTER_DEADBAND_PX = 0.1;\nconst X_MOVING_HINT_MS = 120;\nconst VALID_POI_TYPES = new Set(Object.values(ObcPoiType));\nconst VALID_POI_STATES = new Set(Object.values(ObcPoiState));\n\n/**\n * Shared base class for top-level POI variant components (`obc-poi-data`,\n * `obc-poi-aton`, `obc-poi-vessel`).\n *\n * Implements `Poi` and contains all positioning, X-filter,\n * layout-change dispatch, and visual-query logic so that each variant\n * only needs to override `renderContent()` and `getVisualNodes()`.\n */\nexport class ObcPoiBase extends LitElement implements Poi {\n private headerObserver?: MutationObserver;\n\n override connectedCallback() {\n stripWhitespaceTextNodes(this);\n super.connectedCallback();\n this.setAttribute(POI_ATTR, '');\n this.setupHeaderObserver();\n }\n\n /* ---------- POI marker properties ---------- */\n\n @property({type: String}) type: ObcPoiType = ObcPoiType.Line;\n @property({type: String, reflect: true}) value: ObcPoiValue =\n ObcPoiValue.Unchecked;\n @property({type: String}) state: ObcPoiState = ObcPoiState.Enabled;\n @property({type: Boolean}) selected = false;\n @property({type: String, attribute: 'button-type'})\n buttonType = ObcPoiButtonType.Button;\n @property({type: Boolean, attribute: 'overlap-opaque'})\n overlapOpaque = false;\n @property({attribute: false})\n data: ObcPoiButtonDataItem[] = [];\n @property({type: Boolean, attribute: 'has-header'}) hasHeader = false;\n @property({type: String, attribute: 'header-content'}) headerContent = '';\n @property({type: Boolean}) hasPointer = false;\n @property({type: String, attribute: 'pointer-type'})\n pointerType: ObcPoiPointerType | null = null;\n @property({type: String, attribute: 'pointer-state'})\n pointerState: ObcPoiPointerState | null = null;\n @property({type: Number}) relativeDirection = 0;\n\n /* ---------- Poi — position ---------- */\n\n @property({type: Number}) x = 0;\n @property({type: Number}) y = 192;\n @property({type: Number, attribute: 'button-y'}) buttonY: number | null =\n null;\n @property({type: Boolean, attribute: 'fixed-target'}) fixedTarget = false;\n @property({type: Number, attribute: 'button-offset-x'}) buttonOffsetX = 0;\n @property({type: Number, attribute: 'target-offset-x'}) targetOffsetX = 0;\n @property({type: Number, attribute: 'box-width'}) boxWidth: number | null =\n null;\n @property({type: Number, attribute: 'box-height'}) boxHeight: number | null =\n null;\n @property({type: Number, attribute: 'line-compensation-y'})\n lineCompensationY = 0;\n @property({type: Number, attribute: 'outside-angle'}) outsideAngle = 315;\n @property({type: Boolean, attribute: 'animate-position'})\n animatePosition = false;\n\n /* ---------- X-filter state ---------- */\n\n private filteredX = 0;\n private xFilterTarget = 0;\n private xFilterInitialized = false;\n private lastXFilterTimestampMs = 0;\n private xFilterRaf = 0;\n private xMovingHintTimeout: number | null = null;\n\n /* ---------- Layout change ---------- */\n\n private dispatchLayoutChange() {\n this.dispatchEvent(\n new CustomEvent('obc-poi-data-layout-change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /* ---------- X filter (low-pass) ---------- */\n\n private stepXFilter = (nowMs: number) => {\n this.xFilterRaf = 0;\n if (!this.isConnected || !this.xFilterInitialized) {\n return;\n }\n\n const dtSeconds =\n this.lastXFilterTimestampMs > 0\n ? Math.min(\n 0.25,\n Math.max(1 / 120, (nowMs - this.lastXFilterTimestampMs) / 1000)\n )\n : 1 / 60;\n this.lastXFilterTimestampMs = nowMs;\n\n const alpha = 1 - Math.exp(-2 * Math.PI * X_FILTER_CUTOFF_HZ * dtSeconds);\n const delta = this.xFilterTarget - this.filteredX;\n const nextX =\n Math.abs(delta) <= X_FILTER_DEADBAND_PX\n ? this.xFilterTarget\n : this.filteredX + delta * alpha;\n const changed = Math.abs(nextX - this.filteredX) > 1e-6;\n this.filteredX = nextX;\n if (changed) {\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n this.dispatchLayoutChange();\n }\n\n const settled =\n Math.abs(this.xFilterTarget - this.filteredX) <= X_FILTER_DEADBAND_PX;\n\n if (settled) {\n this.filteredX = this.xFilterTarget;\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n this.lastXFilterTimestampMs = 0;\n this.markXMoving();\n return;\n }\n\n this.markXMoving();\n this.xFilterRaf = requestAnimationFrame(this.stepXFilter);\n };\n\n private syncXFilterTarget(nextX: number) {\n this.xFilterTarget = nextX;\n\n if (!this.xFilterInitialized) {\n this.xFilterInitialized = true;\n this.filteredX = nextX;\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n this.markXMoving();\n return;\n }\n\n if (Math.abs(nextX - this.filteredX) <= X_FILTER_DEADBAND_PX) {\n this.filteredX = this.xFilterTarget;\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n if (this.xFilterRaf) {\n cancelAnimationFrame(this.xFilterRaf);\n this.xFilterRaf = 0;\n }\n this.lastXFilterTimestampMs = 0;\n this.markXMoving();\n return;\n }\n\n if (!this.xFilterRaf) {\n this.lastXFilterTimestampMs = 0;\n this.markXMoving();\n this.xFilterRaf = requestAnimationFrame(this.stepXFilter);\n }\n }\n\n private markXMoving() {\n this.setAttribute('data-x-moving', 'true');\n if (this.xMovingHintTimeout !== null) {\n window.clearTimeout(this.xMovingHintTimeout);\n }\n this.xMovingHintTimeout = window.setTimeout(() => {\n this.removeAttribute('data-x-moving');\n this.xMovingHintTimeout = null;\n }, X_MOVING_HINT_MS);\n }\n\n /* ---------- Lifecycle ---------- */\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.headerObserver?.disconnect();\n this.headerObserver = undefined;\n if (this.xFilterRaf) {\n cancelAnimationFrame(this.xFilterRaf);\n this.xFilterRaf = 0;\n }\n this.lastXFilterTimestampMs = 0;\n if (this.xMovingHintTimeout !== null) {\n window.clearTimeout(this.xMovingHintTimeout);\n this.xMovingHintTimeout = null;\n }\n }\n\n private setupHeaderObserver() {\n this.headerObserver?.disconnect();\n this.headerObserver = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n this.syncHeaderContent();\n this.syncHeaderState();\n return;\n }\n if (\n mutation.type === 'attributes' &&\n mutation.target instanceof HTMLElement &&\n mutation.target.getAttribute('slot') === 'header'\n ) {\n this.syncHeaderContent();\n this.syncHeaderState();\n return;\n }\n }\n });\n this.headerObserver.observe(this, {\n childList: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('x')) {\n this.syncXFilterTarget(Number.isFinite(this.x) ? this.x : 0);\n }\n if (\n changedProperties.has('buttonY') ||\n changedProperties.has('y') ||\n changedProperties.has('fixedTarget') ||\n changedProperties.has('lineCompensationY') ||\n changedProperties.has('selected') ||\n changedProperties.has('type')\n ) {\n this.updatePosition();\n }\n if (\n changedProperties.has('x') ||\n changedProperties.has('buttonY') ||\n changedProperties.has('y') ||\n changedProperties.has('buttonOffsetX') ||\n changedProperties.has('targetOffsetX') ||\n changedProperties.has('lineCompensationY') ||\n changedProperties.has('fixedTarget') ||\n changedProperties.has('selected') ||\n changedProperties.has('type')\n ) {\n this.dispatchLayoutChange();\n }\n this.syncHeaderContent();\n this.syncHeaderState();\n }\n\n protected override firstUpdated(_changedProperties: Map<string, unknown>) {\n this.syncHeaderContent();\n this.syncHeaderState();\n }\n\n /* ---------- Vertical positioning ---------- */\n\n private updatePosition() {\n if (this.fixedTarget) {\n if (typeof this.buttonY === 'number' && Number.isFinite(this.buttonY)) {\n this.style.top = `${this.buttonY - this.effectiveLineLength}px`;\n } else {\n this.style.removeProperty('top');\n }\n } else if (\n typeof this.buttonY === 'number' &&\n Number.isFinite(this.buttonY)\n ) {\n this.style.top = `${this.buttonY}px`;\n } else {\n this.style.removeProperty('top');\n }\n }\n\n protected get selectedVerticalOffset(): number {\n if (!this.selected) {\n return 0;\n }\n const offset = getComputedStyle(this).getPropertyValue(\n '--obc-poi-target-selected-vertical-offset'\n );\n const parsed = Number.parseFloat(offset);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n\n protected get layerVerticalOffset(): number {\n const offset = getComputedStyle(this).getPropertyValue(\n '--obc-poi-target-layer-vertical-offset'\n );\n const parsed = Number.parseFloat(offset);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n\n protected get resolvedPoiType(): ObcPoiType {\n return VALID_POI_TYPES.has(this.type as ObcPoiType)\n ? (this.type as ObcPoiType)\n : ObcPoiType.Line;\n }\n\n protected get resolvedPoiState(): ObcPoiState {\n return VALID_POI_STATES.has(this.state as ObcPoiState)\n ? (this.state as ObcPoiState)\n : ObcPoiState.Enabled;\n }\n\n /* ---------- Poi — visual query ---------- */\n\n /**\n * Override in each variant to query the correct inner component tag names.\n * Returns the poi wrapper element and poi-button element from the shadow DOM.\n */\n protected getVisualNodes(): {\n poi: HTMLElement | null;\n button: HTMLElement | null;\n wrapper: HTMLElement | null;\n buttonWrapper: HTMLElement | null;\n } {\n return this.queryVisualNodes('obc-poi', 'obc-poi-button');\n }\n\n /**\n * Helper for common `getVisualNodes()` pattern: query poi tag in own shadow,\n * then button tag. When the button is slotted into poi (aton/vessel variants),\n * it lives in this variant's shadow root. When using the fallback (data variant),\n * it lives inside poi's shadow root.\n */\n protected queryVisualNodes(poiTag: string, buttonTag: string) {\n const poi = this.shadowRoot?.querySelector(poiTag) as HTMLElement | null;\n const button = (this.shadowRoot?.querySelector(buttonTag) ??\n poi?.shadowRoot?.querySelector(buttonTag)) as HTMLElement | null;\n const buttonShadow = button?.shadowRoot ?? null;\n const buttonWrapper = buttonShadow?.querySelector(\n '.button-wrapper'\n ) as HTMLElement | null;\n const wrapper = buttonShadow?.querySelector(\n '.wrapper'\n ) as HTMLElement | null;\n return {poi, button, wrapper, buttonWrapper};\n }\n\n public getVisualRect(\n preference: PoiDataVisualRectPreference = PoiDataVisualRectPreference.Largest\n ): DOMRect {\n const {poi, button, wrapper, buttonWrapper} = this.getVisualNodes();\n const candidates = [wrapper, buttonWrapper, button, poi].filter(\n (element): element is HTMLElement => !!element\n );\n\n if (preference === PoiDataVisualRectPreference.Group) {\n const hasDataWrapper = wrapper?.classList.contains('has-data') ?? false;\n return (\n (hasDataWrapper ? wrapper?.getBoundingClientRect() : null) ??\n buttonWrapper?.getBoundingClientRect() ??\n wrapper?.getBoundingClientRect() ??\n button?.getBoundingClientRect() ??\n poi?.getBoundingClientRect() ??\n this.getBoundingClientRect()\n );\n }\n\n if (preference === PoiDataVisualRectPreference.Anchor) {\n return (\n buttonWrapper?.getBoundingClientRect() ??\n button?.getBoundingClientRect() ??\n wrapper?.getBoundingClientRect() ??\n poi?.getBoundingClientRect() ??\n this.getBoundingClientRect()\n );\n }\n\n if (preference === PoiDataVisualRectPreference.Size) {\n return (\n wrapper?.getBoundingClientRect() ??\n buttonWrapper?.getBoundingClientRect() ??\n button?.getBoundingClientRect() ??\n poi?.getBoundingClientRect() ??\n this.getBoundingClientRect()\n );\n }\n\n if (candidates.length === 0) {\n return this.getBoundingClientRect();\n }\n\n const candidateRects = candidates.map((element) =>\n element.getBoundingClientRect()\n );\n return candidateRects.reduce((best, rect) =>\n rect.height > best.height ? rect : best\n );\n }\n\n public getVisualElement(\n preference: VisualElementPreference = PoiDataVisualRectPreference.Size\n ): HTMLElement {\n const {poi, button, wrapper, buttonWrapper} = this.getVisualNodes();\n\n if (preference === PoiDataVisualRectPreference.Group) {\n const hasDataWrapper = wrapper?.classList.contains('has-data') ?? false;\n return (\n (hasDataWrapper ? wrapper : null) ??\n buttonWrapper ??\n wrapper ??\n button ??\n poi ??\n this\n );\n }\n\n if (preference === PoiDataVisualRectPreference.Anchor) {\n return buttonWrapper ?? button ?? wrapper ?? poi ?? this;\n }\n\n return wrapper ?? buttonWrapper ?? button ?? poi ?? this;\n }\n\n public getPointerElement(): HTMLElement | null {\n const {poi} = this.getVisualNodes();\n return (\n (poi?.shadowRoot?.querySelector(\n 'obc-poi-pointer.pointer'\n ) as HTMLElement | null) ?? null\n );\n }\n\n /* ---------- Render helpers ---------- */\n\n /** Computed effective line length accounting for compensation and vertical offsets. */\n protected get effectiveLineLength(): number {\n const resolvedPoiType = this.resolvedPoiType;\n const lineLength = Number.isFinite(this.y) ? this.y : 0;\n const lineCompensation = Number.isFinite(this.lineCompensationY)\n ? this.lineCompensationY\n : 0;\n const totalVerticalOffset =\n this.selectedVerticalOffset + this.layerVerticalOffset;\n return resolvedPoiType === ObcPoiType.Line ||\n resolvedPoiType === ObcPoiType.Offset\n ? lineLength + lineCompensation + totalVerticalOffset\n : lineLength;\n }\n\n /** Computed effective local button Y offset. */\n protected get effectiveLocalButtonY(): number {\n const totalVerticalOffset =\n this.selectedVerticalOffset + this.layerVerticalOffset;\n return -totalVerticalOffset;\n }\n\n /**\n * Override in each variant to render the button slot content\n * placed inside `<obc-poi>`. The base class provides the outer\n * `<obc-poi>` wrapper with all shared property bindings.\n */\n protected renderButtonSlot(): TemplateResult {\n return html`\n <obc-poi-button\n slot=\"button\"\n exportparts=\"icon\"\n .relativeDirection=${this.relativeDirection}\n .selected=${this.selected}\n .hasHeader=${this.hasHeader}\n .headerContent=${this.headerContent}\n .state=${this.resolvedPoiState}\n .value=${this.value}\n .overlapOpaque=${this.overlapOpaque}\n .type=${this.buttonType}\n .data=${this.data}\n >\n <slot></slot>\n </obc-poi-button>\n `;\n }\n\n protected get resolvedHeaderState(): ObcPoiHeaderState {\n switch (this.resolvedPoiState) {\n case ObcPoiState.Caution:\n return ObcPoiHeaderState.Caution;\n case ObcPoiState.Warning:\n return ObcPoiHeaderState.Warning;\n case ObcPoiState.Alarm:\n return ObcPoiHeaderState.Alarm;\n case ObcPoiState.Enabled:\n default:\n return this.selected\n ? ObcPoiHeaderState.Selected\n : ObcPoiHeaderState.Enabled;\n }\n }\n\n private syncHeaderContent() {\n const headerChildren = Array.from(this.children).filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement && child.getAttribute('slot') === 'header'\n );\n\n if (headerChildren.length === 0 && !this.hasHeader) {\n return;\n }\n\n if (\n headerChildren.length > 0 &&\n !this.hasHeader &&\n this.closest('obc-poi-layer-stack') === null\n ) {\n this.hasHeader = true;\n }\n\n const target = (this.shadowRoot?.querySelector('[slot=\"button\"]') ??\n this.shadowRoot?.querySelector('obc-poi')) as HTMLElement | null;\n if (!target) {\n return;\n }\n\n for (const child of headerChildren) {\n if (child.parentElement !== target) {\n target.appendChild(child);\n }\n this.applyHeaderState(child);\n }\n }\n\n private applyHeaderState(root: ParentNode) {\n const headers = [\n ...(root instanceof Element && root.matches('obc-poi-header')\n ? [root]\n : []),\n ...root.querySelectorAll('obc-poi-header'),\n ] as HTMLElement[];\n\n for (const header of headers) {\n (header as {state?: ObcPoiHeaderState}).state = this.resolvedHeaderState;\n header.setAttribute('state', this.resolvedHeaderState);\n }\n }\n\n private syncHeaderState() {\n this.applyHeaderState(this.renderRoot);\n }\n\n override render() {\n return html`\n <obc-poi\n exportparts=\"icon\"\n .type=${this.resolvedPoiType}\n .value=${this.value}\n .state=${this.resolvedPoiState}\n .x=${0}\n .y=${this.effectiveLineLength}\n .buttonY=${this.effectiveLocalButtonY}\n .fixedTarget=${false}\n .outsideAngle=${this.outsideAngle}\n .hasPointer=${this.hasPointer}\n .hasHeader=${this.hasHeader}\n .headerContent=${this.headerContent}\n .animatePosition=${this.animatePosition}\n .relativeDirection=${this.relativeDirection}\n .buttonType=${this.buttonType}\n .overlapOpaque=${this.overlapOpaque}\n .pointerType=${this.pointerType}\n .pointerState=${this.pointerState}\n .selected=${this.selected}\n .data=${this.data}\n .buttonOffsetX=${this.buttonOffsetX}\n .targetOffsetX=${this.targetOffsetX}\n .boxWidth=${this.boxWidth}\n .boxHeight=${this.boxHeight}\n >\n ${this.renderButtonSlot()}\n </obc-poi>\n `;\n }\n\n static override styles = [unsafeCSS(componentStyle)];\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwBA,SAAS,yBAAyB,IAAmB;AACnD,aAAW,QAAQ,MAAM,KAAK,GAAG,UAAU,GAAG;AAC5C,QACE,KAAK,aAAa,KAAK,cACtB,KAAK,eAAe,IAAI,KAAA,MAAW,IACpC;AACA,WAAK,OAAA;AAAA,IACP;AAAA,EACF;AACF;AAEA,MAAM,qBAAqB;AAC3B,MAAM,uBAAuB;AAC7B,MAAM,mBAAmB;AACzB,MAAM,kBAAkB,IAAI,IAAI,OAAO,OAAO,UAAU,CAAC;AACzD,MAAM,mBAAmB,IAAI,IAAI,OAAO,OAAO,WAAW,CAAC;AAUpD,MAAM,cAAN,MAAM,oBAAmB,WAA0B;AAAA,EAAnD,cAAA;AAAA,UAAA,GAAA,SAAA;AAYqB,SAAA,OAAmB,WAAW;AACf,SAAA,QACvC,YAAY;AACY,SAAA,QAAqB,YAAY;AAChC,SAAA,WAAW;AAEtC,SAAA,aAAa,iBAAiB;AAE9B,SAAA,gBAAgB;AAEhB,SAAA,OAA+B,CAAA;AACqB,SAAA,YAAY;AACT,SAAA,gBAAgB;AAC5C,SAAA,aAAa;AAExC,SAAA,cAAwC;AAExC,SAAA,eAA0C;AAChB,SAAA,oBAAoB;AAIpB,SAAA,IAAI;AACJ,SAAA,IAAI;AACmB,SAAA,UAC/C;AACoD,SAAA,cAAc;AACZ,SAAA,gBAAgB;AAChB,SAAA,gBAAgB;AACtB,SAAA,WAChD;AACiD,SAAA,YACjD;AAEF,SAAA,oBAAoB;AACkC,SAAA,eAAe;AAErE,SAAA,kBAAkB;AAIlB,SAAQ,YAAY;AACpB,SAAQ,gBAAgB;AACxB,SAAQ,qBAAqB;AAC7B,SAAQ,yBAAyB;AACjC,SAAQ,aAAa;AACrB,SAAQ,qBAAoC;AAe5C,SAAQ,cAAc,CAAC,UAAkB;AACvC,WAAK,aAAa;AAClB,UAAI,CAAC,KAAK,eAAe,CAAC,KAAK,oBAAoB;AACjD;AAAA,MACF;AAEA,YAAM,YACJ,KAAK,yBAAyB,IAC1B,KAAK;AAAA,QACH;AAAA,QACA,KAAK,IAAI,IAAI,MAAM,QAAQ,KAAK,0BAA0B,GAAI;AAAA,MAAA,IAEhE,IAAI;AACV,WAAK,yBAAyB;AAE9B,YAAM,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,qBAAqB,SAAS;AACxE,YAAM,QAAQ,KAAK,gBAAgB,KAAK;AACxC,YAAM,QACJ,KAAK,IAAI,KAAK,KAAK,uBACf,KAAK,gBACL,KAAK,YAAY,QAAQ;AAC/B,YAAM,UAAU,KAAK,IAAI,QAAQ,KAAK,SAAS,IAAI;AACnD,WAAK,YAAY;AACjB,UAAI,SAAS;AACX,aAAK,MAAM,YAAY,oBAAoB,GAAG,KAAK,SAAS,IAAI;AAChE,aAAK,qBAAA;AAAA,MACP;AAEA,YAAM,UACJ,KAAK,IAAI,KAAK,gBAAgB,KAAK,SAAS,KAAK;AAEnD,UAAI,SAAS;AACX,aAAK,YAAY,KAAK;AACtB,aAAK,MAAM,YAAY,oBAAoB,GAAG,KAAK,SAAS,IAAI;AAChE,aAAK,yBAAyB;AAC9B,aAAK,YAAA;AACL;AAAA,MACF;AAEA,WAAK,YAAA;AACL,WAAK,aAAa,sBAAsB,KAAK,WAAW;AAAA,IAC1D;AAAA,EAAA;AAAA,EA/GS,oBAAoB;AAC3B,6BAAyB,IAAI;AAC7B,UAAM,kBAAA;AACN,SAAK,aAAa,UAAU,EAAE;AAC9B,SAAK,oBAAA;AAAA,EACP;AAAA;AAAA,EAsDQ,uBAAuB;AAC7B,SAAK;AAAA,MACH,IAAI,YAAY,8BAA8B;AAAA,QAC5C,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA,EA+CQ,kBAAkB,OAAe;AACvC,SAAK,gBAAgB;AAErB,QAAI,CAAC,KAAK,oBAAoB;AAC5B,WAAK,qBAAqB;AAC1B,WAAK,YAAY;AACjB,WAAK,MAAM,YAAY,oBAAoB,GAAG,KAAK,SAAS,IAAI;AAChE,WAAK,YAAA;AACL;AAAA,IACF;AAEA,QAAI,KAAK,IAAI,QAAQ,KAAK,SAAS,KAAK,sBAAsB;AAC5D,WAAK,YAAY,KAAK;AACtB,WAAK,MAAM,YAAY,oBAAoB,GAAG,KAAK,SAAS,IAAI;AAChE,UAAI,KAAK,YAAY;AACnB,6BAAqB,KAAK,UAAU;AACpC,aAAK,aAAa;AAAA,MACpB;AACA,WAAK,yBAAyB;AAC9B,WAAK,YAAA;AACL;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,yBAAyB;AAC9B,WAAK,YAAA;AACL,WAAK,aAAa,sBAAsB,KAAK,WAAW;AAAA,IAC1D;AAAA,EACF;AAAA,EAEQ,cAAc;AACpB,SAAK,aAAa,iBAAiB,MAAM;AACzC,QAAI,KAAK,uBAAuB,MAAM;AACpC,aAAO,aAAa,KAAK,kBAAkB;AAAA,IAC7C;AACA,SAAK,qBAAqB,OAAO,WAAW,MAAM;AAChD,WAAK,gBAAgB,eAAe;AACpC,WAAK,qBAAqB;AAAA,IAC5B,GAAG,gBAAgB;AAAA,EACrB;AAAA;AAAA,EAIS,uBAAuB;AAC9B,UAAM,qBAAA;AACN,SAAK,gBAAgB,WAAA;AACrB,SAAK,iBAAiB;AACtB,QAAI,KAAK,YAAY;AACnB,2BAAqB,KAAK,UAAU;AACpC,WAAK,aAAa;AAAA,IACpB;AACA,SAAK,yBAAyB;AAC9B,QAAI,KAAK,uBAAuB,MAAM;AACpC,aAAO,aAAa,KAAK,kBAAkB;AAC3C,WAAK,qBAAqB;AAAA,IAC5B;AAAA,EACF;AAAA,EAEQ,sBAAsB;AAC5B,SAAK,gBAAgB,WAAA;AACrB,SAAK,iBAAiB,IAAI,iBAAiB,CAAC,cAAc;AACxD,iBAAW,YAAY,WAAW;AAChC,YAAI,SAAS,SAAS,aAAa;AACjC,eAAK,kBAAA;AACL,eAAK,gBAAA;AACL;AAAA,QACF;AACA,YACE,SAAS,SAAS,gBAClB,SAAS,kBAAkB,eAC3B,SAAS,OAAO,aAAa,MAAM,MAAM,UACzC;AACA,eAAK,kBAAA;AACL,eAAK,gBAAA;AACL;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,eAAe,QAAQ,MAAM;AAAA,MAChC,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,iBAAiB,CAAC,MAAM;AAAA,IAAA,CACzB;AAAA,EACH;AAAA,EAES,QAAQ,mBAAyC;AACxD,QAAI,kBAAkB,IAAI,GAAG,GAAG;AAC9B,WAAK,kBAAkB,OAAO,SAAS,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAA,IAC7D;AACA,QACE,kBAAkB,IAAI,SAAS,KAC/B,kBAAkB,IAAI,GAAG,KACzB,kBAAkB,IAAI,aAAa,KACnC,kBAAkB,IAAI,mBAAmB,KACzC,kBAAkB,IAAI,UAAU,KAChC,kBAAkB,IAAI,MAAM,GAC5B;AACA,WAAK,eAAA;AAAA,IACP;AACA,QACE,kBAAkB,IAAI,GAAG,KACzB,kBAAkB,IAAI,SAAS,KAC/B,kBAAkB,IAAI,GAAG,KACzB,kBAAkB,IAAI,eAAe,KACrC,kBAAkB,IAAI,eAAe,KACrC,kBAAkB,IAAI,mBAAmB,KACzC,kBAAkB,IAAI,aAAa,KACnC,kBAAkB,IAAI,UAAU,KAChC,kBAAkB,IAAI,MAAM,GAC5B;AACA,WAAK,qBAAA;AAAA,IACP;AACA,SAAK,kBAAA;AACL,SAAK,gBAAA;AAAA,EACP;AAAA,EAEmB,aAAa,oBAA0C;AACxE,SAAK,kBAAA;AACL,SAAK,gBAAA;AAAA,EACP;AAAA;AAAA,EAIQ,iBAAiB;AACvB,QAAI,KAAK,aAAa;AACpB,UAAI,OAAO,KAAK,YAAY,YAAY,OAAO,SAAS,KAAK,OAAO,GAAG;AACrE,aAAK,MAAM,MAAM,GAAG,KAAK,UAAU,KAAK,mBAAmB;AAAA,MAC7D,OAAO;AACL,aAAK,MAAM,eAAe,KAAK;AAAA,MACjC;AAAA,IACF,WACE,OAAO,KAAK,YAAY,YACxB,OAAO,SAAS,KAAK,OAAO,GAC5B;AACA,WAAK,MAAM,MAAM,GAAG,KAAK,OAAO;AAAA,IAClC,OAAO;AACL,WAAK,MAAM,eAAe,KAAK;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,IAAc,yBAAiC;AAC7C,QAAI,CAAC,KAAK,UAAU;AAClB,aAAO;AAAA,IACT;AACA,UAAM,SAAS,iBAAiB,IAAI,EAAE;AAAA,MACpC;AAAA,IAAA;AAEF,UAAM,SAAS,OAAO,WAAW,MAAM;AACvC,WAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EAC5C;AAAA,EAEA,IAAc,sBAA8B;AAC1C,UAAM,SAAS,iBAAiB,IAAI,EAAE;AAAA,MACpC;AAAA,IAAA;AAEF,UAAM,SAAS,OAAO,WAAW,MAAM;AACvC,WAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EAC5C;AAAA,EAEA,IAAc,kBAA8B;AAC1C,WAAO,gBAAgB,IAAI,KAAK,IAAkB,IAC7C,KAAK,OACN,WAAW;AAAA,EACjB;AAAA,EAEA,IAAc,mBAAgC;AAC5C,WAAO,iBAAiB,IAAI,KAAK,KAAoB,IAChD,KAAK,QACN,YAAY;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQU,iBAKR;AACA,WAAO,KAAK,iBAAiB,WAAW,gBAAgB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQU,iBAAiB,QAAgB,WAAmB;AAC5D,UAAM,MAAM,KAAK,YAAY,cAAc,MAAM;AACjD,UAAM,SAAU,KAAK,YAAY,cAAc,SAAS,KACtD,KAAK,YAAY,cAAc,SAAS;AAC1C,UAAM,eAAe,QAAQ,cAAc;AAC3C,UAAM,gBAAgB,cAAc;AAAA,MAClC;AAAA,IAAA;AAEF,UAAM,UAAU,cAAc;AAAA,MAC5B;AAAA,IAAA;AAEF,WAAO,EAAC,KAAK,QAAQ,SAAS,cAAA;AAAA,EAChC;AAAA,EAEO,cACL,aAA0C,4BAA4B,SAC7D;AACT,UAAM,EAAC,KAAK,QAAQ,SAAS,cAAA,IAAiB,KAAK,eAAA;AACnD,UAAM,aAAa,CAAC,SAAS,eAAe,QAAQ,GAAG,EAAE;AAAA,MACvD,CAAC,YAAoC,CAAC,CAAC;AAAA,IAAA;AAGzC,QAAI,eAAe,4BAA4B,OAAO;AACpD,YAAM,iBAAiB,SAAS,UAAU,SAAS,UAAU,KAAK;AAClE,cACG,iBAAiB,SAAS,sBAAA,IAA0B,SACrD,eAAe,2BACf,SAAS,sBAAA,KACT,QAAQ,sBAAA,KACR,KAAK,sBAAA,KACL,KAAK,sBAAA;AAAA,IAET;AAEA,QAAI,eAAe,4BAA4B,QAAQ;AACrD,aACE,eAAe,sBAAA,KACf,QAAQ,sBAAA,KACR,SAAS,sBAAA,KACT,KAAK,2BACL,KAAK,sBAAA;AAAA,IAET;AAEA,QAAI,eAAe,4BAA4B,MAAM;AACnD,aACE,SAAS,sBAAA,KACT,eAAe,sBAAA,KACf,QAAQ,sBAAA,KACR,KAAK,2BACL,KAAK,sBAAA;AAAA,IAET;AAEA,QAAI,WAAW,WAAW,GAAG;AAC3B,aAAO,KAAK,sBAAA;AAAA,IACd;AAEA,UAAM,iBAAiB,WAAW;AAAA,MAAI,CAAC,YACrC,QAAQ,sBAAA;AAAA,IAAsB;AAEhC,WAAO,eAAe;AAAA,MAAO,CAAC,MAAM,SAClC,KAAK,SAAS,KAAK,SAAS,OAAO;AAAA,IAAA;AAAA,EAEvC;AAAA,EAEO,iBACL,aAAsC,4BAA4B,MACrD;AACb,UAAM,EAAC,KAAK,QAAQ,SAAS,cAAA,IAAiB,KAAK,eAAA;AAEnD,QAAI,eAAe,4BAA4B,OAAO;AACpD,YAAM,iBAAiB,SAAS,UAAU,SAAS,UAAU,KAAK;AAClE,cACG,iBAAiB,UAAU,SAC5B,iBACA,WACA,UACA,OACA;AAAA,IAEJ;AAEA,QAAI,eAAe,4BAA4B,QAAQ;AACrD,aAAO,iBAAiB,UAAU,WAAW,OAAO;AAAA,IACtD;AAEA,WAAO,WAAW,iBAAiB,UAAU,OAAO;AAAA,EACtD;AAAA,EAEO,oBAAwC;AAC7C,UAAM,EAAC,IAAA,IAAO,KAAK,eAAA;AACnB,WACG,KAAK,YAAY;AAAA,MAChB;AAAA,IAAA,KAC0B;AAAA,EAEhC;AAAA;AAAA;AAAA,EAKA,IAAc,sBAA8B;AAC1C,UAAM,kBAAkB,KAAK;AAC7B,UAAM,aAAa,OAAO,SAAS,KAAK,CAAC,IAAI,KAAK,IAAI;AACtD,UAAM,mBAAmB,OAAO,SAAS,KAAK,iBAAiB,IAC3D,KAAK,oBACL;AACJ,UAAM,sBACJ,KAAK,yBAAyB,KAAK;AACrC,WAAO,oBAAoB,WAAW,QACpC,oBAAoB,WAAW,SAC7B,aAAa,mBAAmB,sBAChC;AAAA,EACN;AAAA;AAAA,EAGA,IAAc,wBAAgC;AAC5C,UAAM,sBACJ,KAAK,yBAAyB,KAAK;AACrC,WAAO,CAAC;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,mBAAmC;AAC3C,WAAO;AAAA;AAAA;AAAA;AAAA,6BAIkB,KAAK,iBAAiB;AAAA,oBAC/B,KAAK,QAAQ;AAAA,qBACZ,KAAK,SAAS;AAAA,yBACV,KAAK,aAAa;AAAA,iBAC1B,KAAK,gBAAgB;AAAA,iBACrB,KAAK,KAAK;AAAA,yBACF,KAAK,aAAa;AAAA,gBAC3B,KAAK,UAAU;AAAA,gBACf,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvB;AAAA,EAEA,IAAc,sBAAyC;AACrD,YAAQ,KAAK,kBAAA;AAAA,MACX,KAAK,YAAY;AACf,eAAO,kBAAkB;AAAA,MAC3B,KAAK,YAAY;AACf,eAAO,kBAAkB;AAAA,MAC3B,KAAK,YAAY;AACf,eAAO,kBAAkB;AAAA,MAC3B,KAAK,YAAY;AAAA,MACjB;AACE,eAAO,KAAK,WACR,kBAAkB,WAClB,kBAAkB;AAAA,IAAA;AAAA,EAE5B;AAAA,EAEQ,oBAAoB;AAC1B,UAAM,iBAAiB,MAAM,KAAK,KAAK,QAAQ,EAAE;AAAA,MAC/C,CAAC,UACC,iBAAiB,eAAe,MAAM,aAAa,MAAM,MAAM;AAAA,IAAA;AAGnE,QAAI,eAAe,WAAW,KAAK,CAAC,KAAK,WAAW;AAClD;AAAA,IACF;AAEA,QACE,eAAe,SAAS,KACxB,CAAC,KAAK,aACN,KAAK,QAAQ,qBAAqB,MAAM,MACxC;AACA,WAAK,YAAY;AAAA,IACnB;AAEA,UAAM,SAAU,KAAK,YAAY,cAAc,iBAAiB,KAC9D,KAAK,YAAY,cAAc,SAAS;AAC1C,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,eAAW,SAAS,gBAAgB;AAClC,UAAI,MAAM,kBAAkB,QAAQ;AAClC,eAAO,YAAY,KAAK;AAAA,MAC1B;AACA,WAAK,iBAAiB,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EAEQ,iBAAiB,MAAkB;AACzC,UAAM,UAAU;AAAA,MACd,GAAI,gBAAgB,WAAW,KAAK,QAAQ,gBAAgB,IACxD,CAAC,IAAI,IACL,CAAA;AAAA,MACJ,GAAG,KAAK,iBAAiB,gBAAgB;AAAA,IAAA;AAG3C,eAAW,UAAU,SAAS;AAC3B,aAAuC,QAAQ,KAAK;AACrD,aAAO,aAAa,SAAS,KAAK,mBAAmB;AAAA,IACvD;AAAA,EACF;AAAA,EAEQ,kBAAkB;AACxB,SAAK,iBAAiB,KAAK,UAAU;AAAA,EACvC;AAAA,EAES,SAAS;AAChB,WAAO;AAAA;AAAA;AAAA,gBAGK,KAAK,eAAe;AAAA,iBACnB,KAAK,KAAK;AAAA,iBACV,KAAK,gBAAgB;AAAA,aACzB,CAAC;AAAA,aACD,KAAK,mBAAmB;AAAA,mBAClB,KAAK,qBAAqB;AAAA,uBACtB,KAAK;AAAA,wBACJ,KAAK,YAAY;AAAA,sBACnB,KAAK,UAAU;AAAA,qBAChB,KAAK,SAAS;AAAA,yBACV,KAAK,aAAa;AAAA,2BAChB,KAAK,eAAe;AAAA,6BAClB,KAAK,iBAAiB;AAAA,sBAC7B,KAAK,UAAU;AAAA,yBACZ,KAAK,aAAa;AAAA,uBACpB,KAAK,WAAW;AAAA,wBACf,KAAK,YAAY;AAAA,oBACrB,KAAK,QAAQ;AAAA,gBACjB,KAAK,IAAI;AAAA,yBACA,KAAK,aAAa;AAAA,yBAClB,KAAK,aAAa;AAAA,oBACvB,KAAK,QAAQ;AAAA,qBACZ,KAAK,SAAS;AAAA;AAAA,UAEzB,KAAK,kBAAkB;AAAA;AAAA;AAAA,EAG/B;AAGF;AADE,YAAgB,SAAS,CAAC,UAAU,cAAc,CAAC;AA3iB9C,IAAM,aAAN;AAYqB,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAZb,WAYe,WAAA,MAAA;AACe,gBAAA;AAAA,EAAxC,SAAS,EAAC,MAAM,QAAQ,SAAS,MAAK;AAAA,GAb5B,WAa8B,WAAA,OAAA;AAEf,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAfb,WAee,WAAA,OAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAhBd,WAgBgB,WAAA,UAAA;AAE3B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAQ,WAAW,eAAc;AAAA,GAjBvC,WAkBX,WAAA,YAAA;AAEA,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,SAAS,WAAW,kBAAiB;AAAA,GAnB3C,WAoBX,WAAA,eAAA;AAEA,gBAAA;AAAA,EADC,SAAS,EAAC,WAAW,MAAA,CAAM;AAAA,GArBjB,WAsBX,WAAA,MAAA;AACoD,gBAAA;AAAA,EAAnD,SAAS,EAAC,MAAM,SAAS,WAAW,cAAa;AAAA,GAvBvC,WAuByC,WAAA,WAAA;AACG,gBAAA;AAAA,EAAtD,SAAS,EAAC,MAAM,QAAQ,WAAW,kBAAiB;AAAA,GAxB1C,WAwB4C,WAAA,eAAA;AAC5B,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAzBd,WAyBgB,WAAA,YAAA;AAE3B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAQ,WAAW,gBAAe;AAAA,GA1BxC,WA2BX,WAAA,aAAA;AAEA,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAQ,WAAW,iBAAgB;AAAA,GA5BzC,WA6BX,WAAA,cAAA;AAC0B,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA9Bb,WA8Be,WAAA,mBAAA;AAIA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAlCb,WAkCe,WAAA,GAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAnCb,WAmCe,WAAA,GAAA;AACuB,gBAAA;AAAA,EAAhD,SAAS,EAAC,MAAM,QAAQ,WAAW,YAAW;AAAA,GApCpC,WAoCsC,WAAA,SAAA;AAEK,gBAAA;AAAA,EAArD,SAAS,EAAC,MAAM,SAAS,WAAW,gBAAe;AAAA,GAtCzC,WAsC2C,WAAA,aAAA;AACE,gBAAA;AAAA,EAAvD,SAAS,EAAC,MAAM,QAAQ,WAAW,mBAAkB;AAAA,GAvC3C,WAuC6C,WAAA,eAAA;AACA,gBAAA;AAAA,EAAvD,SAAS,EAAC,MAAM,QAAQ,WAAW,mBAAkB;AAAA,GAxC3C,WAwC6C,WAAA,eAAA;AACN,gBAAA;AAAA,EAAjD,SAAS,EAAC,MAAM,QAAQ,WAAW,aAAY;AAAA,GAzCrC,WAyCuC,WAAA,UAAA;AAEC,gBAAA;AAAA,EAAlD,SAAS,EAAC,MAAM,QAAQ,WAAW,cAAa;AAAA,GA3CtC,WA2CwC,WAAA,WAAA;AAGnD,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAQ,WAAW,uBAAsB;AAAA,GA7C/C,WA8CX,WAAA,mBAAA;AACsD,gBAAA;AAAA,EAArD,SAAS,EAAC,MAAM,QAAQ,WAAW,iBAAgB;AAAA,GA/CzC,WA+C2C,WAAA,cAAA;AAEtD,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,SAAS,WAAW,oBAAmB;AAAA,GAhD7C,WAiDX,WAAA,iBAAA;"}
|
|
1
|
+
{"version":3,"file":"poi-base.js","sources":["../../../../src/ar/building-blocks/poi/poi-base.ts"],"sourcesContent":["import {LitElement, TemplateResult, html, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport componentStyle from './poi-base.css?inline';\nimport './poi.js';\nimport {\n ObcPoiButtonType,\n ObcPoiButtonDataItem,\n} from '../poi-button/poi-button.js';\nimport {ObcPoiHeaderState} from '../poi-header/poi-header.js';\nimport {ObcPoiState, ObcPoiType, ObcPoiValue} from './poi.js';\nimport {\n ObcPoiPointerState,\n ObcPoiPointerType,\n} from '../poi-pointer/poi-pointer.js';\nimport {POI_ATTR, Poi, PoiDataVisualRectPreference} from './poi.js';\nexport {ObcPoiValue as PoiBaseValue};\nexport {PoiDataVisualRectPreference as PoiBaseVisualRectPreference};\n\n/** @internal */\ntype VisualElementPreference =\n | PoiDataVisualRectPreference.Group\n | PoiDataVisualRectPreference.Anchor\n | PoiDataVisualRectPreference.Size;\n\nfunction stripWhitespaceTextNodes(el: Element): void {\n for (const node of Array.from(el.childNodes)) {\n if (\n node.nodeType === Node.TEXT_NODE &&\n (node.textContent ?? '').trim() === ''\n ) {\n node.remove();\n }\n }\n}\n\nconst X_FILTER_CUTOFF_HZ = 16;\nconst X_FILTER_DEADBAND_PX = 0.1;\nconst X_MOVING_HINT_MS = 120;\nconst VALID_POI_TYPES = new Set(Object.values(ObcPoiType));\nconst VALID_POI_STATES = new Set(Object.values(ObcPoiState));\n\n/**\n * Shared base class for top-level POI variant components (`obc-poi-data`,\n * `obc-poi-aton`, `obc-poi-vessel`).\n *\n * Implements `Poi` and contains all positioning, X-filter,\n * layout-change dispatch, and visual-query logic so that each variant\n * only needs to override `renderContent()` and `getVisualNodes()`.\n */\nexport class ObcPoiBase extends LitElement implements Poi {\n private headerObserver?: MutationObserver;\n\n override connectedCallback() {\n stripWhitespaceTextNodes(this);\n super.connectedCallback();\n this.setAttribute(POI_ATTR, '');\n this.setupHeaderObserver();\n }\n\n /* ---------- POI marker properties ---------- */\n\n @property({type: String}) type: ObcPoiType = ObcPoiType.Line;\n @property({type: String}) value: ObcPoiValue = ObcPoiValue.Unchecked;\n @property({type: String}) state: ObcPoiState = ObcPoiState.Enabled;\n @property({type: Boolean}) selected = false;\n @property({type: String, attribute: 'button-type'})\n buttonType = ObcPoiButtonType.Button;\n @property({type: Boolean, attribute: 'overlap-opaque'})\n overlapOpaque = false;\n @property({attribute: false})\n data: ObcPoiButtonDataItem[] = [];\n @property({type: Boolean, attribute: 'has-header'}) hasHeader = false;\n @property({type: String, attribute: 'header-content'}) headerContent = '';\n @property({type: Boolean}) hasPointer = false;\n @property({type: String, attribute: 'pointer-type'})\n pointerType: ObcPoiPointerType | null = null;\n @property({type: String, attribute: 'pointer-state'})\n pointerState: ObcPoiPointerState | null = null;\n @property({type: Number}) relativeDirection = 0;\n\n /* ---------- Poi — position ---------- */\n\n @property({type: Number}) x = 0;\n @property({type: Number}) y = 192;\n @property({type: Number, attribute: 'button-y'}) buttonY: number | null =\n null;\n @property({type: Boolean, attribute: 'fixed-target'}) fixedTarget = false;\n @property({type: Number, attribute: 'button-offset-x'}) buttonOffsetX = 0;\n @property({type: Number, attribute: 'target-offset-x'}) targetOffsetX = 0;\n @property({type: Number, attribute: 'box-width'}) boxWidth: number | null =\n null;\n @property({type: Number, attribute: 'box-height'}) boxHeight: number | null =\n null;\n @property({type: Number, attribute: 'line-compensation-y'})\n lineCompensationY = 0;\n @property({type: Number, attribute: 'outside-angle'}) outsideAngle = 315;\n @property({type: Boolean, attribute: 'animate-position'})\n animatePosition = false;\n\n /* ---------- X-filter state ---------- */\n\n private filteredX = 0;\n private xFilterTarget = 0;\n private xFilterInitialized = false;\n private lastXFilterTimestampMs = 0;\n private xFilterRaf = 0;\n private xMovingHintTimeout: number | null = null;\n\n /* ---------- Layout change ---------- */\n\n private dispatchLayoutChange() {\n this.dispatchEvent(\n new CustomEvent('obc-poi-data-layout-change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /* ---------- X filter (low-pass) ---------- */\n\n private stepXFilter = (nowMs: number) => {\n this.xFilterRaf = 0;\n if (!this.isConnected || !this.xFilterInitialized) {\n return;\n }\n\n const dtSeconds =\n this.lastXFilterTimestampMs > 0\n ? Math.min(\n 0.25,\n Math.max(1 / 120, (nowMs - this.lastXFilterTimestampMs) / 1000)\n )\n : 1 / 60;\n this.lastXFilterTimestampMs = nowMs;\n\n const alpha = 1 - Math.exp(-2 * Math.PI * X_FILTER_CUTOFF_HZ * dtSeconds);\n const delta = this.xFilterTarget - this.filteredX;\n const nextX =\n Math.abs(delta) <= X_FILTER_DEADBAND_PX\n ? this.xFilterTarget\n : this.filteredX + delta * alpha;\n const changed = Math.abs(nextX - this.filteredX) > 1e-6;\n this.filteredX = nextX;\n if (changed) {\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n this.dispatchLayoutChange();\n }\n\n const settled =\n Math.abs(this.xFilterTarget - this.filteredX) <= X_FILTER_DEADBAND_PX;\n\n if (settled) {\n this.filteredX = this.xFilterTarget;\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n this.lastXFilterTimestampMs = 0;\n this.markXMoving();\n return;\n }\n\n this.markXMoving();\n this.xFilterRaf = requestAnimationFrame(this.stepXFilter);\n };\n\n private syncXFilterTarget(nextX: number) {\n this.xFilterTarget = nextX;\n\n if (!this.xFilterInitialized) {\n this.xFilterInitialized = true;\n this.filteredX = nextX;\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n this.markXMoving();\n return;\n }\n\n if (Math.abs(nextX - this.filteredX) <= X_FILTER_DEADBAND_PX) {\n this.filteredX = this.xFilterTarget;\n this.style.setProperty('--obc-poi-data-x', `${this.filteredX}px`);\n if (this.xFilterRaf) {\n cancelAnimationFrame(this.xFilterRaf);\n this.xFilterRaf = 0;\n }\n this.lastXFilterTimestampMs = 0;\n this.markXMoving();\n return;\n }\n\n if (!this.xFilterRaf) {\n this.lastXFilterTimestampMs = 0;\n this.markXMoving();\n this.xFilterRaf = requestAnimationFrame(this.stepXFilter);\n }\n }\n\n private markXMoving() {\n this.setAttribute('data-x-moving', 'true');\n if (this.xMovingHintTimeout !== null) {\n window.clearTimeout(this.xMovingHintTimeout);\n }\n this.xMovingHintTimeout = window.setTimeout(() => {\n this.removeAttribute('data-x-moving');\n this.xMovingHintTimeout = null;\n }, X_MOVING_HINT_MS);\n }\n\n /* ---------- Lifecycle ---------- */\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.headerObserver?.disconnect();\n this.headerObserver = undefined;\n if (this.xFilterRaf) {\n cancelAnimationFrame(this.xFilterRaf);\n this.xFilterRaf = 0;\n }\n this.lastXFilterTimestampMs = 0;\n if (this.xMovingHintTimeout !== null) {\n window.clearTimeout(this.xMovingHintTimeout);\n this.xMovingHintTimeout = null;\n }\n }\n\n private setupHeaderObserver() {\n this.headerObserver?.disconnect();\n this.headerObserver = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n this.syncHeaderContent();\n this.syncHeaderState();\n return;\n }\n if (\n mutation.type === 'attributes' &&\n mutation.target instanceof HTMLElement &&\n mutation.target.getAttribute('slot') === 'header'\n ) {\n this.syncHeaderContent();\n this.syncHeaderState();\n return;\n }\n }\n });\n this.headerObserver.observe(this, {\n childList: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('x')) {\n this.syncXFilterTarget(Number.isFinite(this.x) ? this.x : 0);\n }\n if (\n changedProperties.has('buttonY') ||\n changedProperties.has('y') ||\n changedProperties.has('fixedTarget') ||\n changedProperties.has('lineCompensationY') ||\n changedProperties.has('selected') ||\n changedProperties.has('type')\n ) {\n this.updatePosition();\n }\n if (\n changedProperties.has('x') ||\n changedProperties.has('buttonY') ||\n changedProperties.has('y') ||\n changedProperties.has('buttonOffsetX') ||\n changedProperties.has('targetOffsetX') ||\n changedProperties.has('lineCompensationY') ||\n changedProperties.has('fixedTarget') ||\n changedProperties.has('selected') ||\n changedProperties.has('type')\n ) {\n this.dispatchLayoutChange();\n }\n this.syncHeaderContent();\n this.syncHeaderState();\n }\n\n protected override firstUpdated(_changedProperties: Map<string, unknown>) {\n this.syncHeaderContent();\n this.syncHeaderState();\n }\n\n /* ---------- Vertical positioning ---------- */\n\n private updatePosition() {\n if (this.fixedTarget) {\n if (typeof this.buttonY === 'number' && Number.isFinite(this.buttonY)) {\n this.style.top = `${this.buttonY - this.effectiveLineLength}px`;\n } else {\n this.style.removeProperty('top');\n }\n } else if (\n typeof this.buttonY === 'number' &&\n Number.isFinite(this.buttonY)\n ) {\n this.style.top = `${this.buttonY}px`;\n } else {\n this.style.removeProperty('top');\n }\n }\n\n protected get selectedVerticalOffset(): number {\n if (!this.selected) {\n return 0;\n }\n const offset = getComputedStyle(this).getPropertyValue(\n '--obc-poi-target-selected-vertical-offset'\n );\n const parsed = Number.parseFloat(offset);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n\n protected get layerVerticalOffset(): number {\n const offset = getComputedStyle(this).getPropertyValue(\n '--obc-poi-target-layer-vertical-offset'\n );\n const parsed = Number.parseFloat(offset);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n\n protected get resolvedPoiType(): ObcPoiType {\n return VALID_POI_TYPES.has(this.type as ObcPoiType)\n ? (this.type as ObcPoiType)\n : ObcPoiType.Line;\n }\n\n protected get resolvedPoiState(): ObcPoiState {\n return VALID_POI_STATES.has(this.state as ObcPoiState)\n ? (this.state as ObcPoiState)\n : ObcPoiState.Enabled;\n }\n\n /* ---------- Poi — visual query ---------- */\n\n /**\n * Override in each variant to query the correct inner component tag names.\n * Returns the poi wrapper element and poi-button element from the shadow DOM.\n */\n protected getVisualNodes(): {\n poi: HTMLElement | null;\n button: HTMLElement | null;\n wrapper: HTMLElement | null;\n buttonWrapper: HTMLElement | null;\n } {\n return this.queryVisualNodes('obc-poi', 'obc-poi-button');\n }\n\n /**\n * Helper for common `getVisualNodes()` pattern: query poi tag in own shadow,\n * then button tag. When the button is slotted into poi (aton/vessel variants),\n * it lives in this variant's shadow root. When using the fallback (data variant),\n * it lives inside poi's shadow root.\n */\n protected queryVisualNodes(poiTag: string, buttonTag: string) {\n const poi = this.shadowRoot?.querySelector(poiTag) as HTMLElement | null;\n const button = (this.shadowRoot?.querySelector(buttonTag) ??\n poi?.shadowRoot?.querySelector(buttonTag)) as HTMLElement | null;\n const buttonShadow = button?.shadowRoot ?? null;\n const buttonWrapper = buttonShadow?.querySelector(\n '.button-wrapper'\n ) as HTMLElement | null;\n const wrapper = buttonShadow?.querySelector(\n '.wrapper'\n ) as HTMLElement | null;\n return {poi, button, wrapper, buttonWrapper};\n }\n\n public getVisualRect(\n preference: PoiDataVisualRectPreference = PoiDataVisualRectPreference.Largest\n ): DOMRect {\n const {poi, button, wrapper, buttonWrapper} = this.getVisualNodes();\n const candidates = [wrapper, buttonWrapper, button, poi].filter(\n (element): element is HTMLElement => !!element\n );\n\n if (preference === PoiDataVisualRectPreference.Group) {\n const hasDataWrapper = wrapper?.classList.contains('has-data') ?? false;\n return (\n (hasDataWrapper ? wrapper?.getBoundingClientRect() : null) ??\n buttonWrapper?.getBoundingClientRect() ??\n wrapper?.getBoundingClientRect() ??\n button?.getBoundingClientRect() ??\n poi?.getBoundingClientRect() ??\n this.getBoundingClientRect()\n );\n }\n\n if (preference === PoiDataVisualRectPreference.Anchor) {\n return (\n buttonWrapper?.getBoundingClientRect() ??\n button?.getBoundingClientRect() ??\n wrapper?.getBoundingClientRect() ??\n poi?.getBoundingClientRect() ??\n this.getBoundingClientRect()\n );\n }\n\n if (preference === PoiDataVisualRectPreference.Size) {\n return (\n wrapper?.getBoundingClientRect() ??\n buttonWrapper?.getBoundingClientRect() ??\n button?.getBoundingClientRect() ??\n poi?.getBoundingClientRect() ??\n this.getBoundingClientRect()\n );\n }\n\n if (candidates.length === 0) {\n return this.getBoundingClientRect();\n }\n\n const candidateRects = candidates.map((element) =>\n element.getBoundingClientRect()\n );\n return candidateRects.reduce((best, rect) =>\n rect.height > best.height ? rect : best\n );\n }\n\n public getVisualElement(\n preference: VisualElementPreference = PoiDataVisualRectPreference.Size\n ): HTMLElement {\n const {poi, button, wrapper, buttonWrapper} = this.getVisualNodes();\n\n if (preference === PoiDataVisualRectPreference.Group) {\n const hasDataWrapper = wrapper?.classList.contains('has-data') ?? false;\n return (\n (hasDataWrapper ? wrapper : null) ??\n buttonWrapper ??\n wrapper ??\n button ??\n poi ??\n this\n );\n }\n\n if (preference === PoiDataVisualRectPreference.Anchor) {\n return buttonWrapper ?? button ?? wrapper ?? poi ?? this;\n }\n\n return wrapper ?? buttonWrapper ?? button ?? poi ?? this;\n }\n\n public getPointerElement(): HTMLElement | null {\n const {poi} = this.getVisualNodes();\n return (\n (poi?.shadowRoot?.querySelector(\n 'obc-poi-pointer.pointer'\n ) as HTMLElement | null) ?? null\n );\n }\n\n /* ---------- Render helpers ---------- */\n\n /** Computed effective line length accounting for compensation and vertical offsets. */\n protected get effectiveLineLength(): number {\n const resolvedPoiType = this.resolvedPoiType;\n const lineLength = Number.isFinite(this.y) ? this.y : 0;\n const lineCompensation = Number.isFinite(this.lineCompensationY)\n ? this.lineCompensationY\n : 0;\n const totalVerticalOffset =\n this.selectedVerticalOffset + this.layerVerticalOffset;\n return resolvedPoiType === ObcPoiType.Line ||\n resolvedPoiType === ObcPoiType.Offset\n ? lineLength + lineCompensation + totalVerticalOffset\n : lineLength;\n }\n\n /** Computed effective local button Y offset. */\n protected get effectiveLocalButtonY(): number {\n const totalVerticalOffset =\n this.selectedVerticalOffset + this.layerVerticalOffset;\n return -totalVerticalOffset;\n }\n\n /**\n * Override in each variant to render the button slot content\n * placed inside `<obc-poi>`. The base class provides the outer\n * `<obc-poi>` wrapper with all shared property bindings.\n */\n protected renderButtonSlot(): TemplateResult {\n return html`\n <obc-poi-button\n slot=\"button\"\n exportparts=\"icon\"\n .relativeDirection=${this.relativeDirection}\n .selected=${this.selected}\n .hasHeader=${this.hasHeader}\n .headerContent=${this.headerContent}\n .state=${this.resolvedPoiState}\n .value=${this.value}\n .overlapOpaque=${this.overlapOpaque}\n .type=${this.buttonType}\n .data=${this.data}\n >\n <slot></slot>\n </obc-poi-button>\n `;\n }\n\n protected get resolvedHeaderState(): ObcPoiHeaderState {\n switch (this.resolvedPoiState) {\n case ObcPoiState.Caution:\n return ObcPoiHeaderState.Caution;\n case ObcPoiState.Warning:\n return ObcPoiHeaderState.Warning;\n case ObcPoiState.Alarm:\n return ObcPoiHeaderState.Alarm;\n case ObcPoiState.Enabled:\n default:\n return this.selected\n ? ObcPoiHeaderState.Selected\n : ObcPoiHeaderState.Enabled;\n }\n }\n\n private syncHeaderContent() {\n const headerChildren = Array.from(this.children).filter(\n (child): child is HTMLElement =>\n child instanceof HTMLElement && child.getAttribute('slot') === 'header'\n );\n\n if (headerChildren.length === 0 && !this.hasHeader) {\n return;\n }\n\n if (\n headerChildren.length > 0 &&\n !this.hasHeader &&\n this.closest('obc-poi-layer-stack') === null\n ) {\n this.hasHeader = true;\n }\n\n const target = (this.shadowRoot?.querySelector('[slot=\"button\"]') ??\n this.shadowRoot?.querySelector('obc-poi')) as HTMLElement | null;\n if (!target) {\n return;\n }\n\n for (const child of headerChildren) {\n if (child.parentElement !== target) {\n target.appendChild(child);\n }\n this.applyHeaderState(child);\n }\n }\n\n private applyHeaderState(root: ParentNode) {\n const headers = [\n ...(root instanceof Element && root.matches('obc-poi-header')\n ? [root]\n : []),\n ...root.querySelectorAll('obc-poi-header'),\n ] as HTMLElement[];\n\n for (const header of headers) {\n (header as {state?: ObcPoiHeaderState}).state = this.resolvedHeaderState;\n header.setAttribute('state', this.resolvedHeaderState);\n }\n }\n\n private syncHeaderState() {\n this.applyHeaderState(this.renderRoot);\n }\n\n override render() {\n return html`\n <obc-poi\n exportparts=\"icon\"\n .type=${this.resolvedPoiType}\n .value=${this.value}\n .state=${this.resolvedPoiState}\n .x=${0}\n .y=${this.effectiveLineLength}\n .buttonY=${this.effectiveLocalButtonY}\n .fixedTarget=${false}\n .outsideAngle=${this.outsideAngle}\n .hasPointer=${this.hasPointer}\n .hasHeader=${this.hasHeader}\n .headerContent=${this.headerContent}\n .animatePosition=${this.animatePosition}\n .relativeDirection=${this.relativeDirection}\n .buttonType=${this.buttonType}\n .overlapOpaque=${this.overlapOpaque}\n .pointerType=${this.pointerType}\n .pointerState=${this.pointerState}\n .selected=${this.selected}\n .data=${this.data}\n .buttonOffsetX=${this.buttonOffsetX}\n .targetOffsetX=${this.targetOffsetX}\n .boxWidth=${this.boxWidth}\n .boxHeight=${this.boxHeight}\n >\n ${this.renderButtonSlot()}\n </obc-poi>\n `;\n }\n\n static override styles = [unsafeCSS(componentStyle)];\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ const compentStyle = css`
|
|
|
25
25
|
--obc-poi-surface-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.5);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
.wrapper.overlap-opaque {
|
|
29
29
|
--obc-poi-overlap-object-bg: #fff;
|
|
30
30
|
--obc-poi-overlap-object-border: var(--overlay-border-outline-color);
|
|
31
31
|
--obc-poi-overlap-wrapper-opacity: 1;
|
|
@@ -80,14 +80,14 @@ const compentStyle = css`
|
|
|
80
80
|
|
|
81
81
|
/* Overlap state styles - applied via visual state */
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
.wrapper.value-overlapped {
|
|
84
84
|
--obc-poi-overlap-elements-opacity: 0;
|
|
85
85
|
--obc-poi-label-opacity: 0;
|
|
86
86
|
--obc-poi-label-visibility: hidden;
|
|
87
87
|
--obc-poi-overlap-pointer-events: none;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
.wrapper.value-overlapped .poi-object {
|
|
91
91
|
--overlay-container-background-color: var(--obc-poi-overlap-object-bg);
|
|
92
92
|
--overlay-border-outline-color: var(--obc-poi-overlap-object-border);
|
|
93
93
|
}
|
|
@@ -322,8 +322,7 @@ const compentStyle = css`
|
|
|
322
322
|
transition: none;
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
-
|
|
326
|
-
:host(:not([value="overlapped"])) .wrapper.has-data {
|
|
325
|
+
.wrapper.has-data {
|
|
327
326
|
transition:
|
|
328
327
|
opacity var(--obc-poi-opacity-transition-duration) ease-out,
|
|
329
328
|
box-shadow var(--obc-poi-transition-duration) ease-out,
|
|
@@ -341,80 +340,71 @@ const compentStyle = css`
|
|
|
341
340
|
/* Explicit interaction fallback for POI frame. Keeps behavior even if mixin output changes. */
|
|
342
341
|
|
|
343
342
|
@media (hover: hover) {
|
|
344
|
-
:
|
|
345
|
-
.wrapper:not(.has-data):hover
|
|
343
|
+
.wrapper:not(.value-overlapped):not(.has-data):hover
|
|
346
344
|
.poi-object::part(background-frame) {
|
|
347
345
|
background-color: var(--flat-hover-background-color);
|
|
348
346
|
}
|
|
349
347
|
}
|
|
350
348
|
|
|
351
|
-
:
|
|
352
|
-
.wrapper:not(.has-data):active
|
|
349
|
+
.wrapper:not(.value-overlapped):not(.has-data):active
|
|
353
350
|
.poi-object::part(background-frame) {
|
|
354
351
|
background-color: var(--flat-pressed-background-color);
|
|
355
352
|
}
|
|
356
353
|
|
|
357
|
-
:
|
|
358
|
-
.wrapper:not(.has-data):focus-visible
|
|
354
|
+
.wrapper:not(.value-overlapped):not(.has-data):focus-visible
|
|
359
355
|
.poi-object::part(background-frame) {
|
|
360
356
|
outline-color: var(--border-focus-color);
|
|
361
357
|
outline-width: var(--global-size-spacing-border-weight-focusframe);
|
|
362
358
|
outline-style: solid;
|
|
363
359
|
}
|
|
364
360
|
|
|
365
|
-
|
|
361
|
+
.wrapper.layout-inline {
|
|
366
362
|
transform: translate(-50%, -100%);
|
|
367
363
|
}
|
|
368
364
|
|
|
369
365
|
/* Overlap alert color styles */
|
|
370
366
|
|
|
371
|
-
.alert-caution
|
|
367
|
+
.wrapper.value-overlapped.alert-caution {
|
|
372
368
|
--overlay-container-background-color: var(--alert-caution-color, #ffdb42);
|
|
373
369
|
--overlay-border-outline-color: var(--alert-caution-outline-color);
|
|
374
370
|
}
|
|
375
371
|
|
|
376
|
-
.alert-caution
|
|
372
|
+
.wrapper.value-overlapped.alert-caution .poi-object {
|
|
377
373
|
--overlay-container-background-color: var(--alert-caution-color, #ffdb42);
|
|
378
374
|
--overlay-border-outline-color: var(--alert-caution-outline-color);
|
|
379
375
|
}
|
|
380
376
|
|
|
381
|
-
.alert-warning
|
|
377
|
+
.wrapper.value-overlapped.alert-warning {
|
|
382
378
|
--overlay-container-background-color: var(--alert-warning-color, #fe9413);
|
|
383
379
|
--overlay-border-outline-color: var(--alert-warning-outline-color);
|
|
384
380
|
}
|
|
385
381
|
|
|
386
|
-
.alert-warning
|
|
382
|
+
.wrapper.value-overlapped.alert-warning .poi-object {
|
|
387
383
|
--overlay-container-background-color: var(--alert-warning-color, #fe9413);
|
|
388
384
|
--overlay-border-outline-color: var(--alert-warning-outline-color);
|
|
389
385
|
}
|
|
390
386
|
|
|
391
|
-
.alert-alarm
|
|
387
|
+
.wrapper.value-overlapped.alert-alarm {
|
|
392
388
|
--overlay-container-background-color: var(--alert-alarm-color, #e30019);
|
|
393
389
|
--overlay-border-outline-color: var(--alert-alarm-outline-color);
|
|
394
390
|
}
|
|
395
391
|
|
|
396
|
-
.alert-alarm
|
|
392
|
+
.wrapper.value-overlapped.alert-alarm .poi-object {
|
|
397
393
|
--overlay-container-background-color: var(--alert-alarm-color, #e30019);
|
|
398
394
|
--overlay-border-outline-color: var(--alert-alarm-outline-color);
|
|
399
395
|
}
|
|
400
396
|
|
|
401
|
-
|
|
402
|
-
.wrapper.alert-caution
|
|
403
|
-
.poi-object::part(background-frame) {
|
|
397
|
+
.wrapper.value-overlapped.alert-caution .poi-object::part(background-frame) {
|
|
404
398
|
background-color: var(--alert-caution-color, #ffdb42);
|
|
405
399
|
border-color: var(--alert-caution-outline-color);
|
|
406
400
|
}
|
|
407
401
|
|
|
408
|
-
|
|
409
|
-
.wrapper.alert-warning
|
|
410
|
-
.poi-object::part(background-frame) {
|
|
402
|
+
.wrapper.value-overlapped.alert-warning .poi-object::part(background-frame) {
|
|
411
403
|
background-color: var(--alert-warning-color, #fe9413);
|
|
412
404
|
border-color: var(--alert-warning-outline-color);
|
|
413
405
|
}
|
|
414
406
|
|
|
415
|
-
|
|
416
|
-
.wrapper.alert-alarm
|
|
417
|
-
.poi-object::part(background-frame) {
|
|
407
|
+
.wrapper.value-overlapped.alert-alarm .poi-object::part(background-frame) {
|
|
418
408
|
background-color: var(--alert-alarm-color, #e30019);
|
|
419
409
|
border-color: var(--alert-alarm-outline-color);
|
|
420
410
|
}
|
|
@@ -499,7 +489,7 @@ const compentStyle = css`
|
|
|
499
489
|
|
|
500
490
|
/* Overlap state for has-data variant - keep layout, hide values */
|
|
501
491
|
|
|
502
|
-
|
|
492
|
+
.wrapper.value-overlapped.has-data {
|
|
503
493
|
--obc-poi-overlapped-data-bg: var(--overlay-container-background-color);
|
|
504
494
|
--obc-poi-overlapped-data-border: var(--overlay-border-outline-color);
|
|
505
495
|
opacity: var(--obc-poi-overlap-data-opacity, 0.6);
|
|
@@ -507,48 +497,48 @@ const compentStyle = css`
|
|
|
507
497
|
box-shadow: var(--obc-poi-surface-shadow);
|
|
508
498
|
}
|
|
509
499
|
|
|
510
|
-
|
|
500
|
+
.wrapper.value-overlapped.has-data .button-wrapper {
|
|
511
501
|
visibility: hidden;
|
|
512
502
|
pointer-events: none;
|
|
513
503
|
}
|
|
514
504
|
|
|
515
|
-
|
|
505
|
+
.wrapper.value-overlapped.has-data .data-wrapper,.wrapper.value-overlapped.has-data .relation-wrapper,.wrapper.value-overlapped.has-data .button-wrapper .poi-object,.wrapper.value-overlapped.has-data .button-wrapper .selection-frame {
|
|
516
506
|
opacity: 0;
|
|
517
507
|
pointer-events: none;
|
|
518
508
|
}
|
|
519
509
|
|
|
520
|
-
|
|
510
|
+
.wrapper.value-overlapped.has-data .poi-object {
|
|
521
511
|
--overlay-container-background-color: var(--obc-poi-overlapped-data-bg);
|
|
522
512
|
--overlay-border-outline-color: var(--obc-poi-overlapped-data-border);
|
|
523
513
|
}
|
|
524
514
|
|
|
525
|
-
|
|
515
|
+
.wrapper.value-overlapped:not(.has-data) {
|
|
526
516
|
opacity: var(--obc-poi-overlap-wrapper-opacity, 0.6);
|
|
527
517
|
}
|
|
528
518
|
|
|
529
|
-
|
|
519
|
+
.wrapper.value-overlapped.has-data.alert-caution {
|
|
530
520
|
background: var(--alert-caution-color, #ffdb42);
|
|
531
521
|
border-color: var(--alert-caution-outline-color);
|
|
532
522
|
}
|
|
533
523
|
|
|
534
|
-
|
|
524
|
+
.wrapper.value-overlapped.has-data.alert-warning {
|
|
535
525
|
background: var(--alert-warning-color, #fe9413);
|
|
536
526
|
border-color: var(--alert-warning-outline-color);
|
|
537
527
|
}
|
|
538
528
|
|
|
539
|
-
|
|
529
|
+
.wrapper.value-overlapped.has-data.alert-alarm {
|
|
540
530
|
background: var(--alert-alarm-color, #e30019);
|
|
541
531
|
border-color: var(--alert-alarm-outline-color);
|
|
542
532
|
}
|
|
543
533
|
|
|
544
|
-
|
|
534
|
+
.wrapper.value-overlapped:not(.layout-inline).has-data {
|
|
545
535
|
width: var(--maneuvering-components-poi-button-touch-target, 48px);
|
|
546
536
|
min-width: var(--maneuvering-components-poi-button-touch-target, 48px);
|
|
547
537
|
max-width: var(--maneuvering-components-poi-button-touch-target, 48px);
|
|
548
538
|
height: 96px;
|
|
549
539
|
}
|
|
550
540
|
|
|
551
|
-
|
|
541
|
+
.wrapper.layout-inline.value-overlapped.has-data {
|
|
552
542
|
padding-top: 0;
|
|
553
543
|
height: var(--obc-poi-group-overlap-height, auto);
|
|
554
544
|
transform: translate(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-button.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"poi-button.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-button.d.ts","sourceRoot":"","sources":["../../../../src/ar/building-blocks/poi-button/poi-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAQ,OAAO,EAAY,MAAM,KAAK,CAAC;AAKzD,OAAO,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,+CAA+C,CAAC;AACvD,OAAO,+CAA+C,CAAC;AAEvD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,UAAU,eAAe;CAC1B;AASD,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,uBAAuB,GAAE,MAA+C,GACvE,gBAAgB,CAgBlB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,YAAa,SAAQ,UAAU;IAChB,iBAAiB,SAAK;IACrB,QAAQ,UAAS;
|
|
1
|
+
{"version":3,"file":"poi-button.d.ts","sourceRoot":"","sources":["../../../../src/ar/building-blocks/poi-button/poi-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAQ,OAAO,EAAY,MAAM,KAAK,CAAC;AAKzD,OAAO,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,+CAA+C,CAAC;AACvD,OAAO,+CAA+C,CAAC;AAEvD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,UAAU,eAAe;CAC1B;AASD,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,uBAAuB,GAAE,MAA+C,GACvE,gBAAgB,CAgBlB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,YAAa,SAAQ,UAAU;IAChB,iBAAiB,SAAK;IACrB,QAAQ,UAAS;IAClB,MAAM,EAAE,kBAAkB,CACtB;IAE9B,SAAS,UAAS;IAElB,KAAK,EAAE,iBAAiB,CAA6B;IAErD,KAAK,EAAE,oBAAoB,CAAkC;IAE7D,aAAa,UAAS;IACI,IAAI,mBAA2B;IAC9B,eAAe,UAAS;IACR,IAAI,EAAE,oBAAoB,EAAE,CAAM;IAClD,WAAW,UAAS;IACQ,aAAa,SAAM;IAC1E,OAAO,CAAC,qBAAqB,CAAC,CAAmB;IAExC,iBAAiB;IAKjB,oBAAoB;IAM7B,OAAO,CAAC,0BAA0B;IA0BlC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,OAAO,KAAK,gBAAgB,GAK3B;IAED,OAAO,KAAK,mBAAmB,GAY9B;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,yBAAyB,GAEpC;IAED,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,sBAAsB,CAE5B;cAEiB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAInE,SAAS,CAAC,YAAY;IAwBtB,SAAS,KAAK,aAAa,IAAI,gBAAgB,CAI9C;IAED,SAAS,KAAK,cAAc,IAAI,iBAAiB,CA6BhD;IAED,SAAS,KAAK,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE7D;IAEQ,MAAM;IAOf,SAAS,CAAC,eAAe;IAqBzB,SAAS,CAAC,YAAY;IAyBtB,SAAS,CAAC,cAAc;IA4CxB,SAAS,KAAK,kBAAkB,IAAI,wBAAwB,CAI3D;IAED,SAAS,KAAK,mBAAmB,IAAI,yBAAyB,CAI7D;IAED,SAAS,CAAC,oBAAoB;IAc9B,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}
|
|
@@ -239,6 +239,9 @@ let ObcPoiButton = class extends LitElement {
|
|
|
239
239
|
selected: this.selected,
|
|
240
240
|
[`alert-${this.alertClassSuffix}`]: true,
|
|
241
241
|
[`type-${this.type}`]: true,
|
|
242
|
+
[`value-${this.value}`]: true,
|
|
243
|
+
[`layout-${this.layout}`]: true,
|
|
244
|
+
"overlap-opaque": this.overlapOpaque,
|
|
242
245
|
expanded: this.inExpandedGroup,
|
|
243
246
|
...this.wrapperVariantClasses
|
|
244
247
|
})}
|
|
@@ -262,6 +265,9 @@ let ObcPoiButton = class extends LitElement {
|
|
|
262
265
|
"has-header": this.hasHeader && (this.hasHeaderContent || this.hasGeneratedHeaderContent),
|
|
263
266
|
[`alert-${this.alertClassSuffix}`]: true,
|
|
264
267
|
[`type-${this.type}`]: true,
|
|
268
|
+
[`value-${this.value}`]: true,
|
|
269
|
+
[`layout-${this.layout}`]: true,
|
|
270
|
+
"overlap-opaque": this.overlapOpaque,
|
|
265
271
|
expanded: this.inExpandedGroup,
|
|
266
272
|
...this.wrapperVariantClasses
|
|
267
273
|
})}
|
|
@@ -313,19 +319,19 @@ __decorateClass([
|
|
|
313
319
|
property({ type: Boolean })
|
|
314
320
|
], ObcPoiButton.prototype, "selected", 2);
|
|
315
321
|
__decorateClass([
|
|
316
|
-
property({ type: String
|
|
322
|
+
property({ type: String })
|
|
317
323
|
], ObcPoiButton.prototype, "layout", 2);
|
|
318
324
|
__decorateClass([
|
|
319
|
-
property({ type: Boolean
|
|
325
|
+
property({ type: Boolean })
|
|
320
326
|
], ObcPoiButton.prototype, "hasHeader", 2);
|
|
321
327
|
__decorateClass([
|
|
322
|
-
property({ type: String
|
|
328
|
+
property({ type: String })
|
|
323
329
|
], ObcPoiButton.prototype, "state", 2);
|
|
324
330
|
__decorateClass([
|
|
325
|
-
property({ type: String
|
|
331
|
+
property({ type: String })
|
|
326
332
|
], ObcPoiButton.prototype, "value", 2);
|
|
327
333
|
__decorateClass([
|
|
328
|
-
property({ type: Boolean
|
|
334
|
+
property({ type: Boolean })
|
|
329
335
|
], ObcPoiButton.prototype, "overlapOpaque", 2);
|
|
330
336
|
__decorateClass([
|
|
331
337
|
property({ type: String })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-button.js","sources":["../../../../src/ar/building-blocks/poi-button/poi-button.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport compentStyle from './poi-button.css?inline';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../../../decorator.js';\nimport '../poi-header/poi-header.js';\nimport {ObcPoiHeaderState, ObcPoiHeaderType} from '../poi-header/poi-header.js';\nimport {\n ObcPoiObjectState,\n ObcPoiObjectStyle,\n ObcPoiObjectType,\n} from '../poi-object/poi-object.js';\nimport {\n ObcPoiSelectionFrameState,\n ObcPoiSelectionFrameType,\n} from '../poi-selection-frame/poi-selection-frame.js';\nimport '../poi-selection-frame/poi-selection-frame.js';\n\nexport enum ObcPoiButtonType {\n Button = 'button',\n Enhanced = 'enhanced',\n}\n\nexport enum ObcPoiButtonLayout {\n Anchored = 'anchored',\n Inline = 'inline',\n}\n\nexport enum ObcPoiButtonState {\n Enabled = 'enabled',\n Caution = 'caution',\n Warning = 'warning',\n Alarm = 'alarm',\n}\n\nexport enum PoiButtonVisualState {\n Unchecked = 'unchecked',\n Checked = 'checked',\n Activated = 'activated',\n Overlapped = 'overlapped',\n}\n\nconst BUTTON_TOUCH_TARGET_PX = 48;\nconst ENHANCED_TOUCH_TARGET_PX = 64;\nconst DEFAULT_ENHANCED_BOX_AREA_THRESHOLD_PX =\n (BUTTON_TOUCH_TARGET_PX * BUTTON_TOUCH_TARGET_PX +\n ENHANCED_TOUCH_TARGET_PX * ENHANCED_TOUCH_TARGET_PX) /\n 2;\n\nexport function resolvePoiButtonTypeFromBoxSize(\n boxWidthPx: number | null | undefined,\n boxHeightPx: number | null | undefined,\n enhancedAreaThresholdPx: number = DEFAULT_ENHANCED_BOX_AREA_THRESHOLD_PX\n): ObcPoiButtonType {\n const width = Number(boxWidthPx);\n const height = Number(boxHeightPx);\n if (\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0\n ) {\n return ObcPoiButtonType.Button;\n }\n\n const area = width * height;\n return area >= enhancedAreaThresholdPx\n ? ObcPoiButtonType.Enhanced\n : ObcPoiButtonType.Button;\n}\n\nexport interface ObcPoiButtonDataItem {\n value: string;\n label: string;\n unit: string;\n}\n\n/**\n * `<obc-poi-button>` - Marker button component that renders an icon target with optional header and data rows.\n *\n * ## Overview\n * Use this component when you need a button-style marker that can show stateful framing and optional metric rows.\n * Keywords/synonyms: marker button, target button, icon target, POI button.\n *\n * ## Features/Variants\n * - `type` (default `button`): `button` or `enhanced` size.\n * - `layout` (default `anchored`): `anchored` or `inline`.\n * - `value` (default `unchecked`): `unchecked`, `checked`, `activated`, `overlapped`.\n * - `overlapOpaque` (default `false`): controls overlapped opacity mode (`false` = translucent, `true` = opaque).\n * - `state` (default `enabled`): `enabled`, `caution`, `warning`, `alarm`.\n * - `selected` (default `false`): shows selection frame in anchored layout.\n * - `relativeDirection` (default `0`): rotates default-slot icon content in degrees.\n * - `data` (default `[]`): when non-empty, renders value/label/unit rows.\n * - `hasHeader` + `header` slot: renders a header area and syncs slotted `obc-poi-header` state.\n * - `hasRelation` (default `false`): enables optional relation content in data mode.\n * - `inExpandedGroup` (default `false`): applies `expanded` CSS class.\n * - TODO(designer): Confirm intended UX semantics for `inExpandedGroup` beyond styling.\n *\n * ## Usage Guidelines\n * - Use `layout=\"anchored\"` for standalone marker buttons.\n * - Use `layout=\"inline\"` when this component is embedded in a larger marker composition.\n * - Provide `data` for metric display variants.\n * - Enable `hasRelation` only when relation slot content is provided.\n *\n * ## Slots/Content\n * - Default slot: Icon/content rendered inside `obc-poi-object`.\n * - `header`: Optional header content rendered above the marker body.\n * - `relation`: Optional relation icon/content rendered when `hasRelation` is true in data mode.\n *\n * ## Events\n * This component does not emit custom events.\n * Native `click` is available from the internal `<button>`.\n *\n * ## Best Practices\n * - Keep `value`, `state`, and `selected` synchronized to avoid conflicting visual states.\n * - Prefer enum values for `type`, `layout`, `state`, and `value`.\n *\n * ## Example\n * ```html\n * <obc-poi-button type=\"button\" layout=\"anchored\" value=\"checked\" selected>\n * <obi-placeholder></obi-placeholder>\n * <obc-poi-header slot=\"header\" content=\"1\"></obc-poi-header>\n * </obc-poi-button>\n * ```\n *\n * @slot - Icon/content rendered inside `obc-poi-object`.\n * @slot header - Optional header content rendered above the marker body.\n * @slot relation - Optional relation icon/content in data mode when `hasRelation` is true.\n */\n@customElement('obc-poi-button')\nexport class ObcPoiButton extends LitElement {\n @property({type: Number}) relativeDirection = 0;\n @property({type: Boolean}) selected = false;\n @property({type: String, reflect: true}) layout: ObcPoiButtonLayout =\n ObcPoiButtonLayout.Anchored;\n @property({type: Boolean, reflect: true, attribute: 'has-header'})\n hasHeader = false;\n @property({type: String, reflect: true})\n state: ObcPoiButtonState = ObcPoiButtonState.Enabled;\n @property({type: String, reflect: true})\n value: PoiButtonVisualState = PoiButtonVisualState.Unchecked;\n @property({type: Boolean, reflect: true, attribute: 'overlap-opaque'})\n overlapOpaque = false;\n @property({type: String}) type = ObcPoiButtonType.Button;\n @property({type: Boolean}) inExpandedGroup = false;\n @property({type: Array, attribute: false}) data: ObcPoiButtonDataItem[] = [];\n @property({type: Boolean}) hasRelation = false;\n @property({type: String, attribute: 'header-content'}) headerContent = '';\n private headerContentObserver?: MutationObserver;\n\n override connectedCallback() {\n super.connectedCallback();\n this.setupHeaderContentObserver();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.headerContentObserver?.disconnect();\n this.headerContentObserver = undefined;\n }\n\n private setupHeaderContentObserver() {\n this.headerContentObserver?.disconnect();\n this.headerContentObserver = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n this.requestUpdate();\n return;\n }\n if (\n mutation.type === 'attributes' &&\n mutation.target instanceof HTMLElement &&\n mutation.target.getAttribute('slot') === 'header'\n ) {\n this.requestUpdate();\n return;\n }\n }\n });\n this.headerContentObserver.observe(this, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n get hasData(): boolean {\n return this.data.length > 0;\n }\n\n private get alertClassSuffix(): string {\n if (this.state === ObcPoiButtonState.Enabled) {\n return 'none';\n }\n return this.state;\n }\n\n private get resolvedHeaderState(): ObcPoiHeaderState {\n switch (this.state) {\n case ObcPoiButtonState.Caution:\n return ObcPoiHeaderState.Caution;\n case ObcPoiButtonState.Warning:\n return ObcPoiHeaderState.Warning;\n case ObcPoiButtonState.Alarm:\n return ObcPoiHeaderState.Alarm;\n case ObcPoiButtonState.Enabled:\n default:\n return ObcPoiHeaderState.Selected;\n }\n }\n\n private get hasHeaderContent(): boolean {\n return this.querySelector('[slot=\"header\"]') !== null;\n }\n\n private get hasGeneratedHeaderContent(): boolean {\n return this.headerContent.trim().length > 0;\n }\n\n private syncSlottedHeaderState() {\n const headerSlot = this.renderRoot.querySelector(\n 'slot[name=\"header\"]'\n ) as HTMLSlotElement | null;\n if (!headerSlot) {\n return;\n }\n\n const state = this.resolvedHeaderState;\n const assigned = headerSlot.assignedElements({flatten: true});\n const headers = new Set<HTMLElement>();\n\n for (const element of assigned) {\n if (element.matches('obc-poi-header')) {\n headers.add(element as HTMLElement);\n }\n for (const nested of element.querySelectorAll('obc-poi-header')) {\n headers.add(nested as HTMLElement);\n }\n }\n\n for (const header of headers) {\n (header as {state?: string}).state = state;\n header.setAttribute('state', state);\n }\n }\n\n private handleHeaderSlotChange = () => {\n this.syncSlottedHeaderState();\n };\n\n protected override updated(_changedProperties: Map<string, unknown>) {\n this.syncSlottedHeaderState();\n }\n\n protected renderHeader() {\n if (\n !this.hasHeader ||\n (!this.hasHeaderContent && !this.hasGeneratedHeaderContent)\n ) {\n return nothing;\n }\n\n return html`\n <div class=\"id-label\">\n ${this.hasHeaderContent\n ? html`<slot\n name=\"header\"\n @slotchange=${this.handleHeaderSlotChange}\n ></slot>`\n : html`<obc-poi-header\n .content=${this.headerContent}\n .state=${this.resolvedHeaderState}\n .type=${ObcPoiHeaderType.Id}\n ></obc-poi-header>`}\n </div>\n `;\n }\n\n protected get poiObjectType(): ObcPoiObjectType {\n return this.type === ObcPoiButtonType.Enhanced\n ? ObcPoiObjectType.Large\n : ObcPoiObjectType.Regular;\n }\n\n protected get poiObjectState(): ObcPoiObjectState {\n if (this.value === PoiButtonVisualState.Overlapped) {\n return ObcPoiObjectState.Overlapped;\n }\n\n if (this.state === ObcPoiButtonState.Caution)\n return ObcPoiObjectState.Caution;\n if (this.state === ObcPoiButtonState.Warning)\n return ObcPoiObjectState.Warning;\n if (this.state === ObcPoiButtonState.Alarm) return ObcPoiObjectState.Alarm;\n\n if (this.hasData) {\n if (this.value === PoiButtonVisualState.Activated) {\n return ObcPoiObjectState.Activated;\n }\n if (this.value === PoiButtonVisualState.Checked) {\n return ObcPoiObjectState.StaticChecked;\n }\n return ObcPoiObjectState.StaticUnchecked;\n }\n\n if (this.value === PoiButtonVisualState.Activated) {\n return ObcPoiObjectState.Activated;\n }\n if (this.value === PoiButtonVisualState.Checked) {\n return ObcPoiObjectState.Checked;\n }\n\n return ObcPoiObjectState.Unchecked;\n }\n\n protected get wrapperVariantClasses(): Record<string, boolean> {\n return {};\n }\n\n override render() {\n if (this.hasData) {\n return this.renderWithData();\n }\n return this.renderButton();\n }\n\n protected renderPoiObject() {\n return html`\n <obc-poi-object\n class=\"poi-object\"\n .type=${this.poiObjectType}\n .objectStyle=${ObcPoiObjectStyle.Regular}\n .state=${this.poiObjectState}\n .interactive=${false}\n exportparts=\"icon\"\n >\n <span\n class=\"icon\"\n part=\"icon\"\n style=\"transform: rotate(${this.relativeDirection}deg);\"\n >\n <slot></slot>\n </span>\n </obc-poi-object>\n `;\n }\n\n protected renderButton() {\n return html`\n <button\n type=\"button\"\n class=${classMap({\n wrapper: true,\n selected: this.selected,\n [`alert-${this.alertClassSuffix}`]: true,\n [`type-${this.type}`]: true,\n expanded: this.inExpandedGroup,\n ...this.wrapperVariantClasses,\n })}\n >\n ${this.renderHeader()}\n <div class=\"button-wrapper\">\n ${this.renderSelectionFrame()} ${this.renderPoiObject()}\n <div class=\"alert-ring\"></div>\n </div>\n </button>\n `;\n }\n\n protected renderWithData() {\n return html`\n <button\n type=\"button\"\n class=${classMap({\n wrapper: true,\n 'has-data': true,\n selected: this.selected,\n 'has-header':\n this.hasHeader &&\n (this.hasHeaderContent || this.hasGeneratedHeaderContent),\n [`alert-${this.alertClassSuffix}`]: true,\n [`type-${this.type}`]: true,\n expanded: this.inExpandedGroup,\n ...this.wrapperVariantClasses,\n })}\n >\n ${this.renderHeader()}\n <div class=\"data-wrapper\">\n ${this.data.map(\n (item) =>\n html`<div class=\"data\">\n <div class=\"value\">${item.value}</div>\n <div class=\"label\">${item.label}</div>\n <div class=\"unit\">${item.unit}</div>\n </div>`\n )}\n </div>\n <div class=\"button-wrapper\">\n ${this.renderSelectionFrame()} ${this.renderPoiObject()}\n </div>\n ${this.hasRelation\n ? html`<div class=\"relation-wrapper\" part=\"relation-wrapper\">\n <slot name=\"relation\" class=\"relation\" part=\"relation\"></slot>\n </div>`\n : nothing}\n <div class=\"alert-ring\"></div>\n </button>\n `;\n }\n\n protected get selectionFrameType(): ObcPoiSelectionFrameType {\n return this.type === ObcPoiButtonType.Enhanced\n ? ObcPoiSelectionFrameType.Enhanced\n : ObcPoiSelectionFrameType.Button;\n }\n\n protected get selectionFrameState(): ObcPoiSelectionFrameState {\n return this.state === ObcPoiButtonState.Enabled\n ? ObcPoiSelectionFrameState.Regular\n : ObcPoiSelectionFrameState.Alert;\n }\n\n protected renderSelectionFrame() {\n if (!this.selected || this.layout === ObcPoiButtonLayout.Inline) {\n return nothing;\n }\n\n return html`\n <obc-poi-selection-frame\n class=\"selection-frame\"\n .type=${this.selectionFrameType}\n .state=${this.selectionFrameState}\n ></obc-poi-selection-frame>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-poi-button': ObcPoiButton;\n }\n}\n"],"names":["ObcPoiButtonType","ObcPoiButtonLayout","ObcPoiButtonState","PoiButtonVisualState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"poi-button.js","sources":["../../../../src/ar/building-blocks/poi-button/poi-button.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport compentStyle from './poi-button.css?inline';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../../../decorator.js';\nimport '../poi-header/poi-header.js';\nimport {ObcPoiHeaderState, ObcPoiHeaderType} from '../poi-header/poi-header.js';\nimport {\n ObcPoiObjectState,\n ObcPoiObjectStyle,\n ObcPoiObjectType,\n} from '../poi-object/poi-object.js';\nimport {\n ObcPoiSelectionFrameState,\n ObcPoiSelectionFrameType,\n} from '../poi-selection-frame/poi-selection-frame.js';\nimport '../poi-selection-frame/poi-selection-frame.js';\n\nexport enum ObcPoiButtonType {\n Button = 'button',\n Enhanced = 'enhanced',\n}\n\nexport enum ObcPoiButtonLayout {\n Anchored = 'anchored',\n Inline = 'inline',\n}\n\nexport enum ObcPoiButtonState {\n Enabled = 'enabled',\n Caution = 'caution',\n Warning = 'warning',\n Alarm = 'alarm',\n}\n\nexport enum PoiButtonVisualState {\n Unchecked = 'unchecked',\n Checked = 'checked',\n Activated = 'activated',\n Overlapped = 'overlapped',\n}\n\nconst BUTTON_TOUCH_TARGET_PX = 48;\nconst ENHANCED_TOUCH_TARGET_PX = 64;\nconst DEFAULT_ENHANCED_BOX_AREA_THRESHOLD_PX =\n (BUTTON_TOUCH_TARGET_PX * BUTTON_TOUCH_TARGET_PX +\n ENHANCED_TOUCH_TARGET_PX * ENHANCED_TOUCH_TARGET_PX) /\n 2;\n\nexport function resolvePoiButtonTypeFromBoxSize(\n boxWidthPx: number | null | undefined,\n boxHeightPx: number | null | undefined,\n enhancedAreaThresholdPx: number = DEFAULT_ENHANCED_BOX_AREA_THRESHOLD_PX\n): ObcPoiButtonType {\n const width = Number(boxWidthPx);\n const height = Number(boxHeightPx);\n if (\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0\n ) {\n return ObcPoiButtonType.Button;\n }\n\n const area = width * height;\n return area >= enhancedAreaThresholdPx\n ? ObcPoiButtonType.Enhanced\n : ObcPoiButtonType.Button;\n}\n\nexport interface ObcPoiButtonDataItem {\n value: string;\n label: string;\n unit: string;\n}\n\n/**\n * `<obc-poi-button>` - Marker button component that renders an icon target with optional header and data rows.\n *\n * ## Overview\n * Use this component when you need a button-style marker that can show stateful framing and optional metric rows.\n * Keywords/synonyms: marker button, target button, icon target, POI button.\n *\n * ## Features/Variants\n * - `type` (default `button`): `button` or `enhanced` size.\n * - `layout` (default `anchored`): `anchored` or `inline`.\n * - `value` (default `unchecked`): `unchecked`, `checked`, `activated`, `overlapped`.\n * - `overlapOpaque` (default `false`): controls overlapped opacity mode (`false` = translucent, `true` = opaque).\n * - `state` (default `enabled`): `enabled`, `caution`, `warning`, `alarm`.\n * - `selected` (default `false`): shows selection frame in anchored layout.\n * - `relativeDirection` (default `0`): rotates default-slot icon content in degrees.\n * - `data` (default `[]`): when non-empty, renders value/label/unit rows.\n * - `hasHeader` + `header` slot: renders a header area and syncs slotted `obc-poi-header` state.\n * - `hasRelation` (default `false`): enables optional relation content in data mode.\n * - `inExpandedGroup` (default `false`): applies `expanded` CSS class.\n * - TODO(designer): Confirm intended UX semantics for `inExpandedGroup` beyond styling.\n *\n * ## Usage Guidelines\n * - Use `layout=\"anchored\"` for standalone marker buttons.\n * - Use `layout=\"inline\"` when this component is embedded in a larger marker composition.\n * - Provide `data` for metric display variants.\n * - Enable `hasRelation` only when relation slot content is provided.\n *\n * ## Slots/Content\n * - Default slot: Icon/content rendered inside `obc-poi-object`.\n * - `header`: Optional header content rendered above the marker body.\n * - `relation`: Optional relation icon/content rendered when `hasRelation` is true in data mode.\n *\n * ## Events\n * This component does not emit custom events.\n * Native `click` is available from the internal `<button>`.\n *\n * ## Best Practices\n * - Keep `value`, `state`, and `selected` synchronized to avoid conflicting visual states.\n * - Prefer enum values for `type`, `layout`, `state`, and `value`.\n *\n * ## Example\n * ```html\n * <obc-poi-button type=\"button\" layout=\"anchored\" value=\"checked\" selected>\n * <obi-placeholder></obi-placeholder>\n * <obc-poi-header slot=\"header\" content=\"1\"></obc-poi-header>\n * </obc-poi-button>\n * ```\n *\n * @slot - Icon/content rendered inside `obc-poi-object`.\n * @slot header - Optional header content rendered above the marker body.\n * @slot relation - Optional relation icon/content in data mode when `hasRelation` is true.\n */\n@customElement('obc-poi-button')\nexport class ObcPoiButton extends LitElement {\n @property({type: Number}) relativeDirection = 0;\n @property({type: Boolean}) selected = false;\n @property({type: String}) layout: ObcPoiButtonLayout =\n ObcPoiButtonLayout.Anchored;\n @property({type: Boolean})\n hasHeader = false;\n @property({type: String})\n state: ObcPoiButtonState = ObcPoiButtonState.Enabled;\n @property({type: String})\n value: PoiButtonVisualState = PoiButtonVisualState.Unchecked;\n @property({type: Boolean})\n overlapOpaque = false;\n @property({type: String}) type = ObcPoiButtonType.Button;\n @property({type: Boolean}) inExpandedGroup = false;\n @property({type: Array, attribute: false}) data: ObcPoiButtonDataItem[] = [];\n @property({type: Boolean}) hasRelation = false;\n @property({type: String, attribute: 'header-content'}) headerContent = '';\n private headerContentObserver?: MutationObserver;\n\n override connectedCallback() {\n super.connectedCallback();\n this.setupHeaderContentObserver();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.headerContentObserver?.disconnect();\n this.headerContentObserver = undefined;\n }\n\n private setupHeaderContentObserver() {\n this.headerContentObserver?.disconnect();\n this.headerContentObserver = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n this.requestUpdate();\n return;\n }\n if (\n mutation.type === 'attributes' &&\n mutation.target instanceof HTMLElement &&\n mutation.target.getAttribute('slot') === 'header'\n ) {\n this.requestUpdate();\n return;\n }\n }\n });\n this.headerContentObserver.observe(this, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n get hasData(): boolean {\n return this.data.length > 0;\n }\n\n private get alertClassSuffix(): string {\n if (this.state === ObcPoiButtonState.Enabled) {\n return 'none';\n }\n return this.state;\n }\n\n private get resolvedHeaderState(): ObcPoiHeaderState {\n switch (this.state) {\n case ObcPoiButtonState.Caution:\n return ObcPoiHeaderState.Caution;\n case ObcPoiButtonState.Warning:\n return ObcPoiHeaderState.Warning;\n case ObcPoiButtonState.Alarm:\n return ObcPoiHeaderState.Alarm;\n case ObcPoiButtonState.Enabled:\n default:\n return ObcPoiHeaderState.Selected;\n }\n }\n\n private get hasHeaderContent(): boolean {\n return this.querySelector('[slot=\"header\"]') !== null;\n }\n\n private get hasGeneratedHeaderContent(): boolean {\n return this.headerContent.trim().length > 0;\n }\n\n private syncSlottedHeaderState() {\n const headerSlot = this.renderRoot.querySelector(\n 'slot[name=\"header\"]'\n ) as HTMLSlotElement | null;\n if (!headerSlot) {\n return;\n }\n\n const state = this.resolvedHeaderState;\n const assigned = headerSlot.assignedElements({flatten: true});\n const headers = new Set<HTMLElement>();\n\n for (const element of assigned) {\n if (element.matches('obc-poi-header')) {\n headers.add(element as HTMLElement);\n }\n for (const nested of element.querySelectorAll('obc-poi-header')) {\n headers.add(nested as HTMLElement);\n }\n }\n\n for (const header of headers) {\n (header as {state?: string}).state = state;\n header.setAttribute('state', state);\n }\n }\n\n private handleHeaderSlotChange = () => {\n this.syncSlottedHeaderState();\n };\n\n protected override updated(_changedProperties: Map<string, unknown>) {\n this.syncSlottedHeaderState();\n }\n\n protected renderHeader() {\n if (\n !this.hasHeader ||\n (!this.hasHeaderContent && !this.hasGeneratedHeaderContent)\n ) {\n return nothing;\n }\n\n return html`\n <div class=\"id-label\">\n ${this.hasHeaderContent\n ? html`<slot\n name=\"header\"\n @slotchange=${this.handleHeaderSlotChange}\n ></slot>`\n : html`<obc-poi-header\n .content=${this.headerContent}\n .state=${this.resolvedHeaderState}\n .type=${ObcPoiHeaderType.Id}\n ></obc-poi-header>`}\n </div>\n `;\n }\n\n protected get poiObjectType(): ObcPoiObjectType {\n return this.type === ObcPoiButtonType.Enhanced\n ? ObcPoiObjectType.Large\n : ObcPoiObjectType.Regular;\n }\n\n protected get poiObjectState(): ObcPoiObjectState {\n if (this.value === PoiButtonVisualState.Overlapped) {\n return ObcPoiObjectState.Overlapped;\n }\n\n if (this.state === ObcPoiButtonState.Caution)\n return ObcPoiObjectState.Caution;\n if (this.state === ObcPoiButtonState.Warning)\n return ObcPoiObjectState.Warning;\n if (this.state === ObcPoiButtonState.Alarm) return ObcPoiObjectState.Alarm;\n\n if (this.hasData) {\n if (this.value === PoiButtonVisualState.Activated) {\n return ObcPoiObjectState.Activated;\n }\n if (this.value === PoiButtonVisualState.Checked) {\n return ObcPoiObjectState.StaticChecked;\n }\n return ObcPoiObjectState.StaticUnchecked;\n }\n\n if (this.value === PoiButtonVisualState.Activated) {\n return ObcPoiObjectState.Activated;\n }\n if (this.value === PoiButtonVisualState.Checked) {\n return ObcPoiObjectState.Checked;\n }\n\n return ObcPoiObjectState.Unchecked;\n }\n\n protected get wrapperVariantClasses(): Record<string, boolean> {\n return {};\n }\n\n override render() {\n if (this.hasData) {\n return this.renderWithData();\n }\n return this.renderButton();\n }\n\n protected renderPoiObject() {\n return html`\n <obc-poi-object\n class=\"poi-object\"\n .type=${this.poiObjectType}\n .objectStyle=${ObcPoiObjectStyle.Regular}\n .state=${this.poiObjectState}\n .interactive=${false}\n exportparts=\"icon\"\n >\n <span\n class=\"icon\"\n part=\"icon\"\n style=\"transform: rotate(${this.relativeDirection}deg);\"\n >\n <slot></slot>\n </span>\n </obc-poi-object>\n `;\n }\n\n protected renderButton() {\n return html`\n <button\n type=\"button\"\n class=${classMap({\n wrapper: true,\n selected: this.selected,\n [`alert-${this.alertClassSuffix}`]: true,\n [`type-${this.type}`]: true,\n [`value-${this.value}`]: true,\n [`layout-${this.layout}`]: true,\n 'overlap-opaque': this.overlapOpaque,\n expanded: this.inExpandedGroup,\n ...this.wrapperVariantClasses,\n })}\n >\n ${this.renderHeader()}\n <div class=\"button-wrapper\">\n ${this.renderSelectionFrame()} ${this.renderPoiObject()}\n <div class=\"alert-ring\"></div>\n </div>\n </button>\n `;\n }\n\n protected renderWithData() {\n return html`\n <button\n type=\"button\"\n class=${classMap({\n wrapper: true,\n 'has-data': true,\n selected: this.selected,\n 'has-header':\n this.hasHeader &&\n (this.hasHeaderContent || this.hasGeneratedHeaderContent),\n [`alert-${this.alertClassSuffix}`]: true,\n [`type-${this.type}`]: true,\n [`value-${this.value}`]: true,\n [`layout-${this.layout}`]: true,\n 'overlap-opaque': this.overlapOpaque,\n expanded: this.inExpandedGroup,\n ...this.wrapperVariantClasses,\n })}\n >\n ${this.renderHeader()}\n <div class=\"data-wrapper\">\n ${this.data.map(\n (item) =>\n html`<div class=\"data\">\n <div class=\"value\">${item.value}</div>\n <div class=\"label\">${item.label}</div>\n <div class=\"unit\">${item.unit}</div>\n </div>`\n )}\n </div>\n <div class=\"button-wrapper\">\n ${this.renderSelectionFrame()} ${this.renderPoiObject()}\n </div>\n ${this.hasRelation\n ? html`<div class=\"relation-wrapper\" part=\"relation-wrapper\">\n <slot name=\"relation\" class=\"relation\" part=\"relation\"></slot>\n </div>`\n : nothing}\n <div class=\"alert-ring\"></div>\n </button>\n `;\n }\n\n protected get selectionFrameType(): ObcPoiSelectionFrameType {\n return this.type === ObcPoiButtonType.Enhanced\n ? ObcPoiSelectionFrameType.Enhanced\n : ObcPoiSelectionFrameType.Button;\n }\n\n protected get selectionFrameState(): ObcPoiSelectionFrameState {\n return this.state === ObcPoiButtonState.Enabled\n ? ObcPoiSelectionFrameState.Regular\n : ObcPoiSelectionFrameState.Alert;\n }\n\n protected renderSelectionFrame() {\n if (!this.selected || this.layout === ObcPoiButtonLayout.Inline) {\n return nothing;\n }\n\n return html`\n <obc-poi-selection-frame\n class=\"selection-frame\"\n .type=${this.selectionFrameType}\n .state=${this.selectionFrameState}\n ></obc-poi-selection-frame>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-poi-button': ObcPoiButton;\n }\n}\n"],"names":["ObcPoiButtonType","ObcPoiButtonLayout","ObcPoiButtonState","PoiButtonVisualState"],"mappings":"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"}
|
|
@@ -13,33 +13,33 @@ const componentStyle = css`
|
|
|
13
13
|
--obc-poi-line-current-dash-array: var(--obc-poi-line-dash-array);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
.wrapper.line-style-selected,
|
|
17
|
+
.wrapper.line-style-enhanced {
|
|
18
18
|
--obc-poi-line-line-color: var(--overlay-element-active-color);
|
|
19
19
|
--obc-poi-line-outline-color: var(--element-active-color);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
.wrapper.line-style-alarm {
|
|
23
23
|
--obc-poi-line-line-color: var(--alert-alarm-color);
|
|
24
24
|
--obc-poi-line-outline-color: var(--on-alarm-color);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
.wrapper.line-style-caution {
|
|
28
28
|
--obc-poi-line-line-color: var(--alert-caution-color);
|
|
29
29
|
--obc-poi-line-outline-color: var(--alert-caution-outline-color);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
.wrapper.line-style-warning {
|
|
33
33
|
--obc-poi-line-line-color: var(--alert-warning-color);
|
|
34
34
|
--obc-poi-line-outline-color: var(--on-warning-color);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
.wrapper.line-style-route {
|
|
38
38
|
--obc-poi-line-line-color: var(--instrument-enhanced-secondary-color);
|
|
39
39
|
--obc-poi-line-outline-color: var(--overlay-element-active-color);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
.wrapper.line-type-dashed.line-style-route {
|
|
43
43
|
--obc-poi-line-line-color: var(--base-blue-500);
|
|
44
44
|
--obc-poi-line-outline-color: var(--base-blue-050);
|
|
45
45
|
--obc-poi-line-current-dash-array: var(--obc-poi-line-route-dash-array);
|
|
@@ -79,7 +79,7 @@ export declare const POI_VISUAL_VARIANTS: Array<{
|
|
|
79
79
|
* ## Example
|
|
80
80
|
*
|
|
81
81
|
* ```html
|
|
82
|
-
* <obc-poi-graphic-line
|
|
82
|
+
* <obc-poi-graphic-line .lineStyle=${POIStyle.Enhanced} .lineType=${POILineType.Regular} .lineHeight=${96} .offset=${0}></obc-poi-graphic-line>
|
|
83
83
|
* ```
|
|
84
84
|
*/
|
|
85
85
|
export declare class ObcPoiGraphicLine extends LitElement {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-graphic-line.d.ts","sourceRoot":"","sources":["../../../../src/ar/building-blocks/poi-graphic-line/poi-graphic-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAuB,MAAM,KAAK,CAAC;AAOrD,oBAAY,QAAQ;IAClB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CACnC,QAAQ,EACR,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CACpC,CAAC;AAqHF,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,eAAe,CAkBzE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,QAAQ,GAAE,WAAW,GAAG,MAA4B,GACnD,aAAa,CAKf;AAED,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAOvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,WAAW,EAG9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC;IACtC,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;CACnB,CAiDA,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAC,UAAU,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwD;IACxD,UAAU,EAAE,MAAM,CAAM;IACxB,SAAS,EAAE,MAAM,CAAK;IAEhD,SAAS,EAAE,QAAQ,CAAqB;IAExC,QAAQ,EAAE,WAAW,CAAuB;IAClB,MAAM,EAAE,MAAM,CAAK;IACpC,MAAM;
|
|
1
|
+
{"version":3,"file":"poi-graphic-line.d.ts","sourceRoot":"","sources":["../../../../src/ar/building-blocks/poi-graphic-line/poi-graphic-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAuB,MAAM,KAAK,CAAC;AAOrD,oBAAY,QAAQ;IAClB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CACnC,QAAQ,EACR,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CACpC,CAAC;AAqHF,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,eAAe,CAkBzE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,QAAQ,GAAE,WAAW,GAAG,MAA4B,GACnD,aAAa,CAKf;AAED,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAOvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,WAAW,EAG9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC;IACtC,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;CACnB,CAiDA,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAC,UAAU,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwD;IACxD,UAAU,EAAE,MAAM,CAAM;IACxB,SAAS,EAAE,MAAM,CAAK;IAEhD,SAAS,EAAE,QAAQ,CAAqB;IAExC,QAAQ,EAAE,WAAW,CAAuB;IAClB,MAAM,EAAE,MAAM,CAAK;IACpC,MAAM;IAmBf,OAAgB,MAAM,0BAA6B;CACpD;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,SAAa,EACb,WAAW,EACX,MAAM,EACN,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,wCA2JA;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,iBAAiB,CAAC;KAC3C;CACF"}
|