@oicl/openbridge-webcomponents 2.0.0-next.117 → 2.0.0-next.119
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/bundle/openbridge-webcomponents.bundle.js +37 -33
- package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
- package/custom-elements.json +30 -24
- package/dist/ar/poi/poi-base.d.ts +6 -0
- package/dist/ar/poi/poi-base.d.ts.map +1 -1
- package/dist/ar/poi/poi-base.js.map +1 -1
- package/dist/ar/poi-button/poi-button.d.ts +2 -2
- package/dist/ar/poi-button/poi-button.js.map +1 -1
- package/dist/automation/vertical-line/vertical-line.d.ts +6 -0
- package/dist/automation/vertical-line/vertical-line.d.ts.map +1 -1
- package/dist/automation/vertical-line/vertical-line.js.map +1 -1
- package/dist/components/accordion-card/accordion-card.d.ts.map +1 -1
- package/dist/components/accordion-card/accordion-card.js.map +1 -1
- package/dist/components/advice-message-item/advice-message-item.d.ts +4 -2
- package/dist/components/advice-message-item/advice-message-item.d.ts.map +1 -1
- package/dist/components/advice-message-item/advice-message-item.js +4 -2
- package/dist/components/advice-message-item/advice-message-item.js.map +1 -1
- package/dist/components/app-menu/app-menu.d.ts +1 -1
- package/dist/components/app-menu/app-menu.js +1 -1
- package/dist/components/app-menu/app-menu.js.map +1 -1
- package/dist/components/brilliance-menu/brilliance-menu.d.ts +8 -4
- package/dist/components/brilliance-menu/brilliance-menu.d.ts.map +1 -1
- package/dist/components/brilliance-menu/brilliance-menu.js +8 -4
- package/dist/components/brilliance-menu/brilliance-menu.js.map +1 -1
- package/dist/components/check-button/check-button.js.map +1 -1
- package/dist/components/checkbox/checkbox.d.ts +2 -2
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/command-menu/command-menu.d.ts +1 -1
- package/dist/components/command-menu/command-menu.js +1 -1
- package/dist/components/command-menu/command-menu.js.map +1 -1
- package/dist/components/dropdown-button/dropdown-button.d.ts +2 -2
- package/dist/components/dropdown-button/dropdown-button.js +2 -2
- package/dist/components/dropdown-button/dropdown-button.js.map +1 -1
- package/dist/components/menu-button/menu-button.d.ts.map +1 -1
- package/dist/components/menu-button/menu-button.js.map +1 -1
- package/dist/components/navigation-item/navigation-item.d.ts +1 -5
- package/dist/components/navigation-item/navigation-item.d.ts.map +1 -1
- package/dist/components/navigation-item/navigation-item.js +0 -8
- package/dist/components/navigation-item/navigation-item.js.map +1 -1
- package/dist/components/navigation-item-group/navigation-item-group.d.ts +2 -1
- package/dist/components/navigation-item-group/navigation-item-group.d.ts.map +1 -1
- package/dist/components/navigation-item-group/navigation-item-group.js +2 -1
- package/dist/components/navigation-item-group/navigation-item-group.js.map +1 -1
- package/dist/components/notification-button/notification-button.d.ts +1 -1
- package/dist/components/notification-button/notification-button.js +1 -1
- package/dist/components/notification-button/notification-button.js.map +1 -1
- package/dist/components/notification-message-item/notification-message-item.d.ts +4 -2
- package/dist/components/notification-message-item/notification-message-item.d.ts.map +1 -1
- package/dist/components/notification-message-item/notification-message-item.js +4 -2
- package/dist/components/notification-message-item/notification-message-item.js.map +1 -1
- package/dist/components/pivot-item/pivot-item.d.ts +1 -1
- package/dist/components/pivot-item/pivot-item.js +1 -1
- package/dist/components/pivot-item/pivot-item.js.map +1 -1
- package/dist/components/pivot-item-group/pivot-item-group.d.ts +1 -0
- package/dist/components/pivot-item-group/pivot-item-group.d.ts.map +1 -1
- package/dist/components/pivot-item-group/pivot-item-group.js.map +1 -1
- package/dist/components/slide-button/slide-button.d.ts.map +1 -1
- package/dist/components/slide-button/slide-button.js.map +1 -1
- package/dist/components/slider/slider.d.ts +2 -2
- package/dist/components/slider/slider.js +2 -2
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/slider-double/slider-double.d.ts +2 -2
- package/dist/components/slider-double/slider-double.js +2 -2
- package/dist/components/slider-double/slider-double.js.map +1 -1
- package/dist/components/stepper-box/stepper-box.d.ts +4 -2
- package/dist/components/stepper-box/stepper-box.d.ts.map +1 -1
- package/dist/components/stepper-box/stepper-box.js +4 -2
- package/dist/components/stepper-box/stepper-box.js.map +1 -1
- package/dist/components/system-button/system-button.d.ts +1 -1
- package/dist/components/system-button/system-button.js +1 -1
- package/dist/components/system-button/system-button.js.map +1 -1
- package/dist/components/tabbed-card/tabbed-card.d.ts.map +1 -1
- package/dist/components/tabbed-card/tabbed-card.js.map +1 -1
- package/dist/components/toggle-button-option/toggle-button-option.d.ts +2 -1
- package/dist/components/toggle-button-option/toggle-button-option.d.ts.map +1 -1
- package/dist/components/toggle-button-option/toggle-button-option.js +2 -1
- package/dist/components/toggle-button-option/toggle-button-option.js.map +1 -1
- package/dist/components/toggle-button-vertical-group/toggle-button-vertical-group.js.map +1 -1
- package/dist/components/toggle-switch/toggle-switch.d.ts +1 -1
- package/dist/components/toggle-switch/toggle-switch.js +1 -1
- package/dist/components/toggle-switch/toggle-switch.js.map +1 -1
- package/dist/components/top-bar/top-bar.d.ts.map +1 -1
- package/dist/components/top-bar/top-bar.js.map +1 -1
- package/dist/components/topbar-message-item/topbar-message-item.js.map +1 -1
- package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.d.ts +1 -1
- package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.js +1 -1
- package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.js.map +1 -1
- package/package.json +3 -1
package/custom-elements.json
CHANGED
|
@@ -3279,7 +3279,7 @@
|
|
|
3279
3279
|
"declarations": [
|
|
3280
3280
|
{
|
|
3281
3281
|
"kind": "class",
|
|
3282
|
-
"description": "`<obc-poi-button>` - Marker button component that renders an icon target with optional header and data rows.\n\n## Overview\nUse this component when you need a button-style marker that can show stateful framing and optional metric rows.\nKeywords/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`, `level-critical`, `level-high`, `level-medium`, `level-low`, `level-diagnostic`.\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\nThis component
|
|
3282
|
+
"description": "`<obc-poi-button>` - Marker button component that renders an icon target with optional header and data rows.\n\n## Overview\nUse this component when you need a button-style marker that can show stateful framing and optional metric rows.\nKeywords/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`, `level-critical`, `level-high`, `level-medium`, `level-low`, `level-diagnostic`.\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\nThis component emits no custom events. A standard `click` bubbles from the\ninternal `<button>` (`onClick` in the framework wrappers).\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```",
|
|
3283
3283
|
"name": "ObcPoiButton",
|
|
3284
3284
|
"slots": [
|
|
3285
3285
|
{
|
|
@@ -32302,7 +32302,7 @@
|
|
|
32302
32302
|
"declarations": [
|
|
32303
32303
|
{
|
|
32304
32304
|
"kind": "class",
|
|
32305
|
-
"description": "",
|
|
32305
|
+
"description": "Vertical line component\n\nThe vertical line is 24px * length + 1px. +1 px to make sure that connecting lines are overlapping, to hide the gap between them.",
|
|
32306
32306
|
"name": "ObcVerticalLine",
|
|
32307
32307
|
"members": [
|
|
32308
32308
|
{
|
|
@@ -32359,6 +32359,7 @@
|
|
|
32359
32359
|
"name": "LitElement",
|
|
32360
32360
|
"package": "lit"
|
|
32361
32361
|
},
|
|
32362
|
+
"deprecated": "true",
|
|
32362
32363
|
"tagName": "obc-vertical-line",
|
|
32363
32364
|
"customElement": true
|
|
32364
32365
|
}
|
|
@@ -41915,12 +41916,14 @@
|
|
|
41915
41916
|
{
|
|
41916
41917
|
"kind": "method",
|
|
41917
41918
|
"name": "handleMessageClick",
|
|
41918
|
-
"privacy": "private"
|
|
41919
|
+
"privacy": "private",
|
|
41920
|
+
"description": "Fired when the main message area is clicked."
|
|
41919
41921
|
},
|
|
41920
41922
|
{
|
|
41921
41923
|
"kind": "method",
|
|
41922
41924
|
"name": "handleActionClick",
|
|
41923
|
-
"privacy": "private"
|
|
41925
|
+
"privacy": "private",
|
|
41926
|
+
"description": "Fired when the action button (text or icon) is clicked."
|
|
41924
41927
|
}
|
|
41925
41928
|
],
|
|
41926
41929
|
"events": [
|
|
@@ -45375,7 +45378,8 @@
|
|
|
45375
45378
|
"text": "CustomEvent"
|
|
45376
45379
|
}
|
|
45377
45380
|
}
|
|
45378
|
-
]
|
|
45381
|
+
],
|
|
45382
|
+
"description": "Handles palette selection changes and emits `palette-changed`."
|
|
45379
45383
|
},
|
|
45380
45384
|
{
|
|
45381
45385
|
"kind": "method",
|
|
@@ -45387,7 +45391,8 @@
|
|
|
45387
45391
|
"text": "CustomEvent"
|
|
45388
45392
|
}
|
|
45389
45393
|
}
|
|
45390
|
-
]
|
|
45394
|
+
],
|
|
45395
|
+
"description": "Handles brightness slider changes and emits `brightness-changed`."
|
|
45391
45396
|
},
|
|
45392
45397
|
{
|
|
45393
45398
|
"kind": "method",
|
|
@@ -45421,7 +45426,8 @@
|
|
|
45421
45426
|
"text": "CustomEvent"
|
|
45422
45427
|
}
|
|
45423
45428
|
}
|
|
45424
|
-
]
|
|
45429
|
+
],
|
|
45430
|
+
"description": "Handles link palette changes and emits `link-palette-changed`."
|
|
45425
45431
|
},
|
|
45426
45432
|
{
|
|
45427
45433
|
"kind": "method",
|
|
@@ -45433,7 +45439,8 @@
|
|
|
45433
45439
|
"text": "CustomEvent"
|
|
45434
45440
|
}
|
|
45435
45441
|
}
|
|
45436
|
-
]
|
|
45442
|
+
],
|
|
45443
|
+
"description": "Handles link brightness changes and emits `link-brightness-changed`."
|
|
45437
45444
|
},
|
|
45438
45445
|
{
|
|
45439
45446
|
"kind": "field",
|
|
@@ -47360,14 +47367,14 @@
|
|
|
47360
47367
|
"type": {
|
|
47361
47368
|
"text": "ObcCheckboxChangeEvent"
|
|
47362
47369
|
},
|
|
47363
|
-
"description": "
|
|
47370
|
+
"description": "Emitted when the disabled state changes."
|
|
47364
47371
|
},
|
|
47365
47372
|
{
|
|
47366
47373
|
"name": "change",
|
|
47367
47374
|
"type": {
|
|
47368
47375
|
"text": "ObcCheckboxChangeEvent"
|
|
47369
47376
|
},
|
|
47370
|
-
"description": "
|
|
47377
|
+
"description": "Emitted when the status changes."
|
|
47371
47378
|
}
|
|
47372
47379
|
],
|
|
47373
47380
|
"attributes": [
|
|
@@ -54097,7 +54104,8 @@
|
|
|
54097
54104
|
},
|
|
54098
54105
|
{
|
|
54099
54106
|
"kind": "method",
|
|
54100
|
-
"name": "open"
|
|
54107
|
+
"name": "open",
|
|
54108
|
+
"description": "Opens the flyout panel and emits the `open` event."
|
|
54101
54109
|
},
|
|
54102
54110
|
{
|
|
54103
54111
|
"kind": "method",
|
|
@@ -54403,10 +54411,6 @@
|
|
|
54403
54411
|
},
|
|
54404
54412
|
"privacy": "private"
|
|
54405
54413
|
},
|
|
54406
|
-
{
|
|
54407
|
-
"kind": "method",
|
|
54408
|
-
"name": "onClick"
|
|
54409
|
-
},
|
|
54410
54414
|
{
|
|
54411
54415
|
"kind": "method",
|
|
54412
54416
|
"name": "handleKeydown",
|
|
@@ -54462,10 +54466,7 @@
|
|
|
54462
54466
|
],
|
|
54463
54467
|
"events": [
|
|
54464
54468
|
{
|
|
54465
|
-
"
|
|
54466
|
-
"text": "CustomEvent<void>"
|
|
54467
|
-
},
|
|
54468
|
-
"description": "Fired when the navigation item is clicked.",
|
|
54469
|
+
"description": "Fired when the navigation item is clicked, either as a link or as a button.",
|
|
54469
54470
|
"name": "click"
|
|
54470
54471
|
}
|
|
54471
54472
|
],
|
|
@@ -55935,12 +55936,14 @@
|
|
|
55935
55936
|
{
|
|
55936
55937
|
"kind": "method",
|
|
55937
55938
|
"name": "handleMessageClick",
|
|
55938
|
-
"privacy": "private"
|
|
55939
|
+
"privacy": "private",
|
|
55940
|
+
"description": "Fired when the notification item is clicked (excluding the action area)."
|
|
55939
55941
|
},
|
|
55940
55942
|
{
|
|
55941
55943
|
"kind": "method",
|
|
55942
55944
|
"name": "handleActionClick",
|
|
55943
|
-
"privacy": "private"
|
|
55945
|
+
"privacy": "private",
|
|
55946
|
+
"description": "Fired when the action button or icon is clicked."
|
|
55944
55947
|
}
|
|
55945
55948
|
],
|
|
55946
55949
|
"events": [
|
|
@@ -63302,11 +63305,13 @@
|
|
|
63302
63305
|
},
|
|
63303
63306
|
{
|
|
63304
63307
|
"kind": "method",
|
|
63305
|
-
"name": "down"
|
|
63308
|
+
"name": "down",
|
|
63309
|
+
"description": "Dispatches the `down` event when the decrement button is clicked."
|
|
63306
63310
|
},
|
|
63307
63311
|
{
|
|
63308
63312
|
"kind": "method",
|
|
63309
|
-
"name": "up"
|
|
63313
|
+
"name": "up",
|
|
63314
|
+
"description": "Dispatches the `up` event when the increment button is clicked."
|
|
63310
63315
|
}
|
|
63311
63316
|
],
|
|
63312
63317
|
"events": [
|
|
@@ -68517,7 +68522,8 @@
|
|
|
68517
68522
|
"text": "Event"
|
|
68518
68523
|
}
|
|
68519
68524
|
}
|
|
68520
|
-
]
|
|
68525
|
+
],
|
|
68526
|
+
"description": "Fired when the option is clicked and not already selected."
|
|
68521
68527
|
}
|
|
68522
68528
|
],
|
|
68523
68529
|
"events": [
|
|
@@ -16,6 +16,12 @@ type VisualElementPreference = PoiDataVisualRectPreference.Group | PoiDataVisual
|
|
|
16
16
|
* layout-change dispatch, and visual-query logic so that each variant
|
|
17
17
|
* only needs to override `renderContent()` and `getVisualNodes()`.
|
|
18
18
|
*
|
|
19
|
+
* The `@fires` tag below documents the dispatch site, which lives here rather
|
|
20
|
+
* than in the variants. It is deliberately duplicated on each concrete
|
|
21
|
+
* subclass — that is where `custom-elements.json` and the framework wrappers
|
|
22
|
+
* pick the event up, since this class is not registered. Do not remove it from
|
|
23
|
+
* the subclasses. `@ignore` keeps this class out of the generated docs.
|
|
24
|
+
*
|
|
19
25
|
* @fires {CustomEvent<void>} obc-poi-data-layout-change - Fired when layout-driving properties change. Bubbles and is composed.
|
|
20
26
|
* @ignore
|
|
21
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-base.d.ts","sourceRoot":"","sources":["../../../src/ar/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,6CAA6C,CAAC;AAC9E,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+CAA+C,CAAC;AACvD,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
|
|
1
|
+
{"version":3,"file":"poi-base.d.ts","sourceRoot":"","sources":["../../../src/ar/poi/poi-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-base.js","sources":["../../../src/ar/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 '../building-blocks/poi-header/poi-header.js';\nimport {ObcPoiState, ObcPoiType, ObcPoiValue} from './poi.js';\nimport {\n ObcPoiPointerState,\n ObcPoiPointerType,\n} from '../building-blocks/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 *\n * @fires {CustomEvent<void>} obc-poi-data-layout-change - Fired when layout-driving properties change. Bubbles and is composed.\n * @ignore\n */\nexport class PoiBase extends LitElement implements Poi {\n private headerObserver?: MutationObserver;\n private _buttonOffsetX = 0;\n private _targetOffsetX = 0;\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({type: Array, 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 = 0;\n @property({type: Boolean, attribute: 'fixed-target'}) fixedTarget = false;\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: 'outside-angle'}) outsideAngle = 315;\n @property({type: Boolean, attribute: 'animate-position'})\n animatePosition = false;\n\n @property({type: Number, attribute: 'button-offset-x'})\n get buttonOffsetX(): number {\n return this._buttonOffsetX;\n }\n\n set buttonOffsetX(value: number) {\n const nextValue = Number.isFinite(value) ? value : 0;\n const oldValue = this._buttonOffsetX;\n if (oldValue === nextValue) {\n return;\n }\n\n this._buttonOffsetX = nextValue;\n this.requestUpdate('buttonOffsetX', oldValue);\n }\n\n @property({type: Number, attribute: 'target-offset-x'})\n get targetOffsetX(): number {\n return this._targetOffsetX;\n }\n\n set targetOffsetX(value: number) {\n const nextValue = Number.isFinite(value) ? value : 0;\n const oldValue = this._targetOffsetX;\n if (oldValue === nextValue) {\n return;\n }\n\n this._targetOffsetX = nextValue;\n this.requestUpdate('targetOffsetX', oldValue);\n }\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('selected') ||\n changedProperties.has('type')\n ) {\n this.updatePosition();\n this.syncInnerPoiLayout();\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('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 (Number.isFinite(this.resolvedButtonY)) {\n this.style.top = `${this.resolvedButtonY - this.resolvedTargetY}px`;\n } else {\n this.style.removeProperty('top');\n }\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 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 private getInnerPoi() {\n return this.shadowRoot?.querySelector('obc-poi') as {\n requestUpdate?: () => void;\n refreshProjectionLayout?: (trackDurationMs?: number) => void;\n buttonOffsetX?: number;\n targetOffsetX?: number;\n } | null;\n }\n\n private syncInnerPoiLayout() {\n const poi = this.getInnerPoi();\n\n if (poi) {\n poi.buttonOffsetX = this._buttonOffsetX;\n poi.targetOffsetX = this._targetOffsetX;\n }\n poi?.requestUpdate?.();\n poi?.refreshProjectionLayout?.();\n }\n\n public refreshProjectionLayout(trackDurationMs = 0) {\n const poi = this.getInnerPoi();\n poi?.refreshProjectionLayout?.(trackDurationMs);\n this.dispatchLayoutChange();\n }\n\n public setRuntimeHorizontalOffsets(\n buttonOffsetX: number,\n targetOffsetX = this._targetOffsetX\n ) {\n const nextButtonOffsetX = Number.isFinite(buttonOffsetX)\n ? buttonOffsetX\n : 0;\n const nextTargetOffsetX = Number.isFinite(targetOffsetX)\n ? targetOffsetX\n : 0;\n const oldButtonOffsetX = this._buttonOffsetX;\n const oldTargetOffsetX = this._targetOffsetX;\n const buttonOffsetChanged = this._buttonOffsetX !== nextButtonOffsetX;\n const targetOffsetChanged = this._targetOffsetX !== nextTargetOffsetX;\n\n if (!buttonOffsetChanged && !targetOffsetChanged) {\n return;\n }\n\n this._buttonOffsetX = nextButtonOffsetX;\n this._targetOffsetX = nextTargetOffsetX;\n\n const poi = this.getInnerPoi();\n\n if (!poi) {\n if (buttonOffsetChanged) {\n this.requestUpdate('buttonOffsetX', oldButtonOffsetX);\n }\n if (targetOffsetChanged) {\n this.requestUpdate('targetOffsetX', oldTargetOffsetX);\n }\n return;\n }\n\n poi.buttonOffsetX = nextButtonOffsetX;\n poi.targetOffsetX = nextTargetOffsetX;\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 /** Public `y` normalized as the target Y input. */\n protected get resolvedTargetY(): number {\n return Number.isFinite(this.y) ? this.y : 0;\n }\n\n /** Public `buttonY` normalized as the button Y input. */\n protected get resolvedButtonY(): number {\n return typeof this.buttonY === 'number' && Number.isFinite(this.buttonY)\n ? this.buttonY\n : 0;\n }\n\n /** Computed effective local button Y offset. */\n protected get effectiveLocalButtonY(): number {\n return this.resolvedButtonY - this.selectedVerticalOffset;\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 .type=${this.resolvedPoiType}\n .value=${this.value}\n .state=${this.resolvedPoiState}\n .x=${0}\n .y=${this.resolvedTargetY}\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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"}
|
|
1
|
+
{"version":3,"file":"poi-base.js","sources":["../../../src/ar/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 '../building-blocks/poi-header/poi-header.js';\nimport {ObcPoiState, ObcPoiType, ObcPoiValue} from './poi.js';\nimport {\n ObcPoiPointerState,\n ObcPoiPointerType,\n} from '../building-blocks/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 *\n * The `@fires` tag below documents the dispatch site, which lives here rather\n * than in the variants. It is deliberately duplicated on each concrete\n * subclass — that is where `custom-elements.json` and the framework wrappers\n * pick the event up, since this class is not registered. Do not remove it from\n * the subclasses. `@ignore` keeps this class out of the generated docs.\n *\n * @fires {CustomEvent<void>} obc-poi-data-layout-change - Fired when layout-driving properties change. Bubbles and is composed.\n * @ignore\n */\nexport class PoiBase extends LitElement implements Poi {\n private headerObserver?: MutationObserver;\n private _buttonOffsetX = 0;\n private _targetOffsetX = 0;\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({type: Array, 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 = 0;\n @property({type: Boolean, attribute: 'fixed-target'}) fixedTarget = false;\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: 'outside-angle'}) outsideAngle = 315;\n @property({type: Boolean, attribute: 'animate-position'})\n animatePosition = false;\n\n @property({type: Number, attribute: 'button-offset-x'})\n get buttonOffsetX(): number {\n return this._buttonOffsetX;\n }\n\n set buttonOffsetX(value: number) {\n const nextValue = Number.isFinite(value) ? value : 0;\n const oldValue = this._buttonOffsetX;\n if (oldValue === nextValue) {\n return;\n }\n\n this._buttonOffsetX = nextValue;\n this.requestUpdate('buttonOffsetX', oldValue);\n }\n\n @property({type: Number, attribute: 'target-offset-x'})\n get targetOffsetX(): number {\n return this._targetOffsetX;\n }\n\n set targetOffsetX(value: number) {\n const nextValue = Number.isFinite(value) ? value : 0;\n const oldValue = this._targetOffsetX;\n if (oldValue === nextValue) {\n return;\n }\n\n this._targetOffsetX = nextValue;\n this.requestUpdate('targetOffsetX', oldValue);\n }\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('selected') ||\n changedProperties.has('type')\n ) {\n this.updatePosition();\n this.syncInnerPoiLayout();\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('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 (Number.isFinite(this.resolvedButtonY)) {\n this.style.top = `${this.resolvedButtonY - this.resolvedTargetY}px`;\n } else {\n this.style.removeProperty('top');\n }\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 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 private getInnerPoi() {\n return this.shadowRoot?.querySelector('obc-poi') as {\n requestUpdate?: () => void;\n refreshProjectionLayout?: (trackDurationMs?: number) => void;\n buttonOffsetX?: number;\n targetOffsetX?: number;\n } | null;\n }\n\n private syncInnerPoiLayout() {\n const poi = this.getInnerPoi();\n\n if (poi) {\n poi.buttonOffsetX = this._buttonOffsetX;\n poi.targetOffsetX = this._targetOffsetX;\n }\n poi?.requestUpdate?.();\n poi?.refreshProjectionLayout?.();\n }\n\n public refreshProjectionLayout(trackDurationMs = 0) {\n const poi = this.getInnerPoi();\n poi?.refreshProjectionLayout?.(trackDurationMs);\n this.dispatchLayoutChange();\n }\n\n public setRuntimeHorizontalOffsets(\n buttonOffsetX: number,\n targetOffsetX = this._targetOffsetX\n ) {\n const nextButtonOffsetX = Number.isFinite(buttonOffsetX)\n ? buttonOffsetX\n : 0;\n const nextTargetOffsetX = Number.isFinite(targetOffsetX)\n ? targetOffsetX\n : 0;\n const oldButtonOffsetX = this._buttonOffsetX;\n const oldTargetOffsetX = this._targetOffsetX;\n const buttonOffsetChanged = this._buttonOffsetX !== nextButtonOffsetX;\n const targetOffsetChanged = this._targetOffsetX !== nextTargetOffsetX;\n\n if (!buttonOffsetChanged && !targetOffsetChanged) {\n return;\n }\n\n this._buttonOffsetX = nextButtonOffsetX;\n this._targetOffsetX = nextTargetOffsetX;\n\n const poi = this.getInnerPoi();\n\n if (!poi) {\n if (buttonOffsetChanged) {\n this.requestUpdate('buttonOffsetX', oldButtonOffsetX);\n }\n if (targetOffsetChanged) {\n this.requestUpdate('targetOffsetX', oldTargetOffsetX);\n }\n return;\n }\n\n poi.buttonOffsetX = nextButtonOffsetX;\n poi.targetOffsetX = nextTargetOffsetX;\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 /** Public `y` normalized as the target Y input. */\n protected get resolvedTargetY(): number {\n return Number.isFinite(this.y) ? this.y : 0;\n }\n\n /** Public `buttonY` normalized as the button Y input. */\n protected get resolvedButtonY(): number {\n return typeof this.buttonY === 'number' && Number.isFinite(this.buttonY)\n ? this.buttonY\n : 0;\n }\n\n /** Computed effective local button Y offset. */\n protected get effectiveLocalButtonY(): number {\n return this.resolvedButtonY - this.selectedVerticalOffset;\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 .type=${this.resolvedPoiType}\n .value=${this.value}\n .state=${this.resolvedPoiState}\n .x=${0}\n .y=${this.resolvedTargetY}\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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"}
|
|
@@ -67,8 +67,8 @@ export interface ObcPoiButtonDataItem {
|
|
|
67
67
|
* - `relation`: Optional relation icon/content rendered when `hasRelation` is true in data mode.
|
|
68
68
|
*
|
|
69
69
|
* ## Events
|
|
70
|
-
* This component
|
|
71
|
-
*
|
|
70
|
+
* This component emits no custom events. A standard `click` bubbles from the
|
|
71
|
+
* internal `<button>` (`onClick` in the framework wrappers).
|
|
72
72
|
*
|
|
73
73
|
* ## Best Practices
|
|
74
74
|
* - Keep `value`, `state`, and `selected` synchronized to avoid conflicting visual states.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poi-button.js","sources":["../../../src/ar/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 '../building-blocks/poi-header/poi-header.js';\nimport {\n ObcPoiHeaderType,\n ObcPoiHeaderState,\n} from '../building-blocks/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 '../building-blocks/poi-selection-frame/poi-selection-frame.js';\nimport '../building-blocks/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 LevelCritical = 'level-critical',\n LevelHigh = 'level-high',\n LevelMedium = 'level-medium',\n LevelLow = 'level-low',\n LevelDiagnostic = 'level-diagnostic',\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`, `level-critical`, `level-high`, `level-medium`, `level-low`, `level-diagnostic`.\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 * - Emits a standard `click` event (`onClick` handler in framework wrappers) when activated.\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 * @fires click - Fired when the marker is clicked.\n * @experimental\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.LevelCritical:\n return ObcPoiHeaderState.LevelCritical;\n case ObcPoiButtonState.LevelHigh:\n return ObcPoiHeaderState.LevelHigh;\n case ObcPoiButtonState.LevelMedium:\n return ObcPoiHeaderState.LevelMedium;\n case ObcPoiButtonState.LevelLow:\n return ObcPoiHeaderState.LevelLow;\n case ObcPoiButtonState.LevelDiagnostic:\n return ObcPoiHeaderState.LevelDiagnostic;\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.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 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 >\n <span\n class=\"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 })}\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 })}\n >\n <div class=\"visible-wrapper\"></div>\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/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 '../building-blocks/poi-header/poi-header.js';\nimport {\n ObcPoiHeaderType,\n ObcPoiHeaderState,\n} from '../building-blocks/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 '../building-blocks/poi-selection-frame/poi-selection-frame.js';\nimport '../building-blocks/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 LevelCritical = 'level-critical',\n LevelHigh = 'level-high',\n LevelMedium = 'level-medium',\n LevelLow = 'level-low',\n LevelDiagnostic = 'level-diagnostic',\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`, `level-critical`, `level-high`, `level-medium`, `level-low`, `level-diagnostic`.\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 emits no custom events. A standard `click` bubbles from the\n * internal `<button>` (`onClick` in the framework wrappers).\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 * @fires click - Fired when the marker is clicked.\n * @experimental\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.LevelCritical:\n return ObcPoiHeaderState.LevelCritical;\n case ObcPoiButtonState.LevelHigh:\n return ObcPoiHeaderState.LevelHigh;\n case ObcPoiButtonState.LevelMedium:\n return ObcPoiHeaderState.LevelMedium;\n case ObcPoiButtonState.LevelLow:\n return ObcPoiHeaderState.LevelLow;\n case ObcPoiButtonState.LevelDiagnostic:\n return ObcPoiHeaderState.LevelDiagnostic;\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.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 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 >\n <span\n class=\"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 })}\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 })}\n >\n <div class=\"visible-wrapper\"></div>\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,5 +1,11 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
import { LineMedium, LineType } from '../index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vertical line component
|
|
5
|
+
*
|
|
6
|
+
* The vertical line is 24px * length + 1px. +1 px to make sure that connecting lines are overlapping, to hide the gap between them.
|
|
7
|
+
* @deprecated
|
|
8
|
+
*/
|
|
3
9
|
export declare class ObcVerticalLine extends LitElement {
|
|
4
10
|
medium: LineMedium;
|
|
5
11
|
lineType: LineType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertical-line.d.ts","sourceRoot":"","sources":["../../../src/automation/vertical-line/vertical-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAY,MAAM,KAAK,CAAC;AAE1C,OAAO,EAAC,UAAU,EAAa,QAAQ,EAAY,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"vertical-line.d.ts","sourceRoot":"","sources":["../../../src/automation/vertical-line/vertical-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAY,MAAM,KAAK,CAAC;AAE1C,OAAO,EAAC,UAAU,EAAa,QAAQ,EAAY,MAAM,aAAa,CAAC;AAGvE;;;;;GAKG;AACH,qBACa,eAAgB,SAAQ,UAAU;IACnB,MAAM,EAAE,UAAU,CAAqB;IACvC,QAAQ,EAAE,QAAQ,CAAkB;IACpC,MAAM,EAAE,MAAM,CAAK;IAEpC,MAAM;IAgEf,OAAgB,MAAM,0BAWpB;CACH;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertical-line.js","sources":["../../../src/automation/vertical-line/vertical-line.ts"],"sourcesContent":["import {LitElement, html, css} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {LineMedium, lineColor, LineType, lineWidth} from '../index.js';\nimport {customElement} from '../../decorator.js';\n\n
|
|
1
|
+
{"version":3,"file":"vertical-line.js","sources":["../../../src/automation/vertical-line/vertical-line.ts"],"sourcesContent":["import {LitElement, html, css} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {LineMedium, lineColor, LineType, lineWidth} from '../index.js';\nimport {customElement} from '../../decorator.js';\n\n/**\n * Vertical line component\n *\n * The vertical line is 24px * length + 1px. +1 px to make sure that connecting lines are overlapping, to hide the gap between them.\n * @deprecated\n */\n@customElement('obc-vertical-line')\nexport class ObcVerticalLine extends LitElement {\n @property({type: String}) medium: LineMedium = LineMedium.normal;\n @property({type: String}) lineType: LineType = LineType.fluid;\n @property({type: Number}) length: number = 1;\n\n override render() {\n if (this.lineType === LineType.connector) {\n const length = this.length * 24;\n return html`<svg\n width=\"24\"\n height=\"${length}\"\n viewBox=\"0 0 24 ${length}\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <line\n y1=\"0\"\n x1=\"12\"\n y2=\"${length}\"\n x2=\"12\"\n stroke-width=\"1\"\n stroke=\"var(--element-neutral-color)\"\n stroke-dasharray=\"4,2\"\n stroke-dashoffset=\"2\"\n />\n </svg> `;\n }\n\n const length = this.length * 24 + 1;\n const color = lineColor(this.medium);\n const width = lineWidth(this.lineType);\n return html`\n <div class=\"wrapper\" style=\"width: 24px; height: ${this.length * 24}px;\">\n <svg\n class=\"line\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 -.5 24 ${length}\"\n width=\"24\"\n height=${length}\n >\n <line\n y1=\"-.5\"\n x1=\"12\"\n y2=\"${length - 0.5}\"\n x2=\"12\"\n stroke-width=${width}\n stroke=\"var(${color.inner})\"\n />\n <line\n y1=\"-.5\"\n x1=${12 - 0.5 - width / 2}\n y2=\"${length - 0.5}\"\n x2=${12 - 0.5 - width / 2}\n stroke-width=\"1\"\n stroke=\"var(${color.outer})\"\n />\n <line\n y1=\"-.5\"\n x1=${12 + 0.5 + width / 2}\n y2=\"${length - 0.5}\"\n x2=${12 + 0.5 + width / 2}\n stroke-width=\"1\"\n stroke=\"var(${color.outer})\"\n />\n </svg>\n </div>\n `;\n }\n\n static override styles = css`\n :host {\n display: block;\n line-height: 0;\n }\n\n svg {\n position: relative;\n top: -0.5px;\n left: -12px;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-vertical-line': ObcVerticalLine;\n }\n}\n"],"names":["length"],"mappings":";;;;;;;;;;;;;;AAYO,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA;AACqB,SAAA,SAAqB,WAAW;AAChC,SAAA,WAAqB,SAAS;AAC9B,SAAA,SAAiB;AAAA,EAAA;AAAA,EAElC,SAAS;AAChB,QAAI,KAAK,aAAa,SAAS,WAAW;AACxC,YAAMA,UAAS,KAAK,SAAS;AAC7B,aAAO;AAAA;AAAA,kBAEKA,OAAM;AAAA,0BACEA,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAOhBA,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQlB;AAEA,UAAM,SAAS,KAAK,SAAS,KAAK;AAClC,UAAM,QAAQ,UAAU,KAAK,MAAM;AACnC,UAAM,QAAQ,UAAU,KAAK,QAAQ;AACrC,WAAO;AAAA,yDAC8C,KAAK,SAAS,EAAE;AAAA;AAAA;AAAA;AAAA,+BAI1C,MAAM;AAAA;AAAA,mBAElB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKP,SAAS,GAAG;AAAA;AAAA,2BAEH,KAAK;AAAA,0BACN,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,iBAIpB,KAAK,MAAM,QAAQ,CAAC;AAAA,kBACnB,SAAS,GAAG;AAAA,iBACb,KAAK,MAAM,QAAQ,CAAC;AAAA;AAAA,0BAEX,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,iBAIpB,KAAK,MAAM,QAAQ,CAAC;AAAA,kBACnB,SAAS,GAAG;AAAA,iBACb,KAAK,MAAM,QAAQ,CAAC;AAAA;AAAA,0BAEX,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,EAKnC;AAcF;AAjFa,gBAqEK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AApEC,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GADb,gBACe,WAAA,UAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAFb,gBAEe,WAAA,YAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAHb,gBAGe,WAAA,UAAA,CAAA;AAHf,kBAAN,gBAAA;AAAA,EADN,cAAc,mBAAmB;AAAA,GACrB,eAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion-card.d.ts","sourceRoot":"","sources":["../../../src/components/accordion-card/accordion-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,yCAAyC,CAAC;AACjD,OAAO,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,oBAAY,aAAa;IACvB,UAAU,gBAAgB;IAC1B,KAAK,UAAU;CAChB;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACuB,SAAS,SAAM;IAEzC;;;OAGG;IACuB,WAAW,SAAM;IAE3C;;;OAGG;IACuB,WAAW,SAAM;IAE3C;;OAEG;IACwB,QAAQ,UAAS;IAE5C;;OAEG;IACwB,QAAQ,UAAS;IAE5C;;OAEG;IACwB,QAAQ,UAAS;IAE5C;;OAEG;IACwB,cAAc,UAAS;IAElD;;OAEG;IACwB,cAAc,UAAS;IAElD;;OAEG;IACwB,cAAc,UAAS;IAElD;;;;;;OAMG;IACuB,QAAQ,EAAE,QAAQ,CAAoB;IAEhE;;;;OAIG;IACuB,IAAI,EAAE,aAAa,CAA4B;IAEzE;;;;OAIG;IACuB,cAAc,EAAE,iBAAiB,CAC/B;IAE5B;;;;OAIG;IACuB,mBAAmB,EAAE,sBAAsB,CACtC;IAE/B;;;;OAIG;IACuB,gBAAgB,EAAE,SAAS,CAAmB;IAExE,OAAO,KAAK,qBAAqB,GAMhC;IAED,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"accordion-card.d.ts","sourceRoot":"","sources":["../../../src/components/accordion-card/accordion-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAkB,MAAM,KAAK,CAAC;AAKhD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,yCAAyC,CAAC;AACjD,OAAO,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,oBAAY,aAAa;IACvB,UAAU,gBAAgB;IAC1B,KAAK,UAAU;CAChB;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IACuB,SAAS,SAAM;IAEzC;;;OAGG;IACuB,WAAW,SAAM;IAE3C;;;OAGG;IACuB,WAAW,SAAM;IAE3C;;OAEG;IACwB,QAAQ,UAAS;IAE5C;;OAEG;IACwB,QAAQ,UAAS;IAE5C;;OAEG;IACwB,QAAQ,UAAS;IAE5C;;OAEG;IACwB,cAAc,UAAS;IAElD;;OAEG;IACwB,cAAc,UAAS;IAElD;;OAEG;IACwB,cAAc,UAAS;IAElD;;;;;;OAMG;IACuB,QAAQ,EAAE,QAAQ,CAAoB;IAEhE;;;;OAIG;IACuB,IAAI,EAAE,aAAa,CAA4B;IAEzE;;;;OAIG;IACuB,cAAc,EAAE,iBAAiB,CAC/B;IAE5B;;;;OAIG;IACuB,mBAAmB,EAAE,sBAAsB,CACtC;IAE/B;;;;OAIG;IACuB,gBAAgB,EAAE,SAAS,CAAmB;IAExE,OAAO,KAAK,qBAAqB,GAMhC;IAED,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,iBAAiB;IAGzB,OAAO,CAAC,cAAc;IAMb,MAAM;IAoDf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
|