@oicl/openbridge-webcomponents 2.0.0-next.170 → 2.0.0-next.171
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 +870 -441
- package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
- package/custom-elements.json +1333 -392
- package/dist/ar/poi/poi-aton.d.ts +1 -0
- package/dist/ar/poi/poi-aton.d.ts.map +1 -1
- package/dist/ar/poi/poi-aton.js +1 -0
- package/dist/ar/poi/poi-aton.js.map +1 -1
- package/dist/ar/poi/poi-base.d.ts +39 -5
- package/dist/ar/poi/poi-base.d.ts.map +1 -1
- package/dist/ar/poi/poi-base.js +108 -37
- package/dist/ar/poi/poi-base.js.map +1 -1
- package/dist/ar/poi/poi-data.d.ts +1 -0
- package/dist/ar/poi/poi-data.d.ts.map +1 -1
- package/dist/ar/poi/poi-data.js +1 -0
- package/dist/ar/poi/poi-data.js.map +1 -1
- package/dist/ar/poi/poi-vessel.d.ts +1 -0
- package/dist/ar/poi/poi-vessel.d.ts.map +1 -1
- package/dist/ar/poi/poi-vessel.js +1 -0
- package/dist/ar/poi/poi-vessel.js.map +1 -1
- package/dist/ar/poi/poi.d.ts +4 -12
- package/dist/ar/poi/poi.d.ts.map +1 -1
- package/dist/ar/poi/poi.js +6 -72
- package/dist/ar/poi/poi.js.map +1 -1
- package/dist/ar/poi-button/poi-button.d.ts +6 -2
- package/dist/ar/poi-button/poi-button.d.ts.map +1 -1
- package/dist/ar/poi-button/poi-button.js +10 -1
- package/dist/ar/poi-button/poi-button.js.map +1 -1
- package/dist/ar/poi-card/poi-card.d.ts +12 -1
- package/dist/ar/poi-card/poi-card.d.ts.map +1 -1
- package/dist/ar/poi-card/poi-card.js +4 -1
- package/dist/ar/poi-card/poi-card.js.map +1 -1
- package/dist/ar/poi-controller/poi-controller.d.ts +45 -1
- package/dist/ar/poi-controller/poi-controller.d.ts.map +1 -1
- package/dist/ar/poi-controller/poi-controller.js +72 -14
- package/dist/ar/poi-controller/poi-controller.js.map +1 -1
- package/dist/ar/poi-group/poi-group.d.ts +28 -5
- package/dist/ar/poi-group/poi-group.d.ts.map +1 -1
- package/dist/ar/poi-group/poi-group.js +50 -7
- package/dist/ar/poi-group/poi-group.js.map +1 -1
- package/dist/ar/poi-layer/poi-layer.css.js +69 -18
- package/dist/ar/poi-layer/poi-layer.css.js.map +1 -1
- package/dist/ar/poi-layer/poi-layer.d.ts +64 -5
- package/dist/ar/poi-layer/poi-layer.d.ts.map +1 -1
- package/dist/ar/poi-layer/poi-layer.js +173 -39
- package/dist/ar/poi-layer/poi-layer.js.map +1 -1
- package/dist/ar/poi-layer-stack/poi-layer-stack.d.ts +82 -7
- package/dist/ar/poi-layer-stack/poi-layer-stack.d.ts.map +1 -1
- package/dist/ar/poi-layer-stack/poi-layer-stack.js +172 -100
- package/dist/ar/poi-layer-stack/poi-layer-stack.js.map +1 -1
- package/dist/ar/poi-projection/poi-projection.d.ts +88 -0
- package/dist/ar/poi-projection/poi-projection.d.ts.map +1 -0
- package/dist/ar/poi-projection/poi-projection.js +90 -0
- package/dist/ar/poi-projection/poi-projection.js.map +1 -0
- package/package.json +2 -2
package/custom-elements.json
CHANGED
|
@@ -1548,6 +1548,7 @@
|
|
|
1548
1548
|
"text": "boolean"
|
|
1549
1549
|
},
|
|
1550
1550
|
"default": "false",
|
|
1551
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
1551
1552
|
"attribute": "inExpandedGroup",
|
|
1552
1553
|
"inheritedFrom": {
|
|
1553
1554
|
"name": "ObcPoiButton",
|
|
@@ -1604,6 +1605,15 @@
|
|
|
1604
1605
|
"module": "src/ar/poi-button/poi-button.ts"
|
|
1605
1606
|
}
|
|
1606
1607
|
},
|
|
1608
|
+
{
|
|
1609
|
+
"kind": "field",
|
|
1610
|
+
"name": "handleLightSlotChange",
|
|
1611
|
+
"privacy": "private",
|
|
1612
|
+
"inheritedFrom": {
|
|
1613
|
+
"name": "ObcPoiButton",
|
|
1614
|
+
"module": "src/ar/poi-button/poi-button.ts"
|
|
1615
|
+
}
|
|
1616
|
+
},
|
|
1607
1617
|
{
|
|
1608
1618
|
"kind": "method",
|
|
1609
1619
|
"name": "setupHeaderContentObserver",
|
|
@@ -1911,6 +1921,7 @@
|
|
|
1911
1921
|
"text": "boolean"
|
|
1912
1922
|
},
|
|
1913
1923
|
"default": "false",
|
|
1924
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
1914
1925
|
"fieldName": "inExpandedGroup",
|
|
1915
1926
|
"inheritedFrom": {
|
|
1916
1927
|
"name": "ObcPoiButton",
|
|
@@ -2188,6 +2199,7 @@
|
|
|
2188
2199
|
"text": "boolean"
|
|
2189
2200
|
},
|
|
2190
2201
|
"default": "false",
|
|
2202
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
2191
2203
|
"attribute": "inExpandedGroup",
|
|
2192
2204
|
"inheritedFrom": {
|
|
2193
2205
|
"name": "ObcPoiButton",
|
|
@@ -2244,6 +2256,15 @@
|
|
|
2244
2256
|
"module": "src/ar/poi-button/poi-button.ts"
|
|
2245
2257
|
}
|
|
2246
2258
|
},
|
|
2259
|
+
{
|
|
2260
|
+
"kind": "field",
|
|
2261
|
+
"name": "handleLightSlotChange",
|
|
2262
|
+
"privacy": "private",
|
|
2263
|
+
"inheritedFrom": {
|
|
2264
|
+
"name": "ObcPoiButton",
|
|
2265
|
+
"module": "src/ar/poi-button/poi-button.ts"
|
|
2266
|
+
}
|
|
2267
|
+
},
|
|
2247
2268
|
{
|
|
2248
2269
|
"kind": "method",
|
|
2249
2270
|
"name": "setupHeaderContentObserver",
|
|
@@ -2544,6 +2565,7 @@
|
|
|
2544
2565
|
"text": "boolean"
|
|
2545
2566
|
},
|
|
2546
2567
|
"default": "false",
|
|
2568
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
2547
2569
|
"fieldName": "inExpandedGroup",
|
|
2548
2570
|
"inheritedFrom": {
|
|
2549
2571
|
"name": "ObcPoiButton",
|
|
@@ -2838,6 +2860,7 @@
|
|
|
2838
2860
|
"text": "boolean"
|
|
2839
2861
|
},
|
|
2840
2862
|
"default": "false",
|
|
2863
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
2841
2864
|
"attribute": "inExpandedGroup",
|
|
2842
2865
|
"inheritedFrom": {
|
|
2843
2866
|
"name": "ObcPoiButton",
|
|
@@ -2894,6 +2917,15 @@
|
|
|
2894
2917
|
"module": "src/ar/poi-button/poi-button.ts"
|
|
2895
2918
|
}
|
|
2896
2919
|
},
|
|
2920
|
+
{
|
|
2921
|
+
"kind": "field",
|
|
2922
|
+
"name": "handleLightSlotChange",
|
|
2923
|
+
"privacy": "private",
|
|
2924
|
+
"inheritedFrom": {
|
|
2925
|
+
"name": "ObcPoiButton",
|
|
2926
|
+
"module": "src/ar/poi-button/poi-button.ts"
|
|
2927
|
+
}
|
|
2928
|
+
},
|
|
2897
2929
|
{
|
|
2898
2930
|
"kind": "method",
|
|
2899
2931
|
"name": "setupHeaderContentObserver",
|
|
@@ -3201,6 +3233,7 @@
|
|
|
3201
3233
|
"text": "boolean"
|
|
3202
3234
|
},
|
|
3203
3235
|
"default": "false",
|
|
3236
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
3204
3237
|
"fieldName": "inExpandedGroup",
|
|
3205
3238
|
"inheritedFrom": {
|
|
3206
3239
|
"name": "ObcPoiButton",
|
|
@@ -3299,7 +3332,7 @@
|
|
|
3299
3332
|
"declarations": [
|
|
3300
3333
|
{
|
|
3301
3334
|
"kind": "class",
|
|
3302
|
-
"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`):
|
|
3335
|
+
"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`): expanded-group presentation state, applied by the owning group composition during expand/collapse orchestration; consumers should not set it directly.\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```",
|
|
3303
3336
|
"name": "ObcPoiButton",
|
|
3304
3337
|
"slots": [
|
|
3305
3338
|
{
|
|
@@ -3388,6 +3421,7 @@
|
|
|
3388
3421
|
"text": "boolean"
|
|
3389
3422
|
},
|
|
3390
3423
|
"default": "false",
|
|
3424
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
3391
3425
|
"attribute": "inExpandedGroup"
|
|
3392
3426
|
},
|
|
3393
3427
|
{
|
|
@@ -3424,6 +3458,11 @@
|
|
|
3424
3458
|
},
|
|
3425
3459
|
"privacy": "private"
|
|
3426
3460
|
},
|
|
3461
|
+
{
|
|
3462
|
+
"kind": "field",
|
|
3463
|
+
"name": "handleLightSlotChange",
|
|
3464
|
+
"privacy": "private"
|
|
3465
|
+
},
|
|
3427
3466
|
{
|
|
3428
3467
|
"kind": "method",
|
|
3429
3468
|
"name": "setupHeaderContentObserver",
|
|
@@ -3615,6 +3654,7 @@
|
|
|
3615
3654
|
"text": "boolean"
|
|
3616
3655
|
},
|
|
3617
3656
|
"default": "false",
|
|
3657
|
+
"description": "Expanded-group presentation state, applied by the owning group composition while the button is shown inside an expanded `obc-poi-group` and during its collapse animations. Consumers should not set it directly.",
|
|
3618
3658
|
"fieldName": "inExpandedGroup"
|
|
3619
3659
|
},
|
|
3620
3660
|
{
|
|
@@ -3950,8 +3990,26 @@
|
|
|
3950
3990
|
"declarations": [
|
|
3951
3991
|
{
|
|
3952
3992
|
"kind": "class",
|
|
3953
|
-
"description": "`<obc-poi-card>` - Content card container with optional pointer arrow, header variants, and interactive click handling.\n\n## Overview\nUse this component to wrap contextual marker details in a card with optional directional anchoring.\nKeywords/synonyms: detail card, marker card, anchored card, popover card.\n\n## Features/Variants\n- `pointerDirection` (default `none`): `none`, `top`, `bottom`, `left`, `right`.\n- `fixedSize` (default `false`): toggles fixed `256x256` sizing instead of content-based sizing.\n- Header options:\n - `showHeader` controls whether the header area is visible.\n - `headerVariant` controls header layout (`tag`, `condensed`, `regular`, `detailed`).\n - `index`, `cardTitle`, `description`, `source`, `timestamp` are forwarded to `obc-poi-card-header`.\n - `hasLeadingIcon` and `hasCloseButton` gate header affordances.\n- `interactive` (default `false`): enables keyboard activation and `card-click` dispatch.\n- `hasAlert` (default `false`): shows alert ring layer when `interactive` is enabled.\n\n## Usage Guidelines\n- Use `pointerDirection` when the card should visually point to an anchor target.\n- Keep `interactive` off for read-only cards.\n- Use the header slots only when the selected `headerVariant` renders them.\n\n## Slots/Content\n- Default slot: Main card body content.\n- `leading-icon`: Optional icon used by the regular header variant.\n- `poi-icon`: Optional icon used by the detailed header variant.\n\n## Events\n- `card-click`: Fired when the card surface is activated in interactive mode.\n\n## Best Practices\n- Keep `index` stable so event payloads remain predictable.\n- Pair `hasAlert` with meaningful alert state in surrounding UI logic.\n\n## Example\n```html\n<obc-poi-card pointerDirection=\"bottom\" index=\"1\" cardTitle=\"Target\" interactive>\n <obi-placeholder slot=\"leading-icon\"></obi-placeholder>\n <div>Custom card content</div>\n</obc-poi-card>\n```",
|
|
3993
|
+
"description": "`<obc-poi-card>` - Content card container with optional pointer arrow, header variants, and interactive click handling.\n\n## Overview\nUse this component to wrap contextual marker details in a card with optional directional anchoring.\nKeywords/synonyms: detail card, marker card, anchored card, popover card.\n\n## Features/Variants\n- `pointerDirection` (default `none`): `none`, `top`, `bottom`, `left`, `right`.\n- `fixedSize` (default `false`): toggles fixed `256x256` sizing instead of content-based sizing.\n- Header options:\n - `showHeader` controls whether the header area is visible.\n - `headerVariant` controls header layout (`tag`, `condensed`, `regular`, `detailed`).\n - `index`, `cardTitle`, `description`, `source`, `timestamp` are forwarded to `obc-poi-card-header`.\n - `hasLeadingIcon` and `hasCloseButton` gate header affordances.\n- `interactive` (default `false`): enables keyboard activation and `card-click` dispatch.\n- `hasAlert` (default `false`): shows alert ring layer when `interactive` is enabled.\n\n## Usage Guidelines\n- Use `pointerDirection` when the card should visually point to an anchor target.\n- Keep `interactive` off for read-only cards.\n- Use the header slots only when the selected `headerVariant` renders them.\n\n## Slots/Content\n- Default slot: Main card body content.\n- `leading-icon`: Optional icon used by the regular header variant.\n- `poi-icon`: Optional icon used by the detailed header variant.\n\n## Events\n- `card-click`: Fired when the card surface is activated in interactive mode.\n- `close-click`: Fired when the header close button is pressed (`hasCloseButton` with the detailed header variant).\n\n## CSS Parts\n- `wrapper`: Outer layout wrapper holding the pointer arrows and the card surface.\n- `content-box`: Card surface with background, border, and rounded corners.\n- `header`: The `obc-poi-card-header` element, rendered when `showHeader` is true.\n- `content`: Body area wrapping the default slot.\n\n## Best Practices\n- Keep `index` stable so event payloads remain predictable.\n- Pair `hasAlert` with meaningful alert state in surrounding UI logic.\n\n## Example\n```html\n<obc-poi-card pointerDirection=\"bottom\" index=\"1\" cardTitle=\"Target\" interactive>\n <obi-placeholder slot=\"leading-icon\"></obi-placeholder>\n <div>Custom card content</div>\n</obc-poi-card>\n```",
|
|
3954
3994
|
"name": "ObcPoiCard",
|
|
3995
|
+
"cssParts": [
|
|
3996
|
+
{
|
|
3997
|
+
"description": "Outer layout wrapper holding the pointer arrows and the card surface.",
|
|
3998
|
+
"name": "wrapper"
|
|
3999
|
+
},
|
|
4000
|
+
{
|
|
4001
|
+
"description": "Card surface with background, border, and rounded corners.",
|
|
4002
|
+
"name": "content-box"
|
|
4003
|
+
},
|
|
4004
|
+
{
|
|
4005
|
+
"description": "The `obc-poi-card-header` element, rendered when `showHeader` is true.",
|
|
4006
|
+
"name": "header"
|
|
4007
|
+
},
|
|
4008
|
+
{
|
|
4009
|
+
"description": "Body area wrapping the default slot.",
|
|
4010
|
+
"name": "content"
|
|
4011
|
+
}
|
|
4012
|
+
],
|
|
3955
4013
|
"slots": [
|
|
3956
4014
|
{
|
|
3957
4015
|
"description": "Main card body content.",
|
|
@@ -4194,7 +4252,7 @@
|
|
|
4194
4252
|
"type": {
|
|
4195
4253
|
"text": "CustomEvent<void>"
|
|
4196
4254
|
},
|
|
4197
|
-
"description": "Passed on from the header when its close button is pressed (`hasCloseButton`).",
|
|
4255
|
+
"description": "Passed on from the header when its close button is pressed (`hasCloseButton` with the detailed header variant).",
|
|
4198
4256
|
"name": "close-click"
|
|
4199
4257
|
}
|
|
4200
4258
|
],
|
|
@@ -4345,7 +4403,7 @@
|
|
|
4345
4403
|
"declarations": [
|
|
4346
4404
|
{
|
|
4347
4405
|
"kind": "class",
|
|
4348
|
-
"description": "`<obc-poi-controller>` — Maps detection data onto POI markers over a video or image.\n\nTakes detection coordinates in media pixel space (e.g. x,y in a 1920x1080 frame),\nprojects them to screen space using the media's rendered size and fit mode, and\ncreates/updates `obc-poi-data`
|
|
4406
|
+
"description": "`<obc-poi-controller>` — Maps detection data onto POI markers over a video or image.\n\nTakes detection coordinates in media pixel space (e.g. x,y in a 1920x1080 frame),\nprojects them to screen space using the media's rendered size and fit mode, and\ncreates/updates POI targets inside a layer stack (`obc-poi-data` by default;\n`obc-poi-vessel`/`obc-poi-aton` via each detection's `variant`, with optional\nper-detection `icon`, `state`, and `data`).\n\n## Quick Start\n\nThe media slot accepts a `<video>` (live stream, HLS, file) or `<img>` element.\n\n```html\n<obc-poi-controller fit=\"cover\">\n <video slot=\"media\" src=\"stream.mp4\" autoplay muted></video>\n <obc-poi-layer-stack slot=\"stack\" selection-mode=\"multi\">\n <obc-poi-layer is-selected></obc-poi-layer>\n <obc-poi-layer data-controller-layer=\"background\"></obc-poi-layer>\n </obc-poi-layer-stack>\n</obc-poi-controller>\n```\n\nThen set detections from your data source (WebSocket, API, etc.):\n\n```js\nconst controller = document.querySelector('obc-poi-controller');\ncontroller.detections = [\n { id: 'track-1', x: 400, y: 800, box_width: 50, box_height: 40, heading: -15 },\n { id: 'track-2', x: 900, y: 750, box_width: 35, box_height: 30, heading: 45 },\n];\n```\n\n## Framework Usage\n\n**Lit:**\n```html\n<obc-poi-controller .detections=${detections} fit=\"cover\">\n```\n\n**Vue:**\n```html\n<obc-poi-controller :detections=\"detections\" fit=\"cover\">\n```\n\n**Svelte:**\n```html\n<obc-poi-controller detections={detections} fit=\"cover\">\n```\n\n**React 18** (needs ref for array props):\n```tsx\nconst ref = useRef(null);\nuseEffect(() => { ref.current.detections = detections; }, [detections]);\n<obc-poi-controller ref={ref} fit=\"cover\">\n```\n\n**React 19+** (native custom element support):\n```tsx\n<obc-poi-controller detections={detections} fit=\"cover\">\n```\n\n## Framework Notes\n\nBoth paths are safe for declarative renderers (React, Vue, Lit): the\n`detections` API creates and owns the resulting `obc-poi-data` elements,\nand manually slotted POI children are never moved, re-parented, or\nmodified structurally by the library — selection is rendered by CSS\nprojection and auto-grouping happens inside the layer's shadow root via\nslot assignment. Frameworks can manage POI children as ordinary\nframework-owned elements.\n\n## Coordinate Model\n\nDetection `x` and `y` are in **media pixel space** (e.g. 0-1920 for a 1920x1080 video).\nThe controller projects them to screen space using the `fit` mode (`contain` or `cover`)\nand the media element's rendered dimensions.\n\nThe Y coordinate maps to the line length from the layer's top edge down to the\ndetection point. The button sits at the top of the layer; the line extends downward.\n\n## Detection Data\n\nEach detection can include:\n- `x`, `y` (required) — position in media pixel space\n- `id` — stable identity key (prevents marker churn when array order changes)\n- `box_width`, `box_height` — bounding box size; determines button type (regular vs enhanced)\n- `heading` or `direction` — rotation angle for the icon arrow (degrees)\n- `confidence` — filtered by `confidenceMin`\n- `class` — filtered by `classFilter`\n\n## Layer Setup\n\nThe stack needs at least two layers:\n1. A **selected layer** (`is-selected`) — targets jump here when clicked\n2. A **background layer** (`data-controller-layer=\"background\"`) — where the controller places targets\n\nIf no `data-controller-layer=\"background\"` is set, the controller uses the first non-selected layer.\n\n## Selection\n\nClicking a target moves it to the selected layer with a FLIP animation.\nThe controller does not interfere with selected targets — it only manages\ntargets in the background layer. The layer-stack owns selection state.\n\n## CSS Custom Properties\n\n- `--obc-poi-controller-stack-top` (default `15%`) — vertical position of the stack\n- `--obc-poi-controller-stack-height` (default `50%`) — height of the stack\n- `--obc-poi-controller-stack-gap` (default `8px`) — gap between layers",
|
|
4349
4407
|
"name": "ObcPoiController",
|
|
4350
4408
|
"slots": [
|
|
4351
4409
|
{
|
|
@@ -4419,6 +4477,26 @@
|
|
|
4419
4477
|
},
|
|
4420
4478
|
"default": "null"
|
|
4421
4479
|
},
|
|
4480
|
+
{
|
|
4481
|
+
"kind": "field",
|
|
4482
|
+
"name": "xFilterCutoffHz",
|
|
4483
|
+
"type": {
|
|
4484
|
+
"text": "number | null"
|
|
4485
|
+
},
|
|
4486
|
+
"default": "null",
|
|
4487
|
+
"description": "Forwarded to every controller-owned target's `xFilterCutoffHz`; `null` leaves the targets on their default.",
|
|
4488
|
+
"attribute": "x-filter-cutoff-hz"
|
|
4489
|
+
},
|
|
4490
|
+
{
|
|
4491
|
+
"kind": "field",
|
|
4492
|
+
"name": "yFilterCutoffHz",
|
|
4493
|
+
"type": {
|
|
4494
|
+
"text": "number | null"
|
|
4495
|
+
},
|
|
4496
|
+
"default": "null",
|
|
4497
|
+
"description": "Forwarded to every controller-owned target's `yFilterCutoffHz`; `null` leaves the targets on their default.",
|
|
4498
|
+
"attribute": "y-filter-cutoff-hz"
|
|
4499
|
+
},
|
|
4422
4500
|
{
|
|
4423
4501
|
"kind": "field",
|
|
4424
4502
|
"name": "mediaWidth",
|
|
@@ -4510,7 +4588,7 @@
|
|
|
4510
4588
|
"kind": "field",
|
|
4511
4589
|
"name": "controllerTargets",
|
|
4512
4590
|
"privacy": "private",
|
|
4513
|
-
"default": "new Map<string,
|
|
4591
|
+
"default": "new Map<string, PoiBase>()"
|
|
4514
4592
|
},
|
|
4515
4593
|
{
|
|
4516
4594
|
"kind": "field",
|
|
@@ -4635,6 +4713,16 @@
|
|
|
4635
4713
|
}
|
|
4636
4714
|
}
|
|
4637
4715
|
},
|
|
4716
|
+
{
|
|
4717
|
+
"kind": "method",
|
|
4718
|
+
"name": "computeCurrentProjection",
|
|
4719
|
+
"privacy": "private",
|
|
4720
|
+
"return": {
|
|
4721
|
+
"type": {
|
|
4722
|
+
"text": "MediaProjection | null"
|
|
4723
|
+
}
|
|
4724
|
+
}
|
|
4725
|
+
},
|
|
4638
4726
|
{
|
|
4639
4727
|
"kind": "method",
|
|
4640
4728
|
"name": "mapDetection",
|
|
@@ -4650,6 +4738,13 @@
|
|
|
4650
4738
|
"type": {
|
|
4651
4739
|
"text": "PoiDetection"
|
|
4652
4740
|
}
|
|
4741
|
+
},
|
|
4742
|
+
{
|
|
4743
|
+
"name": "projection",
|
|
4744
|
+
"default": "this.computeCurrentProjection()",
|
|
4745
|
+
"type": {
|
|
4746
|
+
"text": "MediaProjection | null"
|
|
4747
|
+
}
|
|
4653
4748
|
}
|
|
4654
4749
|
]
|
|
4655
4750
|
},
|
|
@@ -4706,6 +4801,24 @@
|
|
|
4706
4801
|
},
|
|
4707
4802
|
"default": "null",
|
|
4708
4803
|
"fieldName": "classFilter"
|
|
4804
|
+
},
|
|
4805
|
+
{
|
|
4806
|
+
"name": "x-filter-cutoff-hz",
|
|
4807
|
+
"type": {
|
|
4808
|
+
"text": "number | null"
|
|
4809
|
+
},
|
|
4810
|
+
"default": "null",
|
|
4811
|
+
"description": "Forwarded to every controller-owned target's `xFilterCutoffHz`; `null` leaves the targets on their default.",
|
|
4812
|
+
"fieldName": "xFilterCutoffHz"
|
|
4813
|
+
},
|
|
4814
|
+
{
|
|
4815
|
+
"name": "y-filter-cutoff-hz",
|
|
4816
|
+
"type": {
|
|
4817
|
+
"text": "number | null"
|
|
4818
|
+
},
|
|
4819
|
+
"default": "null",
|
|
4820
|
+
"description": "Forwarded to every controller-owned target's `yFilterCutoffHz`; `null` leaves the targets on their default.",
|
|
4821
|
+
"fieldName": "yFilterCutoffHz"
|
|
4709
4822
|
}
|
|
4710
4823
|
],
|
|
4711
4824
|
"superclass": {
|
|
@@ -4717,6 +4830,22 @@
|
|
|
4717
4830
|
}
|
|
4718
4831
|
],
|
|
4719
4832
|
"exports": [
|
|
4833
|
+
{
|
|
4834
|
+
"kind": "js",
|
|
4835
|
+
"name": "POI_CONTROLLER_LAYER_ATTR",
|
|
4836
|
+
"declaration": {
|
|
4837
|
+
"name": "POI_CONTROLLER_LAYER_ATTR",
|
|
4838
|
+
"module": "src/ar/poi-controller/poi-controller.ts"
|
|
4839
|
+
}
|
|
4840
|
+
},
|
|
4841
|
+
{
|
|
4842
|
+
"kind": "js",
|
|
4843
|
+
"name": "POI_CONTROLLER_BACKGROUND_LAYER",
|
|
4844
|
+
"declaration": {
|
|
4845
|
+
"name": "POI_CONTROLLER_BACKGROUND_LAYER",
|
|
4846
|
+
"module": "src/ar/poi-controller/poi-controller.ts"
|
|
4847
|
+
}
|
|
4848
|
+
},
|
|
4720
4849
|
{
|
|
4721
4850
|
"kind": "js",
|
|
4722
4851
|
"name": "ObcPoiController",
|
|
@@ -4741,7 +4870,7 @@
|
|
|
4741
4870
|
"declarations": [
|
|
4742
4871
|
{
|
|
4743
4872
|
"kind": "class",
|
|
4744
|
-
"description": "`<obc-poi-group>` - A POI cluster component that collapses overlapping targets into one trigger and expands them into a spread list.\n\nThis component wraps multiple `obc-poi-data` elements and manages their collapsed/expanded presentation as a single interactive unit.\nUse it when nearby targets should be presented as one grouped control until the user expands the group.\n\n### Features\n- Expand/collapse state: Controlled by `expand`; collapse animation state is exposed through `collapsing`.\n- Automatic wrapper sizing: Computes collapsed wrapper width/height from slotted target button bounds.\n- Front-target handling: Keeps one front target visually prioritized while collapsing other targets into overlap state.\n- Backdrop interaction: Shows a backdrop while expanded and collapses on backdrop click.\n- Dynamic ordering: `internalSwapping` enables reordering while expanded based on current horizontal positions.\n- Vertical placement: `positionVertical` sets the wrapper/group top offset used for collapsed positioning.\n\n### Usage Guidelines\n- Slot only `obc-poi-data` items that should behave as one grouped target set.\n- Control expand/collapse via the `expand` property, or let the built-in wrapper button toggle expansion.\n- Use the `expand` event detail to synchronize nearby standalone targets (for example, set outside targets to overlapped while this group is open).\n- Treat `collapsing` as
|
|
4873
|
+
"description": "`<obc-poi-group>` - A POI cluster component that collapses overlapping targets into one trigger and expands them into a spread list.\n\nThis component wraps multiple `obc-poi-data` elements and manages their collapsed/expanded presentation as a single interactive unit.\nUse it when nearby targets should be presented as one grouped control until the user expands the group.\n\n### Features\n- Expand/collapse state: Controlled by `expand`; collapse animation state is exposed through `collapsing`.\n- Automatic wrapper sizing: Computes collapsed wrapper width/height from slotted target button bounds.\n- Front-target handling: Keeps one front target visually prioritized while collapsing other targets into overlap state.\n- Backdrop interaction: Shows a backdrop while expanded and collapses on backdrop click.\n- Dynamic ordering: `internalSwapping` enables reordering while expanded based on current horizontal positions.\n- Vertical placement: `positionVertical` (attribute `position-vertical`) sets the wrapper/group top offset used for collapsed positioning.\n\n### Usage Guidelines\n- Slot only `obc-poi-data` items that should behave as one grouped target set.\n- Control expand/collapse via the `expand` property, or let the built-in wrapper button toggle expansion.\n- Use the `expand` event detail to synchronize nearby standalone targets (for example, set outside targets to overlapped while this group is open).\n- Treat `collapsing` as orchestration state: it is set by the group itself and by coordinating containers such as `obc-poi-layer-stack` during collapse animations. Do not set it directly.\n- `internalSwapping` is usually set via `obc-poi-layer`'s `internal-swapping` attribute, which forwards it to auto-created groups; set it directly only on manually managed groups.\n\n### Slots\n| Slot | Renders When... | Purpose |\n| --- | --- | --- |\n| default | Always | Contains grouped `obc-poi-data` targets managed by this component. |\n\n### Events\n- `expand` - Fired when expand state changes. Detail: `{ expand: boolean }`.\n- `collapse-finished` - Fired when the collapse animation has fully completed.\n- `obc-poi-group-target-released` - Fired after `releaseTarget()` returns a target to the group's parent context: re-parented for consumer-managed groups, re-assigned to the layer's main slot for layer-created auto groups. Detail: `{ target: Poi }`.\n\n### Best Practices\n- Keep grouped targets positioned consistently so wrapper bounds and front-target selection remain stable.\n- Prefer one `obc-poi-group` per overlap cluster rather than nesting groups.\n- Use `internalSwapping` only when live target crossing should reorder expanded items.\n\n### Example\n```html\n<obc-poi-group position-vertical=\"240px\">\n <obc-poi-data x=\"300\" button-y=\"240\" y=\"240\"></obc-poi-data>\n <obc-poi-data x=\"320\" button-y=\"240\" y=\"240\"></obc-poi-data>\n <obc-poi-data x=\"340\" button-y=\"240\" y=\"240\"></obc-poi-data>\n</obc-poi-group>\n```",
|
|
4745
4874
|
"name": "ObcPoiGroup",
|
|
4746
4875
|
"slots": [
|
|
4747
4876
|
{
|
|
@@ -4766,6 +4895,7 @@
|
|
|
4766
4895
|
"text": "boolean"
|
|
4767
4896
|
},
|
|
4768
4897
|
"default": "false",
|
|
4898
|
+
"description": "Collapse-animation state. Set by the group itself and by coordinating containers such as `obc-poi-layer-stack` during collapse orchestration; do not set it directly.",
|
|
4769
4899
|
"attribute": "collapsing"
|
|
4770
4900
|
},
|
|
4771
4901
|
{
|
|
@@ -4775,7 +4905,7 @@
|
|
|
4775
4905
|
"text": "string"
|
|
4776
4906
|
},
|
|
4777
4907
|
"default": "'0px'",
|
|
4778
|
-
"attribute": "
|
|
4908
|
+
"attribute": "position-vertical"
|
|
4779
4909
|
},
|
|
4780
4910
|
{
|
|
4781
4911
|
"kind": "field",
|
|
@@ -4784,6 +4914,7 @@
|
|
|
4784
4914
|
"text": "boolean"
|
|
4785
4915
|
},
|
|
4786
4916
|
"default": "false",
|
|
4917
|
+
"description": "Reorders expanded targets when their horizontal positions cross. Usually set via `obc-poi-layer`'s `internal-swapping` attribute, which forwards it to auto-created groups; set it directly only on manually managed groups.",
|
|
4787
4918
|
"attribute": "internal-swapping"
|
|
4788
4919
|
},
|
|
4789
4920
|
{
|
|
@@ -4946,6 +5077,49 @@
|
|
|
4946
5077
|
"name": "onSlotChange",
|
|
4947
5078
|
"privacy": "private"
|
|
4948
5079
|
},
|
|
5080
|
+
{
|
|
5081
|
+
"kind": "method",
|
|
5082
|
+
"name": "isMember",
|
|
5083
|
+
"privacy": "private",
|
|
5084
|
+
"return": {
|
|
5085
|
+
"type": {
|
|
5086
|
+
"text": "boolean"
|
|
5087
|
+
}
|
|
5088
|
+
},
|
|
5089
|
+
"parameters": [
|
|
5090
|
+
{
|
|
5091
|
+
"name": "child",
|
|
5092
|
+
"type": {
|
|
5093
|
+
"text": "HTMLElement"
|
|
5094
|
+
}
|
|
5095
|
+
}
|
|
5096
|
+
],
|
|
5097
|
+
"description": "Membership check that works for both light-DOM children (manual groups)\nand slot-assigned members (layer-created auto groups, where the member\nstays in the consumer's light DOM and is assigned into this group's\nmember slot)."
|
|
5098
|
+
},
|
|
5099
|
+
{
|
|
5100
|
+
"kind": "method",
|
|
5101
|
+
"name": "getMemberSlot",
|
|
5102
|
+
"privacy": "private",
|
|
5103
|
+
"return": {
|
|
5104
|
+
"type": {
|
|
5105
|
+
"text": "HTMLSlotElement | null"
|
|
5106
|
+
}
|
|
5107
|
+
}
|
|
5108
|
+
},
|
|
5109
|
+
{
|
|
5110
|
+
"kind": "method",
|
|
5111
|
+
"name": "bringChildToFront",
|
|
5112
|
+
"privacy": "private",
|
|
5113
|
+
"parameters": [
|
|
5114
|
+
{
|
|
5115
|
+
"name": "frontChild",
|
|
5116
|
+
"type": {
|
|
5117
|
+
"text": "Poi"
|
|
5118
|
+
}
|
|
5119
|
+
}
|
|
5120
|
+
],
|
|
5121
|
+
"description": "Paint the front child on top. For light-DOM members this reorders the\nchildren; for slot-assigned members it re-assigns the member slot, which\nchanges flattened-tree order without touching the consumer's DOM."
|
|
5122
|
+
},
|
|
4949
5123
|
{
|
|
4950
5124
|
"kind": "method",
|
|
4951
5125
|
"name": "ensureFrontChildOnTop",
|
|
@@ -5316,7 +5490,7 @@
|
|
|
5316
5490
|
"type": {
|
|
5317
5491
|
"text": "CustomEvent<{target: Poi}>"
|
|
5318
5492
|
},
|
|
5319
|
-
"description": "Fired after a target
|
|
5493
|
+
"description": "Fired after `releaseTarget()` returns a target to the group's parent context (re-parented for consumer-managed groups, re-assigned for auto groups) — immediately when the group is collapsed, or once the collapse animation completes. Bubbles and is composed."
|
|
5320
5494
|
}
|
|
5321
5495
|
],
|
|
5322
5496
|
"attributes": [
|
|
@@ -5334,10 +5508,11 @@
|
|
|
5334
5508
|
"text": "boolean"
|
|
5335
5509
|
},
|
|
5336
5510
|
"default": "false",
|
|
5511
|
+
"description": "Collapse-animation state. Set by the group itself and by coordinating containers such as `obc-poi-layer-stack` during collapse orchestration; do not set it directly.",
|
|
5337
5512
|
"fieldName": "collapsing"
|
|
5338
5513
|
},
|
|
5339
5514
|
{
|
|
5340
|
-
"name": "
|
|
5515
|
+
"name": "position-vertical",
|
|
5341
5516
|
"type": {
|
|
5342
5517
|
"text": "string"
|
|
5343
5518
|
},
|
|
@@ -5350,6 +5525,7 @@
|
|
|
5350
5525
|
"text": "boolean"
|
|
5351
5526
|
},
|
|
5352
5527
|
"default": "false",
|
|
5528
|
+
"description": "Reorders expanded targets when their horizontal positions cross. Usually set via `obc-poi-layer`'s `internal-swapping` attribute, which forwards it to auto-created groups; set it directly only on manually managed groups.",
|
|
5353
5529
|
"fieldName": "internalSwapping"
|
|
5354
5530
|
}
|
|
5355
5531
|
],
|
|
@@ -5386,7 +5562,7 @@
|
|
|
5386
5562
|
"declarations": [
|
|
5387
5563
|
{
|
|
5388
5564
|
"kind": "class",
|
|
5389
|
-
"description": "`<obc-poi-layer-stack>` coordinates multiple POI layers and manages\nselection behavior across stacked layers.\n\nUse `selection-mode` to control whether targets can be selected across the\nstack (`none`, `single`, or `multi`).\n\n### Slots\n- Default slot for `obc-poi-layer` elements that participate in the stack.\n\n### Example\n```html\n<obc-poi-layer-stack selection-mode=\"single\">\n <obc-poi-layer label=\"Radar\" .isSelected=${true}></obc-poi-layer>\n <obc-poi-layer label=\"AIS\"></obc-poi-layer>\n</obc-poi-layer-stack>\n```",
|
|
5565
|
+
"description": "`<obc-poi-layer-stack>` coordinates multiple POI layers and manages\nselection behavior across stacked layers.\n\nUse `selection-mode` to control whether targets can be selected across the\nstack (`none`, `single`, or `multi`).\n\n### Required Setup\n1. Place the stack in `obc-poi-controller`'s `slot=\"stack\"`, or manage the\n stack's height and media geometry yourself.\n2. Give exactly one child `obc-poi-layer` the `is-selected` attribute — the\n stack projects selected targets' buttons into it and resets all\n selection state if no selected layer exists.\n3. Mark the background/default layer with\n `data-controller-layer=\"background\"` when the stack is used inside\n `obc-poi-controller`.\n4. Set `--obc-poi-layer-min-height` on layers that can start empty, so they\n do not collapse to 0px height.\n\n### DOM Ownership\nThe stack never moves, creates, or removes consumer-owned DOM. Selection is\nrendered by projecting the target's button into the selected layer via CSS\ncustom properties (`--obc-poi-button-projection-y` /\n`--obc-poi-target-projection-y`); the target element stays where the\nconsumer put it. Declarative renderers (React, Vue, Lit) can manage POI\nchildren as ordinary framework-owned elements.\n\n### Selection API\nSelection state is fully reachable without DOM inspection:\n- `selectedTargets` — the currently selected POI targets.\n- `selectTarget(target, {selectionId?})` — select programmatically;\n `selectionId` presets the stack-managed badge id.\n- `deselectTarget(target)` / `clearSelection()` — deselect one/all.\n- `selection-change` event — fired on every selection mutation\n (user click, programmatic call, or bootstrap seeding) with\n `{selected, added, removed}` in `detail`.\n\n### Slots\n- Default slot for `obc-poi-layer` elements that participate in the stack.\n\n### Example\n```html\n<obc-poi-layer-stack selection-mode=\"single\">\n <obc-poi-layer label=\"Radar\" .isSelected=${true}></obc-poi-layer>\n <obc-poi-layer label=\"AIS\"></obc-poi-layer>\n</obc-poi-layer-stack>\n```",
|
|
5390
5566
|
"name": "ObcPoiLayerStack",
|
|
5391
5567
|
"slots": [
|
|
5392
5568
|
{
|
|
@@ -5449,7 +5625,14 @@
|
|
|
5449
5625
|
"kind": "field",
|
|
5450
5626
|
"name": "selectionMap",
|
|
5451
5627
|
"privacy": "private",
|
|
5452
|
-
"default": "new Map<
|
|
5628
|
+
"default": "new Map<Poi, SelectionRecord>()"
|
|
5629
|
+
},
|
|
5630
|
+
{
|
|
5631
|
+
"kind": "field",
|
|
5632
|
+
"name": "displacedTargets",
|
|
5633
|
+
"privacy": "private",
|
|
5634
|
+
"default": "new Map<Poi, SelectionRecord>()",
|
|
5635
|
+
"description": "Deselected targets that live in one layer but render in another (targets\nauthored inside the selected layer whose logical origin is a different\nlayer). Their projections are refreshed on every placement pass so layer\nresizes do not leave stale pixel offsets."
|
|
5453
5636
|
},
|
|
5454
5637
|
{
|
|
5455
5638
|
"kind": "field",
|
|
@@ -5490,6 +5673,112 @@
|
|
|
5490
5673
|
}
|
|
5491
5674
|
]
|
|
5492
5675
|
},
|
|
5676
|
+
{
|
|
5677
|
+
"kind": "field",
|
|
5678
|
+
"name": "selectedTargets",
|
|
5679
|
+
"type": {
|
|
5680
|
+
"text": "Poi[]"
|
|
5681
|
+
},
|
|
5682
|
+
"description": "Currently selected POI targets.",
|
|
5683
|
+
"readonly": true
|
|
5684
|
+
},
|
|
5685
|
+
{
|
|
5686
|
+
"kind": "method",
|
|
5687
|
+
"name": "selectTarget",
|
|
5688
|
+
"return": {
|
|
5689
|
+
"type": {
|
|
5690
|
+
"text": "boolean"
|
|
5691
|
+
}
|
|
5692
|
+
},
|
|
5693
|
+
"parameters": [
|
|
5694
|
+
{
|
|
5695
|
+
"name": "target",
|
|
5696
|
+
"type": {
|
|
5697
|
+
"text": "Poi"
|
|
5698
|
+
}
|
|
5699
|
+
},
|
|
5700
|
+
{
|
|
5701
|
+
"name": "options",
|
|
5702
|
+
"optional": true,
|
|
5703
|
+
"type": {
|
|
5704
|
+
"text": "{selectionId?: string}"
|
|
5705
|
+
}
|
|
5706
|
+
}
|
|
5707
|
+
],
|
|
5708
|
+
"description": "Programmatically select a target, following the same flow as a user\nclick. `options.selectionId` presets the badge id shown in the\nstack-managed header; without it the id auto-increments. Returns\n`false` when selection is disabled, the target is mid-transition or\nalready selected, or no layer can host the selection."
|
|
5709
|
+
},
|
|
5710
|
+
{
|
|
5711
|
+
"kind": "method",
|
|
5712
|
+
"name": "deselectTarget",
|
|
5713
|
+
"return": {
|
|
5714
|
+
"type": {
|
|
5715
|
+
"text": "boolean"
|
|
5716
|
+
}
|
|
5717
|
+
},
|
|
5718
|
+
"parameters": [
|
|
5719
|
+
{
|
|
5720
|
+
"name": "target",
|
|
5721
|
+
"type": {
|
|
5722
|
+
"text": "Poi"
|
|
5723
|
+
}
|
|
5724
|
+
}
|
|
5725
|
+
],
|
|
5726
|
+
"description": "Programmatically deselect a target. Returns `false` when it is not\nselected."
|
|
5727
|
+
},
|
|
5728
|
+
{
|
|
5729
|
+
"kind": "method",
|
|
5730
|
+
"name": "clearSelection",
|
|
5731
|
+
"return": {
|
|
5732
|
+
"type": {
|
|
5733
|
+
"text": "void"
|
|
5734
|
+
}
|
|
5735
|
+
},
|
|
5736
|
+
"description": "Deselect all targets."
|
|
5737
|
+
},
|
|
5738
|
+
{
|
|
5739
|
+
"kind": "method",
|
|
5740
|
+
"name": "performSelection",
|
|
5741
|
+
"privacy": "private",
|
|
5742
|
+
"return": {
|
|
5743
|
+
"type": {
|
|
5744
|
+
"text": "boolean"
|
|
5745
|
+
}
|
|
5746
|
+
},
|
|
5747
|
+
"parameters": [
|
|
5748
|
+
{
|
|
5749
|
+
"name": "target",
|
|
5750
|
+
"type": {
|
|
5751
|
+
"text": "Poi"
|
|
5752
|
+
}
|
|
5753
|
+
},
|
|
5754
|
+
{
|
|
5755
|
+
"name": "selectionId",
|
|
5756
|
+
"optional": true,
|
|
5757
|
+
"type": {
|
|
5758
|
+
"text": "string"
|
|
5759
|
+
}
|
|
5760
|
+
}
|
|
5761
|
+
]
|
|
5762
|
+
},
|
|
5763
|
+
{
|
|
5764
|
+
"kind": "method",
|
|
5765
|
+
"name": "dispatchSelectionChange",
|
|
5766
|
+
"privacy": "private",
|
|
5767
|
+
"parameters": [
|
|
5768
|
+
{
|
|
5769
|
+
"name": "added",
|
|
5770
|
+
"type": {
|
|
5771
|
+
"text": "Poi | null"
|
|
5772
|
+
}
|
|
5773
|
+
},
|
|
5774
|
+
{
|
|
5775
|
+
"name": "removed",
|
|
5776
|
+
"type": {
|
|
5777
|
+
"text": "Poi | null"
|
|
5778
|
+
}
|
|
5779
|
+
}
|
|
5780
|
+
]
|
|
5781
|
+
},
|
|
5493
5782
|
{
|
|
5494
5783
|
"kind": "method",
|
|
5495
5784
|
"name": "getPoiTargetFromEvent",
|
|
@@ -5739,7 +6028,7 @@
|
|
|
5739
6028
|
},
|
|
5740
6029
|
{
|
|
5741
6030
|
"kind": "method",
|
|
5742
|
-
"name": "
|
|
6031
|
+
"name": "getInlineVarPx",
|
|
5743
6032
|
"privacy": "private",
|
|
5744
6033
|
"return": {
|
|
5745
6034
|
"type": {
|
|
@@ -5752,12 +6041,18 @@
|
|
|
5752
6041
|
"type": {
|
|
5753
6042
|
"text": "Poi"
|
|
5754
6043
|
}
|
|
6044
|
+
},
|
|
6045
|
+
{
|
|
6046
|
+
"name": "name",
|
|
6047
|
+
"type": {
|
|
6048
|
+
"text": "string"
|
|
6049
|
+
}
|
|
5755
6050
|
}
|
|
5756
6051
|
]
|
|
5757
6052
|
},
|
|
5758
6053
|
{
|
|
5759
6054
|
"kind": "method",
|
|
5760
|
-
"name": "
|
|
6055
|
+
"name": "layerBottomDelta",
|
|
5761
6056
|
"privacy": "private",
|
|
5762
6057
|
"return": {
|
|
5763
6058
|
"type": {
|
|
@@ -5766,94 +6061,84 @@
|
|
|
5766
6061
|
},
|
|
5767
6062
|
"parameters": [
|
|
5768
6063
|
{
|
|
5769
|
-
"name": "
|
|
6064
|
+
"name": "from",
|
|
5770
6065
|
"type": {
|
|
5771
6066
|
"text": "ObcPoiLayer"
|
|
5772
6067
|
}
|
|
5773
6068
|
},
|
|
5774
6069
|
{
|
|
5775
|
-
"name": "
|
|
6070
|
+
"name": "to",
|
|
5776
6071
|
"type": {
|
|
5777
|
-
"text": "ObcPoiLayer
|
|
6072
|
+
"text": "ObcPoiLayer"
|
|
5778
6073
|
}
|
|
5779
6074
|
}
|
|
5780
|
-
]
|
|
6075
|
+
],
|
|
6076
|
+
"description": "Pixel delta between two layers' bottom edges (`to.bottom - from.bottom`)."
|
|
5781
6077
|
},
|
|
5782
6078
|
{
|
|
5783
6079
|
"kind": "method",
|
|
5784
|
-
"name": "
|
|
6080
|
+
"name": "setProjectionVar",
|
|
5785
6081
|
"privacy": "private",
|
|
5786
|
-
"return": {
|
|
5787
|
-
"type": {
|
|
5788
|
-
"text": "number"
|
|
5789
|
-
}
|
|
5790
|
-
},
|
|
5791
6082
|
"parameters": [
|
|
5792
6083
|
{
|
|
5793
|
-
"name": "
|
|
6084
|
+
"name": "target",
|
|
5794
6085
|
"type": {
|
|
5795
|
-
"text": "
|
|
6086
|
+
"text": "Poi"
|
|
5796
6087
|
}
|
|
5797
6088
|
},
|
|
5798
6089
|
{
|
|
5799
|
-
"name": "
|
|
6090
|
+
"name": "name",
|
|
5800
6091
|
"type": {
|
|
5801
|
-
"text": "
|
|
6092
|
+
"text": "string"
|
|
6093
|
+
}
|
|
6094
|
+
},
|
|
6095
|
+
{
|
|
6096
|
+
"name": "valuePx",
|
|
6097
|
+
"type": {
|
|
6098
|
+
"text": "number"
|
|
5802
6099
|
}
|
|
5803
6100
|
}
|
|
5804
6101
|
]
|
|
5805
6102
|
},
|
|
5806
6103
|
{
|
|
5807
6104
|
"kind": "method",
|
|
5808
|
-
"name": "
|
|
6105
|
+
"name": "applyTargetProjection",
|
|
5809
6106
|
"privacy": "private",
|
|
5810
|
-
"return": {
|
|
5811
|
-
"type": {
|
|
5812
|
-
"text": "ObcPoiLayer | null"
|
|
5813
|
-
}
|
|
5814
|
-
},
|
|
5815
6107
|
"parameters": [
|
|
5816
6108
|
{
|
|
5817
6109
|
"name": "target",
|
|
5818
6110
|
"type": {
|
|
5819
6111
|
"text": "Poi"
|
|
5820
6112
|
}
|
|
5821
|
-
}
|
|
5822
|
-
]
|
|
5823
|
-
},
|
|
5824
|
-
{
|
|
5825
|
-
"kind": "method",
|
|
5826
|
-
"name": "applySelectedTargetProjectionState",
|
|
5827
|
-
"privacy": "private",
|
|
5828
|
-
"parameters": [
|
|
6113
|
+
},
|
|
5829
6114
|
{
|
|
5830
|
-
"name": "
|
|
6115
|
+
"name": "buttonOffsetPx",
|
|
5831
6116
|
"type": {
|
|
5832
|
-
"text": "
|
|
6117
|
+
"text": "number"
|
|
5833
6118
|
}
|
|
5834
|
-
}
|
|
5835
|
-
]
|
|
5836
|
-
},
|
|
5837
|
-
{
|
|
5838
|
-
"kind": "method",
|
|
5839
|
-
"name": "clearTargetProjectionStyles",
|
|
5840
|
-
"privacy": "private",
|
|
5841
|
-
"parameters": [
|
|
6119
|
+
},
|
|
5842
6120
|
{
|
|
5843
|
-
"name": "
|
|
6121
|
+
"name": "targetOffsetPx",
|
|
5844
6122
|
"type": {
|
|
5845
|
-
"text": "
|
|
6123
|
+
"text": "number"
|
|
6124
|
+
}
|
|
6125
|
+
},
|
|
6126
|
+
{
|
|
6127
|
+
"name": "animate",
|
|
6128
|
+
"type": {
|
|
6129
|
+
"text": "boolean"
|
|
5846
6130
|
}
|
|
5847
6131
|
}
|
|
5848
|
-
]
|
|
6132
|
+
],
|
|
6133
|
+
"description": "Render the target at the given projection offsets without touching its\nDOM position. When `animate` is set and an offset actually changes, the\njump is FLIP-animated via the Web Animations API."
|
|
5849
6134
|
},
|
|
5850
6135
|
{
|
|
5851
6136
|
"kind": "method",
|
|
5852
|
-
"name": "
|
|
6137
|
+
"name": "getContainingGroup",
|
|
5853
6138
|
"privacy": "private",
|
|
5854
6139
|
"return": {
|
|
5855
6140
|
"type": {
|
|
5856
|
-
"text": "
|
|
6141
|
+
"text": "ObcPoiGroup | null"
|
|
5857
6142
|
}
|
|
5858
6143
|
},
|
|
5859
6144
|
"parameters": [
|
|
@@ -5864,15 +6149,15 @@
|
|
|
5864
6149
|
}
|
|
5865
6150
|
}
|
|
5866
6151
|
],
|
|
5867
|
-
"description": "
|
|
6152
|
+
"description": "The group a target currently belongs to — a light-DOM parent for\nconsumer-managed groups, or the shadow group whose member slot the\ntarget is assigned to for layer-created auto groups."
|
|
5868
6153
|
},
|
|
5869
6154
|
{
|
|
5870
6155
|
"kind": "method",
|
|
5871
|
-
"name": "
|
|
6156
|
+
"name": "detachTargetFromCurrentGroup",
|
|
5872
6157
|
"privacy": "private",
|
|
5873
6158
|
"return": {
|
|
5874
6159
|
"type": {
|
|
5875
|
-
"text": "
|
|
6160
|
+
"text": "ObcPoiLayer | null"
|
|
5876
6161
|
}
|
|
5877
6162
|
},
|
|
5878
6163
|
"parameters": [
|
|
@@ -5881,25 +6166,12 @@
|
|
|
5881
6166
|
"type": {
|
|
5882
6167
|
"text": "Poi"
|
|
5883
6168
|
}
|
|
5884
|
-
},
|
|
5885
|
-
{
|
|
5886
|
-
"name": "beforeButtonRect",
|
|
5887
|
-
"type": {
|
|
5888
|
-
"text": "DOMRect | null"
|
|
5889
|
-
}
|
|
5890
|
-
},
|
|
5891
|
-
{
|
|
5892
|
-
"name": "beforeLineRect",
|
|
5893
|
-
"type": {
|
|
5894
|
-
"text": "DOMRect | null"
|
|
5895
|
-
}
|
|
5896
6169
|
}
|
|
5897
|
-
]
|
|
5898
|
-
"description": "Animate a layer jump using Web Animations API.\nfill:'forwards' overrides ALL CSS/Lit styles during animation.\nAfter cancel(), Lit's final-state styles take over."
|
|
6170
|
+
]
|
|
5899
6171
|
},
|
|
5900
6172
|
{
|
|
5901
6173
|
"kind": "method",
|
|
5902
|
-
"name": "
|
|
6174
|
+
"name": "applySelectedTargetProjectionState",
|
|
5903
6175
|
"privacy": "private",
|
|
5904
6176
|
"parameters": [
|
|
5905
6177
|
{
|
|
@@ -5907,28 +6179,12 @@
|
|
|
5907
6179
|
"type": {
|
|
5908
6180
|
"text": "Poi"
|
|
5909
6181
|
}
|
|
5910
|
-
},
|
|
5911
|
-
{
|
|
5912
|
-
"name": "_originLayer",
|
|
5913
|
-
"type": {
|
|
5914
|
-
"text": "ObcPoiLayer"
|
|
5915
|
-
}
|
|
5916
|
-
},
|
|
5917
|
-
{
|
|
5918
|
-
"name": "selectedLayer",
|
|
5919
|
-
"type": {
|
|
5920
|
-
"text": "ObcPoiLayer"
|
|
5921
|
-
}
|
|
5922
|
-
},
|
|
5923
|
-
{
|
|
5924
|
-
"name": "animate",
|
|
5925
|
-
"default": "true"
|
|
5926
6182
|
}
|
|
5927
6183
|
]
|
|
5928
6184
|
},
|
|
5929
6185
|
{
|
|
5930
6186
|
"kind": "method",
|
|
5931
|
-
"name": "
|
|
6187
|
+
"name": "clearTargetProjectionStyles",
|
|
5932
6188
|
"privacy": "private",
|
|
5933
6189
|
"parameters": [
|
|
5934
6190
|
{
|
|
@@ -5936,60 +6192,37 @@
|
|
|
5936
6192
|
"type": {
|
|
5937
6193
|
"text": "Poi"
|
|
5938
6194
|
}
|
|
5939
|
-
},
|
|
5940
|
-
{
|
|
5941
|
-
"name": "record",
|
|
5942
|
-
"type": {
|
|
5943
|
-
"text": "{\n originLayer: ObcPoiLayer;\n previousAnimatePosition: boolean;\n keepInSelectedLayer: boolean;\n }"
|
|
5944
|
-
}
|
|
5945
|
-
},
|
|
5946
|
-
{
|
|
5947
|
-
"name": "selectedLayer",
|
|
5948
|
-
"type": {
|
|
5949
|
-
"text": "ObcPoiLayer"
|
|
5950
|
-
}
|
|
5951
|
-
},
|
|
5952
|
-
{
|
|
5953
|
-
"name": "animateProjection",
|
|
5954
|
-
"type": {
|
|
5955
|
-
"text": "boolean"
|
|
5956
|
-
}
|
|
5957
6195
|
}
|
|
5958
6196
|
]
|
|
5959
6197
|
},
|
|
5960
6198
|
{
|
|
5961
6199
|
"kind": "method",
|
|
5962
|
-
"name": "
|
|
6200
|
+
"name": "getAnimationElements",
|
|
5963
6201
|
"privacy": "private",
|
|
6202
|
+
"return": {
|
|
6203
|
+
"type": {
|
|
6204
|
+
"text": "{\n button: HTMLElement | null;\n line: HTMLElement | null;\n }"
|
|
6205
|
+
}
|
|
6206
|
+
},
|
|
5964
6207
|
"parameters": [
|
|
5965
6208
|
{
|
|
5966
6209
|
"name": "target",
|
|
5967
6210
|
"type": {
|
|
5968
6211
|
"text": "Poi"
|
|
5969
6212
|
}
|
|
5970
|
-
},
|
|
5971
|
-
{
|
|
5972
|
-
"name": "originLayer",
|
|
5973
|
-
"type": {
|
|
5974
|
-
"text": "ObcPoiLayer"
|
|
5975
|
-
}
|
|
5976
|
-
},
|
|
5977
|
-
{
|
|
5978
|
-
"name": "selectedLayer",
|
|
5979
|
-
"type": {
|
|
5980
|
-
"text": "ObcPoiLayer | null"
|
|
5981
|
-
}
|
|
5982
|
-
},
|
|
5983
|
-
{
|
|
5984
|
-
"name": "animate",
|
|
5985
|
-
"default": "true"
|
|
5986
6213
|
}
|
|
5987
|
-
]
|
|
6214
|
+
],
|
|
6215
|
+
"description": "Find the button and line elements inside the POI's shadow DOM."
|
|
5988
6216
|
},
|
|
5989
6217
|
{
|
|
5990
6218
|
"kind": "method",
|
|
5991
|
-
"name": "
|
|
6219
|
+
"name": "animateLayerJump",
|
|
5992
6220
|
"privacy": "private",
|
|
6221
|
+
"return": {
|
|
6222
|
+
"type": {
|
|
6223
|
+
"text": "Promise<void>"
|
|
6224
|
+
}
|
|
6225
|
+
},
|
|
5993
6226
|
"parameters": [
|
|
5994
6227
|
{
|
|
5995
6228
|
"name": "target",
|
|
@@ -5998,16 +6231,23 @@
|
|
|
5998
6231
|
}
|
|
5999
6232
|
},
|
|
6000
6233
|
{
|
|
6001
|
-
"name": "
|
|
6234
|
+
"name": "beforeButtonRect",
|
|
6235
|
+
"type": {
|
|
6236
|
+
"text": "DOMRect | null"
|
|
6237
|
+
}
|
|
6238
|
+
},
|
|
6239
|
+
{
|
|
6240
|
+
"name": "beforeLineRect",
|
|
6002
6241
|
"type": {
|
|
6003
|
-
"text": "
|
|
6242
|
+
"text": "DOMRect | null"
|
|
6004
6243
|
}
|
|
6005
6244
|
}
|
|
6006
|
-
]
|
|
6245
|
+
],
|
|
6246
|
+
"description": "Animate a layer jump using Web Animations API.\nfill:'forwards' overrides ALL CSS/Lit styles during animation.\nAfter cancel(), Lit's final-state styles take over."
|
|
6007
6247
|
},
|
|
6008
6248
|
{
|
|
6009
6249
|
"kind": "method",
|
|
6010
|
-
"name": "
|
|
6250
|
+
"name": "animateTargetReturnToOrigin",
|
|
6011
6251
|
"privacy": "private",
|
|
6012
6252
|
"parameters": [
|
|
6013
6253
|
{
|
|
@@ -6017,16 +6257,16 @@
|
|
|
6017
6257
|
}
|
|
6018
6258
|
},
|
|
6019
6259
|
{
|
|
6020
|
-
"name": "
|
|
6260
|
+
"name": "record",
|
|
6021
6261
|
"type": {
|
|
6022
|
-
"text": "
|
|
6262
|
+
"text": "SelectionRecord"
|
|
6023
6263
|
}
|
|
6024
6264
|
}
|
|
6025
6265
|
]
|
|
6026
6266
|
},
|
|
6027
6267
|
{
|
|
6028
6268
|
"kind": "method",
|
|
6029
|
-
"name": "
|
|
6269
|
+
"name": "setSelectedTargetInteractivity",
|
|
6030
6270
|
"privacy": "private",
|
|
6031
6271
|
"parameters": [
|
|
6032
6272
|
{
|
|
@@ -6036,14 +6276,10 @@
|
|
|
6036
6276
|
}
|
|
6037
6277
|
},
|
|
6038
6278
|
{
|
|
6039
|
-
"name": "
|
|
6279
|
+
"name": "selected",
|
|
6040
6280
|
"type": {
|
|
6041
|
-
"text": "
|
|
6281
|
+
"text": "boolean"
|
|
6042
6282
|
}
|
|
6043
|
-
},
|
|
6044
|
-
{
|
|
6045
|
-
"name": "keepInSelectedLayer",
|
|
6046
|
-
"default": "true"
|
|
6047
6283
|
}
|
|
6048
6284
|
]
|
|
6049
6285
|
},
|
|
@@ -6061,7 +6297,7 @@
|
|
|
6061
6297
|
{
|
|
6062
6298
|
"name": "record",
|
|
6063
6299
|
"type": {
|
|
6064
|
-
"text": "
|
|
6300
|
+
"text": "SelectionRecord"
|
|
6065
6301
|
}
|
|
6066
6302
|
},
|
|
6067
6303
|
{
|
|
@@ -6109,7 +6345,7 @@
|
|
|
6109
6345
|
"name": "record",
|
|
6110
6346
|
"optional": true,
|
|
6111
6347
|
"type": {
|
|
6112
|
-
"text": "
|
|
6348
|
+
"text": "SelectionRecord"
|
|
6113
6349
|
}
|
|
6114
6350
|
}
|
|
6115
6351
|
]
|
|
@@ -6159,6 +6395,21 @@
|
|
|
6159
6395
|
"kind": "method",
|
|
6160
6396
|
"name": "syncSelectedLayerTargets",
|
|
6161
6397
|
"privacy": "private"
|
|
6398
|
+
},
|
|
6399
|
+
{
|
|
6400
|
+
"kind": "method",
|
|
6401
|
+
"name": "refreshDisplacedTargets",
|
|
6402
|
+
"privacy": "private",
|
|
6403
|
+
"description": "Keep deselected targets that render outside their DOM layer (targets\nauthored in the selected layer whose logical origin is another layer)\nprojected at up-to-date offsets across layer resizes."
|
|
6404
|
+
}
|
|
6405
|
+
],
|
|
6406
|
+
"events": [
|
|
6407
|
+
{
|
|
6408
|
+
"name": "selection-change",
|
|
6409
|
+
"type": {
|
|
6410
|
+
"text": "CustomEvent<{selected: Poi[]; added: Poi | null; removed: Poi | null}>"
|
|
6411
|
+
},
|
|
6412
|
+
"description": "Fired whenever the selection set changes (user click, programmatic call, or bootstrap seeding). Bubbles and is composed."
|
|
6162
6413
|
}
|
|
6163
6414
|
],
|
|
6164
6415
|
"attributes": [
|
|
@@ -6203,7 +6454,7 @@
|
|
|
6203
6454
|
"declarations": [
|
|
6204
6455
|
{
|
|
6205
6456
|
"kind": "class",
|
|
6206
|
-
"description": "`<obc-poi-layer>` - A POI layout container that resolves overlapping targets by grouping or crossing strategies.\n\nThis component watches slotted POI targets, applies overlap state/visual rules, and coordinates automatic `obc-poi-group` creation when needed.\nUse it as the main layer container when you want centralized overlap behavior plus layer height updates for parent layout systems.\n\n### Features\n- Overlap strategies: `overlapMode=\"grouping\"` builds overlap clusters; `overlapMode=\"crossing\"` continuously adjusts horizontal offsets to reduce crossings.\n- Auto-group lifecycle: Creates/removes auto groups
|
|
6457
|
+
"description": "`<obc-poi-layer>` - A POI layout container that resolves overlapping targets by grouping or crossing strategies.\n\nThis component watches slotted POI targets, applies overlap state/visual rules, and coordinates automatic `obc-poi-group` creation when needed.\nUse it as the main layer container when you want centralized overlap behavior plus layer height updates for parent layout systems.\n\n### Features\n- Overlap strategies: `overlapMode=\"grouping\"` builds overlap clusters; `overlapMode=\"crossing\"` continuously adjusts horizontal offsets to reduce crossings.\n- Auto-group lifecycle: Creates/removes auto groups as shadow-internal chrome — the consumer's light DOM is never modified; members are placed via manual slot assignment. Reach the group elements through the `autoGroups` accessor.\n- Manual group support: Respects existing `obc-poi-group` elements and can optionally join nearby targets while a group is expanded (`joinWhileExpanded`).\n- Dynamic observation: Reacts to slot changes, target style/position mutations, and target size changes to recompute grouping and layer height.\n- Layer diagnostics: `debug` shows a label overlay using `label`.\n- Selection flag: `isSelected` reflects to attribute but has no direct runtime layout logic in this class.\n- Group ordering option: `internalSwapping` is forwarded to groups to allow expanded ordering updates based on movement.\n\n### Usage Guidelines\n- Place `obc-poi-data` targets (and optional `obc-poi-group`) in the default slot.\n- Choose `overlapMode` based on behavior:\n - `grouping`: best when overlaps should collapse into expandable clusters.\n - `crossing`: best when targets stay independent but should separate horizontally.\n- Handle `layer-resize` only when using the layer standalone; inside `obc-poi-layer-stack` / `obc-poi-controller` the container handles height syncing. Example: `layer.addEventListener('layer-resize', (e) => { host.style.height = e.detail.height + 'px'; })`.\n- After imperatively adding, removing, or moving POI children outside the layer's own observers, call the public `requestGroupingUpdate()` method to force a recompute; it is the supported hook for imperative DOM mutations.\n- Set `--obc-poi-layer-min-height` when the layer starts empty, otherwise the layer collapses to 0px height until targets exist.\n- Enable `joinWhileExpanded` only when targets should be able to join an already expanded auto-group.\n- **TODO(designer):** Confirm intended user-visible behavior for `isSelected`, since it has no runtime layout logic in this class — it only reflects the attribute and notifies containers via `layer-selection-changed` (consumed by `obc-poi-layer-stack` to pick the selected layer).\n\n### Slots\n| Slot | Renders When... | Purpose |\n| --- | --- | --- |\n| default | Always | Hosts POI targets (`obc-poi-data*`) and optional manual `obc-poi-group` elements. |\n\n### Events\n- `layer-resize` - Fired when computed layer height changes. Detail: `{ height: number, label: string }`.\n- `grouping-change` - Fired when grouping membership or front/behind/pre-group state changes. Detail: `{ clusters: Poi[][], front: Poi[], behind: Poi[], pregrouped: Poi[] }`. Subscribe to this instead of observing the layer's internal `data-*` attributes.\n\n### CSS Custom Properties\n| Property | Default | Purpose |\n| --- | --- | --- |\n| `--obc-poi-layer-overlap-enter` | `10px` | Max horizontal gap at which ungrouped targets start grouping. |\n| `--obc-poi-layer-overlap-exit` | `18px` | Gap at which grouped targets leave their group. Clamped to at least the enter threshold; keep it larger than enter so jittery positions do not oscillate in and out of groups. |\n| `--obc-poi-layer-overlap-pre` | `16px` | Gap at which targets get the pre-grouped visual state. |\n| `--obc-poi-layer-overlap-behind` | `10px` | Gap at which the shortest target gets the behind visual state. |\n| `--obc-poi-layer-exit-delay-ms` | `140` | Delay before exiting targets lose their exit visual state. |\n| `--obc-poi-layer-group-removal-delay-ms` | `250` | Delay before a dissolved auto-group element is removed. |\n| `--obc-poi-layer-exit-lock-duration-ms` | `500` | Duration a target is locked out of pre-group/behind states after leaving a group. |\n\n### Best Practices\n- Keep POI targets as direct descendants when possible to reduce grouping ambiguity.\n- Targets may update `x`/`y` every animation frame; grouping stays stable as long as the horizontal gap between targets does not oscillate across the enter/exit band faster than the group lifecycle delays (~0.5s). Smooth noisy input coordinates or widen the enter/exit band to compensate.\n- Avoid adding non-POI interactive wrappers inside the layer unless needed, as layer observers track POI-related descendants.\n\n### Example\n```html\n<obc-poi-layer label=\"Targets\" overlapMode=\"grouping\" debug>\n <obc-poi-data x=\"180\" y=\"110\"></obc-poi-data>\n <obc-poi-data x=\"205\" y=\"90\"></obc-poi-data>\n <obc-poi-data x=\"230\" y=\"100\"></obc-poi-data>\n</obc-poi-layer>\n```",
|
|
6207
6458
|
"name": "ObcPoiLayer",
|
|
6208
6459
|
"slots": [
|
|
6209
6460
|
{
|
|
@@ -6212,6 +6463,16 @@
|
|
|
6212
6463
|
}
|
|
6213
6464
|
],
|
|
6214
6465
|
"members": [
|
|
6466
|
+
{
|
|
6467
|
+
"kind": "field",
|
|
6468
|
+
"name": "shadowRootOptions",
|
|
6469
|
+
"type": {
|
|
6470
|
+
"text": "ShadowRootInit"
|
|
6471
|
+
},
|
|
6472
|
+
"static": true,
|
|
6473
|
+
"default": "{ ...LitElement.shadowRootOptions, slotAssignment: 'manual', }",
|
|
6474
|
+
"description": "Manual slot assignment lets the layer place consumer-owned targets into\nshadow-internal auto-group chrome (and back) without ever re-parenting\nthem: grouping only changes which internal slot a target is assigned to."
|
|
6475
|
+
},
|
|
6215
6476
|
{
|
|
6216
6477
|
"kind": "field",
|
|
6217
6478
|
"name": "label",
|
|
@@ -6307,6 +6568,30 @@
|
|
|
6307
6568
|
"privacy": "private",
|
|
6308
6569
|
"default": "false"
|
|
6309
6570
|
},
|
|
6571
|
+
{
|
|
6572
|
+
"kind": "field",
|
|
6573
|
+
"name": "lastGroupingSignature",
|
|
6574
|
+
"type": {
|
|
6575
|
+
"text": "string"
|
|
6576
|
+
},
|
|
6577
|
+
"privacy": "private",
|
|
6578
|
+
"default": "''"
|
|
6579
|
+
},
|
|
6580
|
+
{
|
|
6581
|
+
"kind": "field",
|
|
6582
|
+
"name": "groupingIds",
|
|
6583
|
+
"privacy": "private",
|
|
6584
|
+
"default": "new WeakMap<Poi, number>()"
|
|
6585
|
+
},
|
|
6586
|
+
{
|
|
6587
|
+
"kind": "field",
|
|
6588
|
+
"name": "nextGroupingId",
|
|
6589
|
+
"type": {
|
|
6590
|
+
"text": "number"
|
|
6591
|
+
},
|
|
6592
|
+
"privacy": "private",
|
|
6593
|
+
"default": "1"
|
|
6594
|
+
},
|
|
6310
6595
|
{
|
|
6311
6596
|
"kind": "field",
|
|
6312
6597
|
"name": "targetObservers",
|
|
@@ -6594,90 +6879,236 @@
|
|
|
6594
6879
|
},
|
|
6595
6880
|
{
|
|
6596
6881
|
"kind": "method",
|
|
6597
|
-
"name": "
|
|
6598
|
-
"privacy": "private"
|
|
6882
|
+
"name": "getMainSlot",
|
|
6883
|
+
"privacy": "private",
|
|
6884
|
+
"return": {
|
|
6885
|
+
"type": {
|
|
6886
|
+
"text": "HTMLSlotElement | null"
|
|
6887
|
+
}
|
|
6888
|
+
}
|
|
6599
6889
|
},
|
|
6600
6890
|
{
|
|
6601
6891
|
"kind": "method",
|
|
6602
|
-
"name": "
|
|
6603
|
-
"privacy": "private"
|
|
6892
|
+
"name": "syncSlotAssignments",
|
|
6893
|
+
"privacy": "private",
|
|
6894
|
+
"description": "Assign every light-DOM child that is not currently placed in an\nauto-group member slot to the main slot. With `slotAssignment: 'manual'`\nnothing renders unless explicitly assigned, so this runs after render,\non child-list mutations, and after every grouping change."
|
|
6895
|
+
},
|
|
6896
|
+
{
|
|
6897
|
+
"kind": "field",
|
|
6898
|
+
"name": "autoGroups",
|
|
6899
|
+
"type": {
|
|
6900
|
+
"text": "HTMLElement[]"
|
|
6901
|
+
},
|
|
6902
|
+
"privacy": "public",
|
|
6903
|
+
"description": "The auto-created `obc-poi-group` elements currently managed by this\nlayer. Auto groups are shadow-internal chrome (they never appear in the\nconsumer's light DOM); use this accessor — typically after a\n`grouping-change` event — to reach them, e.g. to expand a group\nprogrammatically.",
|
|
6904
|
+
"readonly": true
|
|
6604
6905
|
},
|
|
6605
6906
|
{
|
|
6606
6907
|
"kind": "method",
|
|
6607
|
-
"name": "
|
|
6908
|
+
"name": "getAutoGroups",
|
|
6608
6909
|
"privacy": "private",
|
|
6609
6910
|
"return": {
|
|
6610
6911
|
"type": {
|
|
6611
|
-
"text": "
|
|
6912
|
+
"text": "PoiButtonGroupElement[]"
|
|
6612
6913
|
}
|
|
6613
6914
|
}
|
|
6614
6915
|
},
|
|
6615
6916
|
{
|
|
6616
6917
|
"kind": "method",
|
|
6617
|
-
"name": "
|
|
6918
|
+
"name": "getAutoGroupMemberSlot",
|
|
6618
6919
|
"privacy": "private",
|
|
6920
|
+
"return": {
|
|
6921
|
+
"type": {
|
|
6922
|
+
"text": "HTMLSlotElement | null"
|
|
6923
|
+
}
|
|
6924
|
+
},
|
|
6619
6925
|
"parameters": [
|
|
6620
6926
|
{
|
|
6621
6927
|
"name": "group",
|
|
6622
6928
|
"type": {
|
|
6623
6929
|
"text": "HTMLElement"
|
|
6624
6930
|
}
|
|
6625
|
-
},
|
|
6626
|
-
{
|
|
6627
|
-
"name": "hasTargets",
|
|
6628
|
-
"type": {
|
|
6629
|
-
"text": "boolean"
|
|
6630
|
-
}
|
|
6631
6931
|
}
|
|
6632
6932
|
]
|
|
6633
6933
|
},
|
|
6634
6934
|
{
|
|
6635
6935
|
"kind": "method",
|
|
6636
|
-
"name": "
|
|
6637
|
-
"privacy": "private"
|
|
6638
|
-
},
|
|
6639
|
-
{
|
|
6640
|
-
"kind": "method",
|
|
6641
|
-
"name": "tryJoinExpandedGroup",
|
|
6936
|
+
"name": "getAutoGroupOf",
|
|
6642
6937
|
"privacy": "private",
|
|
6938
|
+
"return": {
|
|
6939
|
+
"type": {
|
|
6940
|
+
"text": "HTMLElement | null"
|
|
6941
|
+
}
|
|
6942
|
+
},
|
|
6643
6943
|
"parameters": [
|
|
6644
6944
|
{
|
|
6645
|
-
"name": "
|
|
6646
|
-
"type": {
|
|
6647
|
-
"text": "PoiButtonGroupElement"
|
|
6648
|
-
}
|
|
6649
|
-
},
|
|
6650
|
-
{
|
|
6651
|
-
"name": "targets",
|
|
6652
|
-
"type": {
|
|
6653
|
-
"text": "Poi[]"
|
|
6654
|
-
}
|
|
6655
|
-
},
|
|
6656
|
-
{
|
|
6657
|
-
"name": "rects",
|
|
6658
|
-
"type": {
|
|
6659
|
-
"text": "Map<Poi, DOMRect>"
|
|
6660
|
-
}
|
|
6661
|
-
},
|
|
6662
|
-
{
|
|
6663
|
-
"name": "enterThreshold",
|
|
6945
|
+
"name": "target",
|
|
6664
6946
|
"type": {
|
|
6665
|
-
"text": "
|
|
6947
|
+
"text": "Poi"
|
|
6666
6948
|
}
|
|
6667
6949
|
}
|
|
6668
|
-
]
|
|
6950
|
+
],
|
|
6951
|
+
"description": "The auto group a target is currently assigned into, if any."
|
|
6669
6952
|
},
|
|
6670
6953
|
{
|
|
6671
6954
|
"kind": "method",
|
|
6672
|
-
"name": "
|
|
6955
|
+
"name": "getGroupMembers",
|
|
6673
6956
|
"privacy": "private",
|
|
6957
|
+
"return": {
|
|
6958
|
+
"type": {
|
|
6959
|
+
"text": "Poi[]"
|
|
6960
|
+
}
|
|
6961
|
+
},
|
|
6674
6962
|
"parameters": [
|
|
6675
6963
|
{
|
|
6676
|
-
"name": "
|
|
6964
|
+
"name": "group",
|
|
6677
6965
|
"type": {
|
|
6678
|
-
"text": "
|
|
6966
|
+
"text": "ParentNode"
|
|
6679
6967
|
}
|
|
6680
|
-
}
|
|
6968
|
+
}
|
|
6969
|
+
],
|
|
6970
|
+
"description": "Members of a group in either mode: slot-assigned (shadow auto groups) or\nlight-DOM children (consumer-managed manual groups)."
|
|
6971
|
+
},
|
|
6972
|
+
{
|
|
6973
|
+
"kind": "method",
|
|
6974
|
+
"name": "scheduleGrouping",
|
|
6975
|
+
"privacy": "private"
|
|
6976
|
+
},
|
|
6977
|
+
{
|
|
6978
|
+
"kind": "method",
|
|
6979
|
+
"name": "scheduleCrossingMode",
|
|
6980
|
+
"privacy": "private"
|
|
6981
|
+
},
|
|
6982
|
+
{
|
|
6983
|
+
"kind": "method",
|
|
6984
|
+
"name": "updateCrossingMode",
|
|
6985
|
+
"privacy": "private",
|
|
6986
|
+
"return": {
|
|
6987
|
+
"type": {
|
|
6988
|
+
"text": "boolean"
|
|
6989
|
+
}
|
|
6990
|
+
}
|
|
6991
|
+
},
|
|
6992
|
+
{
|
|
6993
|
+
"kind": "method",
|
|
6994
|
+
"name": "getGroupingId",
|
|
6995
|
+
"privacy": "private",
|
|
6996
|
+
"return": {
|
|
6997
|
+
"type": {
|
|
6998
|
+
"text": "number"
|
|
6999
|
+
}
|
|
7000
|
+
},
|
|
7001
|
+
"parameters": [
|
|
7002
|
+
{
|
|
7003
|
+
"name": "target",
|
|
7004
|
+
"type": {
|
|
7005
|
+
"text": "Poi"
|
|
7006
|
+
}
|
|
7007
|
+
}
|
|
7008
|
+
]
|
|
7009
|
+
},
|
|
7010
|
+
{
|
|
7011
|
+
"kind": "method",
|
|
7012
|
+
"name": "notifyGroupingChange",
|
|
7013
|
+
"privacy": "private",
|
|
7014
|
+
"parameters": [
|
|
7015
|
+
{
|
|
7016
|
+
"name": "clusters",
|
|
7017
|
+
"type": {
|
|
7018
|
+
"text": "Poi[][]"
|
|
7019
|
+
}
|
|
7020
|
+
},
|
|
7021
|
+
{
|
|
7022
|
+
"name": "frontTargets",
|
|
7023
|
+
"type": {
|
|
7024
|
+
"text": "Set<Poi>"
|
|
7025
|
+
}
|
|
7026
|
+
},
|
|
7027
|
+
{
|
|
7028
|
+
"name": "behindTargets",
|
|
7029
|
+
"type": {
|
|
7030
|
+
"text": "Set<Poi>"
|
|
7031
|
+
}
|
|
7032
|
+
},
|
|
7033
|
+
{
|
|
7034
|
+
"name": "preGrouped",
|
|
7035
|
+
"type": {
|
|
7036
|
+
"text": "Set<Poi>"
|
|
7037
|
+
}
|
|
7038
|
+
}
|
|
7039
|
+
]
|
|
7040
|
+
},
|
|
7041
|
+
{
|
|
7042
|
+
"kind": "method",
|
|
7043
|
+
"name": "toggleGroupLayerHook",
|
|
7044
|
+
"privacy": "private",
|
|
7045
|
+
"parameters": [
|
|
7046
|
+
{
|
|
7047
|
+
"name": "group",
|
|
7048
|
+
"type": {
|
|
7049
|
+
"text": "HTMLElement"
|
|
7050
|
+
}
|
|
7051
|
+
},
|
|
7052
|
+
{
|
|
7053
|
+
"name": "hasTargets",
|
|
7054
|
+
"type": {
|
|
7055
|
+
"text": "boolean"
|
|
7056
|
+
}
|
|
7057
|
+
}
|
|
7058
|
+
]
|
|
7059
|
+
},
|
|
7060
|
+
{
|
|
7061
|
+
"kind": "method",
|
|
7062
|
+
"name": "updateGrouping",
|
|
7063
|
+
"privacy": "private"
|
|
7064
|
+
},
|
|
7065
|
+
{
|
|
7066
|
+
"kind": "method",
|
|
7067
|
+
"name": "tryJoinExpandedGroup",
|
|
7068
|
+
"privacy": "private",
|
|
7069
|
+
"return": {
|
|
7070
|
+
"type": {
|
|
7071
|
+
"text": "Poi | null"
|
|
7072
|
+
}
|
|
7073
|
+
},
|
|
7074
|
+
"parameters": [
|
|
7075
|
+
{
|
|
7076
|
+
"name": "group",
|
|
7077
|
+
"type": {
|
|
7078
|
+
"text": "PoiButtonGroupElement"
|
|
7079
|
+
}
|
|
7080
|
+
},
|
|
7081
|
+
{
|
|
7082
|
+
"name": "targets",
|
|
7083
|
+
"type": {
|
|
7084
|
+
"text": "Poi[]"
|
|
7085
|
+
}
|
|
7086
|
+
},
|
|
7087
|
+
{
|
|
7088
|
+
"name": "rects",
|
|
7089
|
+
"type": {
|
|
7090
|
+
"text": "Map<Poi, DOMRect>"
|
|
7091
|
+
}
|
|
7092
|
+
},
|
|
7093
|
+
{
|
|
7094
|
+
"name": "enterThreshold",
|
|
7095
|
+
"type": {
|
|
7096
|
+
"text": "number"
|
|
7097
|
+
}
|
|
7098
|
+
}
|
|
7099
|
+
]
|
|
7100
|
+
},
|
|
7101
|
+
{
|
|
7102
|
+
"kind": "method",
|
|
7103
|
+
"name": "applyStandaloneVisualState",
|
|
7104
|
+
"privacy": "private",
|
|
7105
|
+
"parameters": [
|
|
7106
|
+
{
|
|
7107
|
+
"name": "target",
|
|
7108
|
+
"type": {
|
|
7109
|
+
"text": "Poi"
|
|
7110
|
+
}
|
|
7111
|
+
},
|
|
6681
7112
|
{
|
|
6682
7113
|
"name": "overlap",
|
|
6683
7114
|
"type": {
|
|
@@ -6978,6 +7409,13 @@
|
|
|
6978
7409
|
},
|
|
6979
7410
|
"description": "Fired when the layer height changes."
|
|
6980
7411
|
},
|
|
7412
|
+
{
|
|
7413
|
+
"name": "grouping-change",
|
|
7414
|
+
"type": {
|
|
7415
|
+
"text": "CustomEvent<{clusters:Poi[][],front:Poi[],behind:Poi[],pregrouped:Poi[]}>"
|
|
7416
|
+
},
|
|
7417
|
+
"description": "Fired when grouping membership or overlap state changes. Bubbles and is composed."
|
|
7418
|
+
},
|
|
6981
7419
|
{
|
|
6982
7420
|
"name": "layer-selection-changed",
|
|
6983
7421
|
"type": {
|
|
@@ -7831,13 +8269,163 @@
|
|
|
7831
8269
|
}
|
|
7832
8270
|
]
|
|
7833
8271
|
},
|
|
8272
|
+
{
|
|
8273
|
+
"kind": "javascript-module",
|
|
8274
|
+
"path": "src/ar/poi-projection/poi-projection.ts",
|
|
8275
|
+
"declarations": [
|
|
8276
|
+
{
|
|
8277
|
+
"kind": "function",
|
|
8278
|
+
"name": "computeMediaProjection",
|
|
8279
|
+
"return": {
|
|
8280
|
+
"type": {
|
|
8281
|
+
"text": "MediaProjection | null"
|
|
8282
|
+
}
|
|
8283
|
+
},
|
|
8284
|
+
"parameters": [
|
|
8285
|
+
{
|
|
8286
|
+
"name": "input",
|
|
8287
|
+
"type": {
|
|
8288
|
+
"text": "MediaProjectionInput"
|
|
8289
|
+
}
|
|
8290
|
+
}
|
|
8291
|
+
],
|
|
8292
|
+
"description": "Compute the projection for the given dimensions, or `null` when any\ndimension is non-finite or zero (media not measured yet)."
|
|
8293
|
+
},
|
|
8294
|
+
{
|
|
8295
|
+
"kind": "function",
|
|
8296
|
+
"name": "projectPoint",
|
|
8297
|
+
"return": {
|
|
8298
|
+
"type": {
|
|
8299
|
+
"text": "{x: number; y: number}"
|
|
8300
|
+
}
|
|
8301
|
+
},
|
|
8302
|
+
"parameters": [
|
|
8303
|
+
{
|
|
8304
|
+
"name": "projection",
|
|
8305
|
+
"type": {
|
|
8306
|
+
"text": "MediaProjection"
|
|
8307
|
+
}
|
|
8308
|
+
},
|
|
8309
|
+
{
|
|
8310
|
+
"name": "x",
|
|
8311
|
+
"type": {
|
|
8312
|
+
"text": "number"
|
|
8313
|
+
}
|
|
8314
|
+
},
|
|
8315
|
+
{
|
|
8316
|
+
"name": "y",
|
|
8317
|
+
"type": {
|
|
8318
|
+
"text": "number"
|
|
8319
|
+
}
|
|
8320
|
+
}
|
|
8321
|
+
],
|
|
8322
|
+
"description": "Project a point from media pixel space into rendered space."
|
|
8323
|
+
},
|
|
8324
|
+
{
|
|
8325
|
+
"kind": "function",
|
|
8326
|
+
"name": "projectPointToLayer",
|
|
8327
|
+
"return": {
|
|
8328
|
+
"type": {
|
|
8329
|
+
"text": "{x: number; y: number}"
|
|
8330
|
+
}
|
|
8331
|
+
},
|
|
8332
|
+
"parameters": [
|
|
8333
|
+
{
|
|
8334
|
+
"name": "projection",
|
|
8335
|
+
"type": {
|
|
8336
|
+
"text": "MediaProjection"
|
|
8337
|
+
}
|
|
8338
|
+
},
|
|
8339
|
+
{
|
|
8340
|
+
"name": "x",
|
|
8341
|
+
"type": {
|
|
8342
|
+
"text": "number"
|
|
8343
|
+
}
|
|
8344
|
+
},
|
|
8345
|
+
{
|
|
8346
|
+
"name": "y",
|
|
8347
|
+
"type": {
|
|
8348
|
+
"text": "number"
|
|
8349
|
+
}
|
|
8350
|
+
},
|
|
8351
|
+
{
|
|
8352
|
+
"name": "layerBottom",
|
|
8353
|
+
"type": {
|
|
8354
|
+
"text": "number"
|
|
8355
|
+
}
|
|
8356
|
+
}
|
|
8357
|
+
],
|
|
8358
|
+
"description": "Project a media-space anchor point into `obc-poi-data` layer\ncoordinates.\n\n`layerBottom` is the POI layer's bottom edge measured in the same\nrendered coordinate space as the projection container (e.g.\n`layerRect.bottom - containerRect.top`). The returned `y` is the\nconnector line length extending downward from the layer to the\ntarget point, clamped to `0` (matches how `obc-poi-controller`\npositions its detection targets)."
|
|
8359
|
+
},
|
|
8360
|
+
{
|
|
8361
|
+
"kind": "function",
|
|
8362
|
+
"name": "projectBoxSize",
|
|
8363
|
+
"return": {
|
|
8364
|
+
"type": {
|
|
8365
|
+
"text": "number | null"
|
|
8366
|
+
}
|
|
8367
|
+
},
|
|
8368
|
+
"parameters": [
|
|
8369
|
+
{
|
|
8370
|
+
"name": "projection",
|
|
8371
|
+
"type": {
|
|
8372
|
+
"text": "MediaProjection"
|
|
8373
|
+
}
|
|
8374
|
+
},
|
|
8375
|
+
{
|
|
8376
|
+
"name": "size",
|
|
8377
|
+
"type": {
|
|
8378
|
+
"text": "number | null | undefined"
|
|
8379
|
+
}
|
|
8380
|
+
}
|
|
8381
|
+
],
|
|
8382
|
+
"description": "Scale a media-space box dimension into rendered px, or `null`."
|
|
8383
|
+
}
|
|
8384
|
+
],
|
|
8385
|
+
"exports": [
|
|
8386
|
+
{
|
|
8387
|
+
"kind": "js",
|
|
8388
|
+
"name": "computeMediaProjection",
|
|
8389
|
+
"declaration": {
|
|
8390
|
+
"name": "computeMediaProjection",
|
|
8391
|
+
"module": "src/ar/poi-projection/poi-projection.ts"
|
|
8392
|
+
}
|
|
8393
|
+
},
|
|
8394
|
+
{
|
|
8395
|
+
"kind": "js",
|
|
8396
|
+
"name": "projectPoint",
|
|
8397
|
+
"declaration": {
|
|
8398
|
+
"name": "projectPoint",
|
|
8399
|
+
"module": "src/ar/poi-projection/poi-projection.ts"
|
|
8400
|
+
}
|
|
8401
|
+
},
|
|
8402
|
+
{
|
|
8403
|
+
"kind": "js",
|
|
8404
|
+
"name": "projectPointToLayer",
|
|
8405
|
+
"declaration": {
|
|
8406
|
+
"name": "projectPointToLayer",
|
|
8407
|
+
"module": "src/ar/poi-projection/poi-projection.ts"
|
|
8408
|
+
}
|
|
8409
|
+
},
|
|
8410
|
+
{
|
|
8411
|
+
"kind": "js",
|
|
8412
|
+
"name": "projectBoxSize",
|
|
8413
|
+
"declaration": {
|
|
8414
|
+
"name": "projectBoxSize",
|
|
8415
|
+
"module": "src/ar/poi-projection/poi-projection.ts"
|
|
8416
|
+
}
|
|
8417
|
+
}
|
|
8418
|
+
],
|
|
8419
|
+
"summary": "POI Projection",
|
|
8420
|
+
"description": "Media-projection helpers for POI overlays.\n\nMaps points from media pixel space (video/image natural resolution) to\nrendered screen space, accounting for `cover`/`contain` letterboxing.\nThis is the same math `obc-poi-controller` applies to its\ndetections-driven targets, exported as pure functions so applications\nthat manage their own POI elements can project coordinates without\nre-implementing the transform.\n\n### Usage Guidelines\n- Build a {@link MediaProjection} once per resize/metadata change via\n {@link computeMediaProjection}; reuse it for every point in a frame.\n- `renderWidth`/`renderHeight` come from the media element's\n `getBoundingClientRect()`; `mediaWidth`/`mediaHeight` from\n `videoWidth`/`videoHeight` (video) or `naturalWidth`/`naturalHeight`\n (image).\n- {@link projectPointToLayer} additionally converts a projected\n point into `obc-poi-data` layer coordinates (`x` center px,\n `y` line length from the layer's bottom anchor), given the layer's\n bottom offset inside the projection container.\n\n### Fit modes\n- `cover`: media fills the container; overflow is cropped.\n- `contain`: media letterboxes inside the container.\n\nThe Storybook demo draws the rendered container (outer box), the scaled\nmedia content region (shaded), and a marker at the projected point."
|
|
8421
|
+
},
|
|
7834
8422
|
{
|
|
7835
8423
|
"kind": "javascript-module",
|
|
7836
8424
|
"path": "src/ar/poi/poi-aton.ts",
|
|
7837
8425
|
"declarations": [
|
|
7838
8426
|
{
|
|
7839
8427
|
"kind": "class",
|
|
7840
|
-
"description": "`<obc-poi-aton>` - AtoN marker variant with layout positioning and layer integration.\n\nExtends `PoiBase` to provide the \"aton\" variant of the POI system.\nRenders `<obc-poi>` with a slotted `<obc-poi-button-aton
|
|
8428
|
+
"description": "`<obc-poi-aton>` - AtoN marker variant with layout positioning and layer integration.\n\nExtends `PoiBase` to provide the \"aton\" variant of the POI system.\nRenders `<obc-poi>` with a slotted `<obc-poi-button-aton>`.\nSee the \"Coordinate Model\" section in `PoiBase` (poi-base.ts) for how `x`, `y`, and `buttonY` position the marker.",
|
|
7841
8429
|
"name": "ObcPoiAton",
|
|
7842
8430
|
"slots": [
|
|
7843
8431
|
{
|
|
@@ -8129,10 +8717,7 @@
|
|
|
8129
8717
|
{
|
|
8130
8718
|
"kind": "field",
|
|
8131
8719
|
"name": "y",
|
|
8132
|
-
"
|
|
8133
|
-
"text": "number"
|
|
8134
|
-
},
|
|
8135
|
-
"default": "192",
|
|
8720
|
+
"default": "DEFAULT_LINE_LENGTH_PX",
|
|
8136
8721
|
"attribute": "y",
|
|
8137
8722
|
"inheritedFrom": {
|
|
8138
8723
|
"name": "PoiBase",
|
|
@@ -8152,6 +8737,34 @@
|
|
|
8152
8737
|
"module": "src/ar/poi/poi-base.ts"
|
|
8153
8738
|
}
|
|
8154
8739
|
},
|
|
8740
|
+
{
|
|
8741
|
+
"kind": "field",
|
|
8742
|
+
"name": "xFilterCutoffHz",
|
|
8743
|
+
"default": "16",
|
|
8744
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `x`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `x` is applied directly.",
|
|
8745
|
+
"attribute": "x-filter-cutoff-hz",
|
|
8746
|
+
"type": {
|
|
8747
|
+
"text": "number"
|
|
8748
|
+
},
|
|
8749
|
+
"inheritedFrom": {
|
|
8750
|
+
"name": "PoiBase",
|
|
8751
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8752
|
+
}
|
|
8753
|
+
},
|
|
8754
|
+
{
|
|
8755
|
+
"kind": "field",
|
|
8756
|
+
"name": "yFilterCutoffHz",
|
|
8757
|
+
"default": "16",
|
|
8758
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `y`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `y` is applied directly.",
|
|
8759
|
+
"attribute": "y-filter-cutoff-hz",
|
|
8760
|
+
"type": {
|
|
8761
|
+
"text": "number"
|
|
8762
|
+
},
|
|
8763
|
+
"inheritedFrom": {
|
|
8764
|
+
"name": "PoiBase",
|
|
8765
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8766
|
+
}
|
|
8767
|
+
},
|
|
8155
8768
|
{
|
|
8156
8769
|
"kind": "field",
|
|
8157
8770
|
"name": "fixedTarget",
|
|
@@ -8319,6 +8932,97 @@
|
|
|
8319
8932
|
"module": "src/ar/poi/poi-base.ts"
|
|
8320
8933
|
}
|
|
8321
8934
|
},
|
|
8935
|
+
{
|
|
8936
|
+
"kind": "field",
|
|
8937
|
+
"name": "resolvedXFilterCutoffHz",
|
|
8938
|
+
"type": {
|
|
8939
|
+
"text": "number"
|
|
8940
|
+
},
|
|
8941
|
+
"privacy": "private",
|
|
8942
|
+
"readonly": true,
|
|
8943
|
+
"inheritedFrom": {
|
|
8944
|
+
"name": "PoiBase",
|
|
8945
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8946
|
+
}
|
|
8947
|
+
},
|
|
8948
|
+
{
|
|
8949
|
+
"kind": "field",
|
|
8950
|
+
"name": "filteredY",
|
|
8951
|
+
"type": {
|
|
8952
|
+
"text": "number"
|
|
8953
|
+
},
|
|
8954
|
+
"privacy": "private",
|
|
8955
|
+
"default": "0",
|
|
8956
|
+
"inheritedFrom": {
|
|
8957
|
+
"name": "PoiBase",
|
|
8958
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8959
|
+
}
|
|
8960
|
+
},
|
|
8961
|
+
{
|
|
8962
|
+
"kind": "field",
|
|
8963
|
+
"name": "yFilterTarget",
|
|
8964
|
+
"type": {
|
|
8965
|
+
"text": "number"
|
|
8966
|
+
},
|
|
8967
|
+
"privacy": "private",
|
|
8968
|
+
"default": "0",
|
|
8969
|
+
"inheritedFrom": {
|
|
8970
|
+
"name": "PoiBase",
|
|
8971
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8972
|
+
}
|
|
8973
|
+
},
|
|
8974
|
+
{
|
|
8975
|
+
"kind": "field",
|
|
8976
|
+
"name": "yFilterInitialized",
|
|
8977
|
+
"type": {
|
|
8978
|
+
"text": "boolean"
|
|
8979
|
+
},
|
|
8980
|
+
"privacy": "private",
|
|
8981
|
+
"default": "false",
|
|
8982
|
+
"inheritedFrom": {
|
|
8983
|
+
"name": "PoiBase",
|
|
8984
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8985
|
+
}
|
|
8986
|
+
},
|
|
8987
|
+
{
|
|
8988
|
+
"kind": "field",
|
|
8989
|
+
"name": "lastYFilterTimestampMs",
|
|
8990
|
+
"type": {
|
|
8991
|
+
"text": "number"
|
|
8992
|
+
},
|
|
8993
|
+
"privacy": "private",
|
|
8994
|
+
"default": "0",
|
|
8995
|
+
"inheritedFrom": {
|
|
8996
|
+
"name": "PoiBase",
|
|
8997
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
8998
|
+
}
|
|
8999
|
+
},
|
|
9000
|
+
{
|
|
9001
|
+
"kind": "field",
|
|
9002
|
+
"name": "yFilterRaf",
|
|
9003
|
+
"type": {
|
|
9004
|
+
"text": "number"
|
|
9005
|
+
},
|
|
9006
|
+
"privacy": "private",
|
|
9007
|
+
"default": "0",
|
|
9008
|
+
"inheritedFrom": {
|
|
9009
|
+
"name": "PoiBase",
|
|
9010
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9011
|
+
}
|
|
9012
|
+
},
|
|
9013
|
+
{
|
|
9014
|
+
"kind": "field",
|
|
9015
|
+
"name": "resolvedYFilterCutoffHz",
|
|
9016
|
+
"type": {
|
|
9017
|
+
"text": "number"
|
|
9018
|
+
},
|
|
9019
|
+
"privacy": "private",
|
|
9020
|
+
"readonly": true,
|
|
9021
|
+
"inheritedFrom": {
|
|
9022
|
+
"name": "PoiBase",
|
|
9023
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9024
|
+
}
|
|
9025
|
+
},
|
|
8322
9026
|
{
|
|
8323
9027
|
"kind": "method",
|
|
8324
9028
|
"name": "dispatchLayoutChange",
|
|
@@ -8329,8 +9033,43 @@
|
|
|
8329
9033
|
}
|
|
8330
9034
|
},
|
|
8331
9035
|
{
|
|
8332
|
-
"kind": "field",
|
|
8333
|
-
"name": "stepXFilter",
|
|
9036
|
+
"kind": "field",
|
|
9037
|
+
"name": "stepXFilter",
|
|
9038
|
+
"privacy": "private",
|
|
9039
|
+
"inheritedFrom": {
|
|
9040
|
+
"name": "PoiBase",
|
|
9041
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9042
|
+
}
|
|
9043
|
+
},
|
|
9044
|
+
{
|
|
9045
|
+
"kind": "method",
|
|
9046
|
+
"name": "syncXFilterTarget",
|
|
9047
|
+
"privacy": "private",
|
|
9048
|
+
"parameters": [
|
|
9049
|
+
{
|
|
9050
|
+
"name": "nextX",
|
|
9051
|
+
"type": {
|
|
9052
|
+
"text": "number"
|
|
9053
|
+
}
|
|
9054
|
+
}
|
|
9055
|
+
],
|
|
9056
|
+
"inheritedFrom": {
|
|
9057
|
+
"name": "PoiBase",
|
|
9058
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9059
|
+
}
|
|
9060
|
+
},
|
|
9061
|
+
{
|
|
9062
|
+
"kind": "field",
|
|
9063
|
+
"name": "stepYFilter",
|
|
9064
|
+
"privacy": "private",
|
|
9065
|
+
"inheritedFrom": {
|
|
9066
|
+
"name": "PoiBase",
|
|
9067
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9068
|
+
}
|
|
9069
|
+
},
|
|
9070
|
+
{
|
|
9071
|
+
"kind": "method",
|
|
9072
|
+
"name": "applyFilteredY",
|
|
8334
9073
|
"privacy": "private",
|
|
8335
9074
|
"inheritedFrom": {
|
|
8336
9075
|
"name": "PoiBase",
|
|
@@ -8339,11 +9078,11 @@
|
|
|
8339
9078
|
},
|
|
8340
9079
|
{
|
|
8341
9080
|
"kind": "method",
|
|
8342
|
-
"name": "
|
|
9081
|
+
"name": "syncYFilterTarget",
|
|
8343
9082
|
"privacy": "private",
|
|
8344
9083
|
"parameters": [
|
|
8345
9084
|
{
|
|
8346
|
-
"name": "
|
|
9085
|
+
"name": "nextY",
|
|
8347
9086
|
"type": {
|
|
8348
9087
|
"text": "number"
|
|
8349
9088
|
}
|
|
@@ -8565,7 +9304,7 @@
|
|
|
8565
9304
|
"text": "number"
|
|
8566
9305
|
},
|
|
8567
9306
|
"privacy": "protected",
|
|
8568
|
-
"description": "Public `y` normalized as the target Y input.",
|
|
9307
|
+
"description": "Public `y` normalized as the target Y input, after the y filter.",
|
|
8569
9308
|
"readonly": true,
|
|
8570
9309
|
"inheritedFrom": {
|
|
8571
9310
|
"name": "PoiBase",
|
|
@@ -8600,49 +9339,11 @@
|
|
|
8600
9339
|
"module": "src/ar/poi/poi-base.ts"
|
|
8601
9340
|
}
|
|
8602
9341
|
},
|
|
8603
|
-
{
|
|
8604
|
-
"kind": "field",
|
|
8605
|
-
"name": "resolvedHeaderState",
|
|
8606
|
-
"type": {
|
|
8607
|
-
"text": "ObcPoiHeaderState"
|
|
8608
|
-
},
|
|
8609
|
-
"privacy": "protected",
|
|
8610
|
-
"readonly": true,
|
|
8611
|
-
"inheritedFrom": {
|
|
8612
|
-
"name": "PoiBase",
|
|
8613
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
8614
|
-
}
|
|
8615
|
-
},
|
|
8616
9342
|
{
|
|
8617
9343
|
"kind": "method",
|
|
8618
9344
|
"name": "syncHeaderContent",
|
|
8619
9345
|
"privacy": "private",
|
|
8620
|
-
"
|
|
8621
|
-
"name": "PoiBase",
|
|
8622
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
8623
|
-
}
|
|
8624
|
-
},
|
|
8625
|
-
{
|
|
8626
|
-
"kind": "method",
|
|
8627
|
-
"name": "applyHeaderState",
|
|
8628
|
-
"privacy": "private",
|
|
8629
|
-
"parameters": [
|
|
8630
|
-
{
|
|
8631
|
-
"name": "root",
|
|
8632
|
-
"type": {
|
|
8633
|
-
"text": "ParentNode"
|
|
8634
|
-
}
|
|
8635
|
-
}
|
|
8636
|
-
],
|
|
8637
|
-
"inheritedFrom": {
|
|
8638
|
-
"name": "PoiBase",
|
|
8639
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
8640
|
-
}
|
|
8641
|
-
},
|
|
8642
|
-
{
|
|
8643
|
-
"kind": "method",
|
|
8644
|
-
"name": "syncHeaderState",
|
|
8645
|
-
"privacy": "private",
|
|
9346
|
+
"description": "Auto-enable `hasHeader` when the consumer slots header content directly\n(outside a stack, which manages `hasHeader` itself). Header elements stay\nin the consumer's light DOM and reach the inner button through the\n`<slot name=\"header\">` forwarding chain; their `state` is synced by\n`obc-poi-button`.",
|
|
8646
9347
|
"inheritedFrom": {
|
|
8647
9348
|
"name": "PoiBase",
|
|
8648
9349
|
"module": "src/ar/poi/poi-base.ts"
|
|
@@ -8844,10 +9545,7 @@
|
|
|
8844
9545
|
},
|
|
8845
9546
|
{
|
|
8846
9547
|
"name": "y",
|
|
8847
|
-
"
|
|
8848
|
-
"text": "number"
|
|
8849
|
-
},
|
|
8850
|
-
"default": "192",
|
|
9548
|
+
"default": "DEFAULT_LINE_LENGTH_PX",
|
|
8851
9549
|
"fieldName": "y",
|
|
8852
9550
|
"inheritedFrom": {
|
|
8853
9551
|
"name": "PoiBase",
|
|
@@ -8866,6 +9564,26 @@
|
|
|
8866
9564
|
"module": "src/ar/poi/poi-base.ts"
|
|
8867
9565
|
}
|
|
8868
9566
|
},
|
|
9567
|
+
{
|
|
9568
|
+
"name": "x-filter-cutoff-hz",
|
|
9569
|
+
"default": "X_FILTER_CUTOFF_HZ",
|
|
9570
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `x`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `x` is applied directly.",
|
|
9571
|
+
"fieldName": "xFilterCutoffHz",
|
|
9572
|
+
"inheritedFrom": {
|
|
9573
|
+
"name": "PoiBase",
|
|
9574
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9575
|
+
}
|
|
9576
|
+
},
|
|
9577
|
+
{
|
|
9578
|
+
"name": "y-filter-cutoff-hz",
|
|
9579
|
+
"default": "Y_FILTER_CUTOFF_HZ",
|
|
9580
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `y`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `y` is applied directly.",
|
|
9581
|
+
"fieldName": "yFilterCutoffHz",
|
|
9582
|
+
"inheritedFrom": {
|
|
9583
|
+
"name": "PoiBase",
|
|
9584
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
9585
|
+
}
|
|
9586
|
+
},
|
|
8869
9587
|
{
|
|
8870
9588
|
"name": "fixed-target",
|
|
8871
9589
|
"type": {
|
|
@@ -9006,7 +9724,7 @@
|
|
|
9006
9724
|
"declarations": [
|
|
9007
9725
|
{
|
|
9008
9726
|
"kind": "class",
|
|
9009
|
-
"description": "`<obc-poi-data>` - Data-oriented marker variant with layout positioning and layer integration.\n\nExtends `PoiBase` to provide the \"data\" variant of the POI system.\nRenders `<obc-poi>` with a slotted `<obc-poi-button-data
|
|
9727
|
+
"description": "`<obc-poi-data>` - Data-oriented marker variant with layout positioning and layer integration.\n\nExtends `PoiBase` to provide the \"data\" variant of the POI system.\nRenders `<obc-poi>` with a slotted `<obc-poi-button-data>`.\nSee the \"Coordinate Model\" section in `PoiBase` (poi-base.ts) for how `x`, `y`, and `buttonY` position the marker.",
|
|
9010
9728
|
"name": "ObcPoiData",
|
|
9011
9729
|
"slots": [
|
|
9012
9730
|
{
|
|
@@ -9290,10 +10008,7 @@
|
|
|
9290
10008
|
{
|
|
9291
10009
|
"kind": "field",
|
|
9292
10010
|
"name": "y",
|
|
9293
|
-
"
|
|
9294
|
-
"text": "number"
|
|
9295
|
-
},
|
|
9296
|
-
"default": "192",
|
|
10011
|
+
"default": "DEFAULT_LINE_LENGTH_PX",
|
|
9297
10012
|
"attribute": "y",
|
|
9298
10013
|
"inheritedFrom": {
|
|
9299
10014
|
"name": "PoiBase",
|
|
@@ -9313,6 +10028,34 @@
|
|
|
9313
10028
|
"module": "src/ar/poi/poi-base.ts"
|
|
9314
10029
|
}
|
|
9315
10030
|
},
|
|
10031
|
+
{
|
|
10032
|
+
"kind": "field",
|
|
10033
|
+
"name": "xFilterCutoffHz",
|
|
10034
|
+
"default": "16",
|
|
10035
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `x`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `x` is applied directly.",
|
|
10036
|
+
"attribute": "x-filter-cutoff-hz",
|
|
10037
|
+
"type": {
|
|
10038
|
+
"text": "number"
|
|
10039
|
+
},
|
|
10040
|
+
"inheritedFrom": {
|
|
10041
|
+
"name": "PoiBase",
|
|
10042
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10043
|
+
}
|
|
10044
|
+
},
|
|
10045
|
+
{
|
|
10046
|
+
"kind": "field",
|
|
10047
|
+
"name": "yFilterCutoffHz",
|
|
10048
|
+
"default": "16",
|
|
10049
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `y`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `y` is applied directly.",
|
|
10050
|
+
"attribute": "y-filter-cutoff-hz",
|
|
10051
|
+
"type": {
|
|
10052
|
+
"text": "number"
|
|
10053
|
+
},
|
|
10054
|
+
"inheritedFrom": {
|
|
10055
|
+
"name": "PoiBase",
|
|
10056
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10057
|
+
}
|
|
10058
|
+
},
|
|
9316
10059
|
{
|
|
9317
10060
|
"kind": "field",
|
|
9318
10061
|
"name": "fixedTarget",
|
|
@@ -9480,6 +10223,97 @@
|
|
|
9480
10223
|
"module": "src/ar/poi/poi-base.ts"
|
|
9481
10224
|
}
|
|
9482
10225
|
},
|
|
10226
|
+
{
|
|
10227
|
+
"kind": "field",
|
|
10228
|
+
"name": "resolvedXFilterCutoffHz",
|
|
10229
|
+
"type": {
|
|
10230
|
+
"text": "number"
|
|
10231
|
+
},
|
|
10232
|
+
"privacy": "private",
|
|
10233
|
+
"readonly": true,
|
|
10234
|
+
"inheritedFrom": {
|
|
10235
|
+
"name": "PoiBase",
|
|
10236
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10237
|
+
}
|
|
10238
|
+
},
|
|
10239
|
+
{
|
|
10240
|
+
"kind": "field",
|
|
10241
|
+
"name": "filteredY",
|
|
10242
|
+
"type": {
|
|
10243
|
+
"text": "number"
|
|
10244
|
+
},
|
|
10245
|
+
"privacy": "private",
|
|
10246
|
+
"default": "0",
|
|
10247
|
+
"inheritedFrom": {
|
|
10248
|
+
"name": "PoiBase",
|
|
10249
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10250
|
+
}
|
|
10251
|
+
},
|
|
10252
|
+
{
|
|
10253
|
+
"kind": "field",
|
|
10254
|
+
"name": "yFilterTarget",
|
|
10255
|
+
"type": {
|
|
10256
|
+
"text": "number"
|
|
10257
|
+
},
|
|
10258
|
+
"privacy": "private",
|
|
10259
|
+
"default": "0",
|
|
10260
|
+
"inheritedFrom": {
|
|
10261
|
+
"name": "PoiBase",
|
|
10262
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10263
|
+
}
|
|
10264
|
+
},
|
|
10265
|
+
{
|
|
10266
|
+
"kind": "field",
|
|
10267
|
+
"name": "yFilterInitialized",
|
|
10268
|
+
"type": {
|
|
10269
|
+
"text": "boolean"
|
|
10270
|
+
},
|
|
10271
|
+
"privacy": "private",
|
|
10272
|
+
"default": "false",
|
|
10273
|
+
"inheritedFrom": {
|
|
10274
|
+
"name": "PoiBase",
|
|
10275
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10276
|
+
}
|
|
10277
|
+
},
|
|
10278
|
+
{
|
|
10279
|
+
"kind": "field",
|
|
10280
|
+
"name": "lastYFilterTimestampMs",
|
|
10281
|
+
"type": {
|
|
10282
|
+
"text": "number"
|
|
10283
|
+
},
|
|
10284
|
+
"privacy": "private",
|
|
10285
|
+
"default": "0",
|
|
10286
|
+
"inheritedFrom": {
|
|
10287
|
+
"name": "PoiBase",
|
|
10288
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10289
|
+
}
|
|
10290
|
+
},
|
|
10291
|
+
{
|
|
10292
|
+
"kind": "field",
|
|
10293
|
+
"name": "yFilterRaf",
|
|
10294
|
+
"type": {
|
|
10295
|
+
"text": "number"
|
|
10296
|
+
},
|
|
10297
|
+
"privacy": "private",
|
|
10298
|
+
"default": "0",
|
|
10299
|
+
"inheritedFrom": {
|
|
10300
|
+
"name": "PoiBase",
|
|
10301
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10302
|
+
}
|
|
10303
|
+
},
|
|
10304
|
+
{
|
|
10305
|
+
"kind": "field",
|
|
10306
|
+
"name": "resolvedYFilterCutoffHz",
|
|
10307
|
+
"type": {
|
|
10308
|
+
"text": "number"
|
|
10309
|
+
},
|
|
10310
|
+
"privacy": "private",
|
|
10311
|
+
"readonly": true,
|
|
10312
|
+
"inheritedFrom": {
|
|
10313
|
+
"name": "PoiBase",
|
|
10314
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10315
|
+
}
|
|
10316
|
+
},
|
|
9483
10317
|
{
|
|
9484
10318
|
"kind": "method",
|
|
9485
10319
|
"name": "dispatchLayoutChange",
|
|
@@ -9515,6 +10349,41 @@
|
|
|
9515
10349
|
"module": "src/ar/poi/poi-base.ts"
|
|
9516
10350
|
}
|
|
9517
10351
|
},
|
|
10352
|
+
{
|
|
10353
|
+
"kind": "field",
|
|
10354
|
+
"name": "stepYFilter",
|
|
10355
|
+
"privacy": "private",
|
|
10356
|
+
"inheritedFrom": {
|
|
10357
|
+
"name": "PoiBase",
|
|
10358
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10359
|
+
}
|
|
10360
|
+
},
|
|
10361
|
+
{
|
|
10362
|
+
"kind": "method",
|
|
10363
|
+
"name": "applyFilteredY",
|
|
10364
|
+
"privacy": "private",
|
|
10365
|
+
"inheritedFrom": {
|
|
10366
|
+
"name": "PoiBase",
|
|
10367
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10368
|
+
}
|
|
10369
|
+
},
|
|
10370
|
+
{
|
|
10371
|
+
"kind": "method",
|
|
10372
|
+
"name": "syncYFilterTarget",
|
|
10373
|
+
"privacy": "private",
|
|
10374
|
+
"parameters": [
|
|
10375
|
+
{
|
|
10376
|
+
"name": "nextY",
|
|
10377
|
+
"type": {
|
|
10378
|
+
"text": "number"
|
|
10379
|
+
}
|
|
10380
|
+
}
|
|
10381
|
+
],
|
|
10382
|
+
"inheritedFrom": {
|
|
10383
|
+
"name": "PoiBase",
|
|
10384
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10385
|
+
}
|
|
10386
|
+
},
|
|
9518
10387
|
{
|
|
9519
10388
|
"kind": "method",
|
|
9520
10389
|
"name": "markXMoving",
|
|
@@ -9726,7 +10595,7 @@
|
|
|
9726
10595
|
"text": "number"
|
|
9727
10596
|
},
|
|
9728
10597
|
"privacy": "protected",
|
|
9729
|
-
"description": "Public `y` normalized as the target Y input.",
|
|
10598
|
+
"description": "Public `y` normalized as the target Y input, after the y filter.",
|
|
9730
10599
|
"readonly": true,
|
|
9731
10600
|
"inheritedFrom": {
|
|
9732
10601
|
"name": "PoiBase",
|
|
@@ -9761,49 +10630,11 @@
|
|
|
9761
10630
|
"module": "src/ar/poi/poi-base.ts"
|
|
9762
10631
|
}
|
|
9763
10632
|
},
|
|
9764
|
-
{
|
|
9765
|
-
"kind": "field",
|
|
9766
|
-
"name": "resolvedHeaderState",
|
|
9767
|
-
"type": {
|
|
9768
|
-
"text": "ObcPoiHeaderState"
|
|
9769
|
-
},
|
|
9770
|
-
"privacy": "protected",
|
|
9771
|
-
"readonly": true,
|
|
9772
|
-
"inheritedFrom": {
|
|
9773
|
-
"name": "PoiBase",
|
|
9774
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
9775
|
-
}
|
|
9776
|
-
},
|
|
9777
10633
|
{
|
|
9778
10634
|
"kind": "method",
|
|
9779
10635
|
"name": "syncHeaderContent",
|
|
9780
10636
|
"privacy": "private",
|
|
9781
|
-
"
|
|
9782
|
-
"name": "PoiBase",
|
|
9783
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
9784
|
-
}
|
|
9785
|
-
},
|
|
9786
|
-
{
|
|
9787
|
-
"kind": "method",
|
|
9788
|
-
"name": "applyHeaderState",
|
|
9789
|
-
"privacy": "private",
|
|
9790
|
-
"parameters": [
|
|
9791
|
-
{
|
|
9792
|
-
"name": "root",
|
|
9793
|
-
"type": {
|
|
9794
|
-
"text": "ParentNode"
|
|
9795
|
-
}
|
|
9796
|
-
}
|
|
9797
|
-
],
|
|
9798
|
-
"inheritedFrom": {
|
|
9799
|
-
"name": "PoiBase",
|
|
9800
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
9801
|
-
}
|
|
9802
|
-
},
|
|
9803
|
-
{
|
|
9804
|
-
"kind": "method",
|
|
9805
|
-
"name": "syncHeaderState",
|
|
9806
|
-
"privacy": "private",
|
|
10637
|
+
"description": "Auto-enable `hasHeader` when the consumer slots header content directly\n(outside a stack, which manages `hasHeader` itself). Header elements stay\nin the consumer's light DOM and reach the inner button through the\n`<slot name=\"header\">` forwarding chain; their `state` is synced by\n`obc-poi-button`.",
|
|
9807
10638
|
"inheritedFrom": {
|
|
9808
10639
|
"name": "PoiBase",
|
|
9809
10640
|
"module": "src/ar/poi/poi-base.ts"
|
|
@@ -9998,23 +10829,40 @@
|
|
|
9998
10829
|
},
|
|
9999
10830
|
{
|
|
10000
10831
|
"name": "y",
|
|
10832
|
+
"default": "DEFAULT_LINE_LENGTH_PX",
|
|
10833
|
+
"fieldName": "y",
|
|
10834
|
+
"inheritedFrom": {
|
|
10835
|
+
"name": "PoiBase",
|
|
10836
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10837
|
+
}
|
|
10838
|
+
},
|
|
10839
|
+
{
|
|
10840
|
+
"name": "button-y",
|
|
10001
10841
|
"type": {
|
|
10002
|
-
"text": "number"
|
|
10842
|
+
"text": "number | null"
|
|
10003
10843
|
},
|
|
10004
|
-
"default": "
|
|
10005
|
-
"fieldName": "
|
|
10844
|
+
"default": "0",
|
|
10845
|
+
"fieldName": "buttonY",
|
|
10846
|
+
"inheritedFrom": {
|
|
10847
|
+
"name": "PoiBase",
|
|
10848
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
10849
|
+
}
|
|
10850
|
+
},
|
|
10851
|
+
{
|
|
10852
|
+
"name": "x-filter-cutoff-hz",
|
|
10853
|
+
"default": "X_FILTER_CUTOFF_HZ",
|
|
10854
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `x`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `x` is applied directly.",
|
|
10855
|
+
"fieldName": "xFilterCutoffHz",
|
|
10006
10856
|
"inheritedFrom": {
|
|
10007
10857
|
"name": "PoiBase",
|
|
10008
10858
|
"module": "src/ar/poi/poi-base.ts"
|
|
10009
10859
|
}
|
|
10010
10860
|
},
|
|
10011
10861
|
{
|
|
10012
|
-
"name": "
|
|
10013
|
-
"
|
|
10014
|
-
|
|
10015
|
-
|
|
10016
|
-
"default": "0",
|
|
10017
|
-
"fieldName": "buttonY",
|
|
10862
|
+
"name": "y-filter-cutoff-hz",
|
|
10863
|
+
"default": "Y_FILTER_CUTOFF_HZ",
|
|
10864
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `y`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `y` is applied directly.",
|
|
10865
|
+
"fieldName": "yFilterCutoffHz",
|
|
10018
10866
|
"inheritedFrom": {
|
|
10019
10867
|
"name": "PoiBase",
|
|
10020
10868
|
"module": "src/ar/poi/poi-base.ts"
|
|
@@ -10168,7 +11016,7 @@
|
|
|
10168
11016
|
"declarations": [
|
|
10169
11017
|
{
|
|
10170
11018
|
"kind": "class",
|
|
10171
|
-
"description": "`<obc-poi-vessel>` - Vessel marker variant with layout positioning and layer integration.\n\nExtends `PoiBase` to provide the \"vessel\" variant of the POI system.\nRenders `<obc-poi>` with a slotted `<obc-poi-button-vessel
|
|
11019
|
+
"description": "`<obc-poi-vessel>` - Vessel marker variant with layout positioning and layer integration.\n\nExtends `PoiBase` to provide the \"vessel\" variant of the POI system.\nRenders `<obc-poi>` with a slotted `<obc-poi-button-vessel>`.\nSee the \"Coordinate Model\" section in `PoiBase` (poi-base.ts) for how `x`, `y`, and `buttonY` position the marker.",
|
|
10172
11020
|
"name": "ObcPoiVessel",
|
|
10173
11021
|
"slots": [
|
|
10174
11022
|
{
|
|
@@ -10468,10 +11316,7 @@
|
|
|
10468
11316
|
{
|
|
10469
11317
|
"kind": "field",
|
|
10470
11318
|
"name": "y",
|
|
10471
|
-
"
|
|
10472
|
-
"text": "number"
|
|
10473
|
-
},
|
|
10474
|
-
"default": "192",
|
|
11319
|
+
"default": "DEFAULT_LINE_LENGTH_PX",
|
|
10475
11320
|
"attribute": "y",
|
|
10476
11321
|
"inheritedFrom": {
|
|
10477
11322
|
"name": "PoiBase",
|
|
@@ -10491,6 +11336,34 @@
|
|
|
10491
11336
|
"module": "src/ar/poi/poi-base.ts"
|
|
10492
11337
|
}
|
|
10493
11338
|
},
|
|
11339
|
+
{
|
|
11340
|
+
"kind": "field",
|
|
11341
|
+
"name": "xFilterCutoffHz",
|
|
11342
|
+
"default": "16",
|
|
11343
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `x`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `x` is applied directly.",
|
|
11344
|
+
"attribute": "x-filter-cutoff-hz",
|
|
11345
|
+
"type": {
|
|
11346
|
+
"text": "number"
|
|
11347
|
+
},
|
|
11348
|
+
"inheritedFrom": {
|
|
11349
|
+
"name": "PoiBase",
|
|
11350
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11351
|
+
}
|
|
11352
|
+
},
|
|
11353
|
+
{
|
|
11354
|
+
"kind": "field",
|
|
11355
|
+
"name": "yFilterCutoffHz",
|
|
11356
|
+
"default": "16",
|
|
11357
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `y`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `y` is applied directly.",
|
|
11358
|
+
"attribute": "y-filter-cutoff-hz",
|
|
11359
|
+
"type": {
|
|
11360
|
+
"text": "number"
|
|
11361
|
+
},
|
|
11362
|
+
"inheritedFrom": {
|
|
11363
|
+
"name": "PoiBase",
|
|
11364
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11365
|
+
}
|
|
11366
|
+
},
|
|
10494
11367
|
{
|
|
10495
11368
|
"kind": "field",
|
|
10496
11369
|
"name": "fixedTarget",
|
|
@@ -10658,6 +11531,97 @@
|
|
|
10658
11531
|
"module": "src/ar/poi/poi-base.ts"
|
|
10659
11532
|
}
|
|
10660
11533
|
},
|
|
11534
|
+
{
|
|
11535
|
+
"kind": "field",
|
|
11536
|
+
"name": "resolvedXFilterCutoffHz",
|
|
11537
|
+
"type": {
|
|
11538
|
+
"text": "number"
|
|
11539
|
+
},
|
|
11540
|
+
"privacy": "private",
|
|
11541
|
+
"readonly": true,
|
|
11542
|
+
"inheritedFrom": {
|
|
11543
|
+
"name": "PoiBase",
|
|
11544
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11545
|
+
}
|
|
11546
|
+
},
|
|
11547
|
+
{
|
|
11548
|
+
"kind": "field",
|
|
11549
|
+
"name": "filteredY",
|
|
11550
|
+
"type": {
|
|
11551
|
+
"text": "number"
|
|
11552
|
+
},
|
|
11553
|
+
"privacy": "private",
|
|
11554
|
+
"default": "0",
|
|
11555
|
+
"inheritedFrom": {
|
|
11556
|
+
"name": "PoiBase",
|
|
11557
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11558
|
+
}
|
|
11559
|
+
},
|
|
11560
|
+
{
|
|
11561
|
+
"kind": "field",
|
|
11562
|
+
"name": "yFilterTarget",
|
|
11563
|
+
"type": {
|
|
11564
|
+
"text": "number"
|
|
11565
|
+
},
|
|
11566
|
+
"privacy": "private",
|
|
11567
|
+
"default": "0",
|
|
11568
|
+
"inheritedFrom": {
|
|
11569
|
+
"name": "PoiBase",
|
|
11570
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11571
|
+
}
|
|
11572
|
+
},
|
|
11573
|
+
{
|
|
11574
|
+
"kind": "field",
|
|
11575
|
+
"name": "yFilterInitialized",
|
|
11576
|
+
"type": {
|
|
11577
|
+
"text": "boolean"
|
|
11578
|
+
},
|
|
11579
|
+
"privacy": "private",
|
|
11580
|
+
"default": "false",
|
|
11581
|
+
"inheritedFrom": {
|
|
11582
|
+
"name": "PoiBase",
|
|
11583
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11584
|
+
}
|
|
11585
|
+
},
|
|
11586
|
+
{
|
|
11587
|
+
"kind": "field",
|
|
11588
|
+
"name": "lastYFilterTimestampMs",
|
|
11589
|
+
"type": {
|
|
11590
|
+
"text": "number"
|
|
11591
|
+
},
|
|
11592
|
+
"privacy": "private",
|
|
11593
|
+
"default": "0",
|
|
11594
|
+
"inheritedFrom": {
|
|
11595
|
+
"name": "PoiBase",
|
|
11596
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11597
|
+
}
|
|
11598
|
+
},
|
|
11599
|
+
{
|
|
11600
|
+
"kind": "field",
|
|
11601
|
+
"name": "yFilterRaf",
|
|
11602
|
+
"type": {
|
|
11603
|
+
"text": "number"
|
|
11604
|
+
},
|
|
11605
|
+
"privacy": "private",
|
|
11606
|
+
"default": "0",
|
|
11607
|
+
"inheritedFrom": {
|
|
11608
|
+
"name": "PoiBase",
|
|
11609
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11610
|
+
}
|
|
11611
|
+
},
|
|
11612
|
+
{
|
|
11613
|
+
"kind": "field",
|
|
11614
|
+
"name": "resolvedYFilterCutoffHz",
|
|
11615
|
+
"type": {
|
|
11616
|
+
"text": "number"
|
|
11617
|
+
},
|
|
11618
|
+
"privacy": "private",
|
|
11619
|
+
"readonly": true,
|
|
11620
|
+
"inheritedFrom": {
|
|
11621
|
+
"name": "PoiBase",
|
|
11622
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11623
|
+
}
|
|
11624
|
+
},
|
|
10661
11625
|
{
|
|
10662
11626
|
"kind": "method",
|
|
10663
11627
|
"name": "dispatchLayoutChange",
|
|
@@ -10693,6 +11657,41 @@
|
|
|
10693
11657
|
"module": "src/ar/poi/poi-base.ts"
|
|
10694
11658
|
}
|
|
10695
11659
|
},
|
|
11660
|
+
{
|
|
11661
|
+
"kind": "field",
|
|
11662
|
+
"name": "stepYFilter",
|
|
11663
|
+
"privacy": "private",
|
|
11664
|
+
"inheritedFrom": {
|
|
11665
|
+
"name": "PoiBase",
|
|
11666
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11667
|
+
}
|
|
11668
|
+
},
|
|
11669
|
+
{
|
|
11670
|
+
"kind": "method",
|
|
11671
|
+
"name": "applyFilteredY",
|
|
11672
|
+
"privacy": "private",
|
|
11673
|
+
"inheritedFrom": {
|
|
11674
|
+
"name": "PoiBase",
|
|
11675
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11676
|
+
}
|
|
11677
|
+
},
|
|
11678
|
+
{
|
|
11679
|
+
"kind": "method",
|
|
11680
|
+
"name": "syncYFilterTarget",
|
|
11681
|
+
"privacy": "private",
|
|
11682
|
+
"parameters": [
|
|
11683
|
+
{
|
|
11684
|
+
"name": "nextY",
|
|
11685
|
+
"type": {
|
|
11686
|
+
"text": "number"
|
|
11687
|
+
}
|
|
11688
|
+
}
|
|
11689
|
+
],
|
|
11690
|
+
"inheritedFrom": {
|
|
11691
|
+
"name": "PoiBase",
|
|
11692
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
11693
|
+
}
|
|
11694
|
+
},
|
|
10696
11695
|
{
|
|
10697
11696
|
"kind": "method",
|
|
10698
11697
|
"name": "markXMoving",
|
|
@@ -10904,7 +11903,7 @@
|
|
|
10904
11903
|
"text": "number"
|
|
10905
11904
|
},
|
|
10906
11905
|
"privacy": "protected",
|
|
10907
|
-
"description": "Public `y` normalized as the target Y input.",
|
|
11906
|
+
"description": "Public `y` normalized as the target Y input, after the y filter.",
|
|
10908
11907
|
"readonly": true,
|
|
10909
11908
|
"inheritedFrom": {
|
|
10910
11909
|
"name": "PoiBase",
|
|
@@ -10939,49 +11938,11 @@
|
|
|
10939
11938
|
"module": "src/ar/poi/poi-base.ts"
|
|
10940
11939
|
}
|
|
10941
11940
|
},
|
|
10942
|
-
{
|
|
10943
|
-
"kind": "field",
|
|
10944
|
-
"name": "resolvedHeaderState",
|
|
10945
|
-
"type": {
|
|
10946
|
-
"text": "ObcPoiHeaderState"
|
|
10947
|
-
},
|
|
10948
|
-
"privacy": "protected",
|
|
10949
|
-
"readonly": true,
|
|
10950
|
-
"inheritedFrom": {
|
|
10951
|
-
"name": "PoiBase",
|
|
10952
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
10953
|
-
}
|
|
10954
|
-
},
|
|
10955
11941
|
{
|
|
10956
11942
|
"kind": "method",
|
|
10957
11943
|
"name": "syncHeaderContent",
|
|
10958
11944
|
"privacy": "private",
|
|
10959
|
-
"
|
|
10960
|
-
"name": "PoiBase",
|
|
10961
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
10962
|
-
}
|
|
10963
|
-
},
|
|
10964
|
-
{
|
|
10965
|
-
"kind": "method",
|
|
10966
|
-
"name": "applyHeaderState",
|
|
10967
|
-
"privacy": "private",
|
|
10968
|
-
"parameters": [
|
|
10969
|
-
{
|
|
10970
|
-
"name": "root",
|
|
10971
|
-
"type": {
|
|
10972
|
-
"text": "ParentNode"
|
|
10973
|
-
}
|
|
10974
|
-
}
|
|
10975
|
-
],
|
|
10976
|
-
"inheritedFrom": {
|
|
10977
|
-
"name": "PoiBase",
|
|
10978
|
-
"module": "src/ar/poi/poi-base.ts"
|
|
10979
|
-
}
|
|
10980
|
-
},
|
|
10981
|
-
{
|
|
10982
|
-
"kind": "method",
|
|
10983
|
-
"name": "syncHeaderState",
|
|
10984
|
-
"privacy": "private",
|
|
11945
|
+
"description": "Auto-enable `hasHeader` when the consumer slots header content directly\n(outside a stack, which manages `hasHeader` itself). Header elements stay\nin the consumer's light DOM and reach the inner button through the\n`<slot name=\"header\">` forwarding chain; their `state` is synced by\n`obc-poi-button`.",
|
|
10985
11946
|
"inheritedFrom": {
|
|
10986
11947
|
"name": "PoiBase",
|
|
10987
11948
|
"module": "src/ar/poi/poi-base.ts"
|
|
@@ -11183,10 +12144,7 @@
|
|
|
11183
12144
|
},
|
|
11184
12145
|
{
|
|
11185
12146
|
"name": "y",
|
|
11186
|
-
"
|
|
11187
|
-
"text": "number"
|
|
11188
|
-
},
|
|
11189
|
-
"default": "192",
|
|
12147
|
+
"default": "DEFAULT_LINE_LENGTH_PX",
|
|
11190
12148
|
"fieldName": "y",
|
|
11191
12149
|
"inheritedFrom": {
|
|
11192
12150
|
"name": "PoiBase",
|
|
@@ -11205,6 +12163,26 @@
|
|
|
11205
12163
|
"module": "src/ar/poi/poi-base.ts"
|
|
11206
12164
|
}
|
|
11207
12165
|
},
|
|
12166
|
+
{
|
|
12167
|
+
"name": "x-filter-cutoff-hz",
|
|
12168
|
+
"default": "X_FILTER_CUTOFF_HZ",
|
|
12169
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `x`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `x` is applied directly.",
|
|
12170
|
+
"fieldName": "xFilterCutoffHz",
|
|
12171
|
+
"inheritedFrom": {
|
|
12172
|
+
"name": "PoiBase",
|
|
12173
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
12174
|
+
}
|
|
12175
|
+
},
|
|
12176
|
+
{
|
|
12177
|
+
"name": "y-filter-cutoff-hz",
|
|
12178
|
+
"default": "Y_FILTER_CUTOFF_HZ",
|
|
12179
|
+
"description": "Cutoff frequency (Hz) of the built-in low-pass filter applied to `y`. Lower values smooth noisy input more aggressively; `0` or a negative value disables filtering so `y` is applied directly.",
|
|
12180
|
+
"fieldName": "yFilterCutoffHz",
|
|
12181
|
+
"inheritedFrom": {
|
|
12182
|
+
"name": "PoiBase",
|
|
12183
|
+
"module": "src/ar/poi/poi-base.ts"
|
|
12184
|
+
}
|
|
12185
|
+
},
|
|
11208
12186
|
{
|
|
11209
12187
|
"name": "fixed-target",
|
|
11210
12188
|
"type": {
|
|
@@ -11345,7 +12323,7 @@
|
|
|
11345
12323
|
"declarations": [
|
|
11346
12324
|
{
|
|
11347
12325
|
"kind": "class",
|
|
11348
|
-
"description": "`<obc-poi>` - Composite marker component that renders a target button with connector and pointer visuals.\n\n## Overview\nCombines `obc-poi-button`, `obc-poi-line`, and optional pointer visuals to display\ninteractive marker/callout targets in line, offset, point, or outside modes.\nKeywords: marker, callout, pin, label, target, pointer.\n\n## Features/Variants\n\nConfiguration defaults and behavior:\n- `type` (default: `line`):\n - `line`: renders a vertical connector line from button to target.\n - `offset`: renders a bent connector using `targetOffsetX - buttonOffsetX`.\n - `point`: suppresses long connector behavior (line can collapse/skip based on state).\n - `outside`: suppresses connector line; outside arrow is rendered when `hasPointer` is true.\n- `value` (default: `unchecked`):\n - `unchecked`: default visual state.\n - `checked`: selected-like visual and pointer behavior.\n - `activated`: activated button visual state with selected-like pointer behavior.\n - `overlapped`: compact overlap visual state.\n- `overlapOpaque` (default: `false`): controls overlapped opacity mode (`false` = translucent, `true` = opaque).\n- `state` (default: `enabled`):\n - `enabled`: neutral alert ring and regular line style.\n - `caution`/`warning`/`alarm`: applies alert-specific button/line styling.\n - In `enabled`, pointer type resolution defaults to point.\n- `selected` (default: `false`): enables selected emphasis semantics (for example selected line style when not in alert state).\n- `hasPointer` (default: `false`):\n - For `line`/`offset`/`point`, pointer visuals are shown when `hasPointer` is true.\n - Checked-like values also force inline pointer visuals for non-`outside` types.\n - For `outside`, `hasPointer` controls outside-arrow visibility.\n- `pointerType` (default: `null`, enum `point | button | camera`):\n - Used when not in checked-like state and not `enabled`.\n - Otherwise resolves to `point` for consistent selected/enabled behavior.\n- `pointerState` (default: `null`, enum `regular | selected | active | uncertain`):\n - Checked-like non-`outside` values resolve to `selected`.\n - Otherwise falls back to provided `pointerState` or `regular`.\n\nMotion and layout notes:\n- `animatePosition` (default: `false`): when true, enables short position transition timing for line/pointer movement.\n- `x` (default: `0`): host horizontal position; sets `--obc-poi-x` as `${x}px`.\n- `y` (default: `
|
|
12326
|
+
"description": "`<obc-poi>` - Composite marker component that renders a target button with connector and pointer visuals.\n\n## Overview\nCombines `obc-poi-button`, `obc-poi-line`, and optional pointer visuals to display\ninteractive marker/callout targets in line, offset, point, or outside modes.\nKeywords: marker, callout, pin, label, target, pointer.\n\n## Features/Variants\n\nConfiguration defaults and behavior:\n- `type` (default: `line`):\n - `line`: renders a vertical connector line from button to target.\n - `offset`: renders a bent connector using `targetOffsetX - buttonOffsetX`.\n - `point`: suppresses long connector behavior (line can collapse/skip based on state).\n - `outside`: suppresses connector line; outside arrow is rendered when `hasPointer` is true.\n- `value` (default: `unchecked`):\n - `unchecked`: default visual state.\n - `checked`: selected-like visual and pointer behavior.\n - `activated`: activated button visual state with selected-like pointer behavior.\n - `overlapped`: compact overlap visual state.\n- `overlapOpaque` (default: `false`): controls overlapped opacity mode (`false` = translucent, `true` = opaque).\n- `state` (default: `enabled`):\n - `enabled`: neutral alert ring and regular line style.\n - `caution`/`warning`/`alarm`: applies alert-specific button/line styling.\n - In `enabled`, pointer type resolution defaults to point.\n- `selected` (default: `false`): enables selected emphasis semantics (for example selected line style when not in alert state).\n- `hasPointer` (default: `false`):\n - For `line`/`offset`/`point`, pointer visuals are shown when `hasPointer` is true.\n - Checked-like values also force inline pointer visuals for non-`outside` types.\n - For `outside`, `hasPointer` controls outside-arrow visibility.\n- `pointerType` (default: `null`, enum `point | button | camera`):\n - Used when not in checked-like state and not `enabled`.\n - Otherwise resolves to `point` for consistent selected/enabled behavior.\n- `pointerState` (default: `null`, enum `regular | selected | active | uncertain`):\n - Checked-like non-`outside` values resolve to `selected`.\n - Otherwise falls back to provided `pointerState` or `regular`.\n\nMotion and layout notes:\n- `animatePosition` (default: `false`): when true, enables short position transition timing for line/pointer movement.\n- `x` (default: `0`): host horizontal position; sets `--obc-poi-x` as `${x}px`.\n- `y` (default: `192`): absolute local target Y; non-finite values fall back to `0` in geometry calculations. The default is shared with the top-level POI variants (`DEFAULT_LINE_LENGTH_PX`).\n- `buttonY` (default: `0`): when `fixedTarget=false`, anchors the button at its local Y while the target is derived below it from `y`; when `fixedTarget=true`, preserves the legacy host-anchor behavior.\n- `buttonOffsetX`/`targetOffsetX` (defaults: `0`/`0`): define connector bend delta via `targetOffsetX - buttonOffsetX`.\n- `boxWidth`/`boxHeight` (defaults: `null`/`null`): optional pointer frame size extras; invalid/non-finite values are ignored.\n- `outsideAngle` (default: `315`): controls outside-arrow direction in `outside` mode.\n\n## Usage Guidelines\n\n- Use `type=\"line\"` or `type=\"offset\"` when the button should connect to a remote target.\n- Use `type=\"point\"` for near-target placements where connector emphasis should be minimal.\n- Use `type=\"outside\"` with `hasPointer` for off-screen or directional guidance.\n- Keep `value`, `state`, and `selected` aligned with domain state so visual semantics stay consistent.\n- Provide finite numbers for layout props (`x`, `y`, `buttonY`, offsets) for predictable placement.\n\n## Slots/Content\n\n- Default slot: Main icon/content rendered inside `obc-poi-button`.\n- `button`: Optional custom button element replacing the default `obc-poi-button`.\n- `header`: Optional header content, forwarded into the default `obc-poi-button` through a `<slot name=\"header\">` chain. Content stays in the consumer's light DOM. When a custom `button` is slotted, place header content directly inside it instead.\n\n## Events\n\nThis component does not emit custom events.\n\n## Best Practices\n\n- Pass finite numeric values for layout properties to avoid fallback-to-zero behavior.\n- Enable `animatePosition` only for intentional motion transitions and moving targets.\n- Prefer enum values for `type`, `value`, `state`, `pointerType`, and `pointerState`.\n\n## Example\n\n```html\n<obc-poi type=\"line\" value=\"unchecked\" state=\"enabled\">\n <obi-placeholder></obi-placeholder>\n</obc-poi>\n```",
|
|
11349
12327
|
"name": "ObcPoi",
|
|
11350
12328
|
"slots": [
|
|
11351
12329
|
{
|
|
@@ -11357,7 +12335,7 @@
|
|
|
11357
12335
|
"name": "button"
|
|
11358
12336
|
},
|
|
11359
12337
|
{
|
|
11360
|
-
"description": "Optional header content,
|
|
12338
|
+
"description": "Optional header content, forwarded into the default `obc-poi-button` via a `<slot name=\"header\">` chain.",
|
|
11361
12339
|
"name": "header"
|
|
11362
12340
|
}
|
|
11363
12341
|
],
|
|
@@ -11499,7 +12477,7 @@
|
|
|
11499
12477
|
{
|
|
11500
12478
|
"kind": "field",
|
|
11501
12479
|
"name": "y",
|
|
11502
|
-
"default": "
|
|
12480
|
+
"default": "192",
|
|
11503
12481
|
"attribute": "y",
|
|
11504
12482
|
"type": {
|
|
11505
12483
|
"text": "number"
|
|
@@ -11581,19 +12559,6 @@
|
|
|
11581
12559
|
"default": "false",
|
|
11582
12560
|
"attribute": "animate-position"
|
|
11583
12561
|
},
|
|
11584
|
-
{
|
|
11585
|
-
"kind": "field",
|
|
11586
|
-
"name": "headerObserver",
|
|
11587
|
-
"type": {
|
|
11588
|
-
"text": "MutationObserver | undefined"
|
|
11589
|
-
},
|
|
11590
|
-
"privacy": "private"
|
|
11591
|
-
},
|
|
11592
|
-
{
|
|
11593
|
-
"kind": "method",
|
|
11594
|
-
"name": "setupHeaderObserver",
|
|
11595
|
-
"privacy": "private"
|
|
11596
|
-
},
|
|
11597
12562
|
{
|
|
11598
12563
|
"kind": "method",
|
|
11599
12564
|
"name": "updatePosition",
|
|
@@ -11626,15 +12591,6 @@
|
|
|
11626
12591
|
"privacy": "protected",
|
|
11627
12592
|
"readonly": true
|
|
11628
12593
|
},
|
|
11629
|
-
{
|
|
11630
|
-
"kind": "field",
|
|
11631
|
-
"name": "resolvedHeaderState",
|
|
11632
|
-
"type": {
|
|
11633
|
-
"text": "ObcPoiHeaderState"
|
|
11634
|
-
},
|
|
11635
|
-
"privacy": "private",
|
|
11636
|
-
"readonly": true
|
|
11637
|
-
},
|
|
11638
12594
|
{
|
|
11639
12595
|
"kind": "field",
|
|
11640
12596
|
"name": "lineStyle",
|
|
@@ -11791,29 +12747,6 @@
|
|
|
11791
12747
|
}
|
|
11792
12748
|
]
|
|
11793
12749
|
},
|
|
11794
|
-
{
|
|
11795
|
-
"kind": "method",
|
|
11796
|
-
"name": "syncFallbackButtonHeaderContent",
|
|
11797
|
-
"privacy": "private"
|
|
11798
|
-
},
|
|
11799
|
-
{
|
|
11800
|
-
"kind": "method",
|
|
11801
|
-
"name": "applyHeaderState",
|
|
11802
|
-
"privacy": "private",
|
|
11803
|
-
"parameters": [
|
|
11804
|
-
{
|
|
11805
|
-
"name": "root",
|
|
11806
|
-
"type": {
|
|
11807
|
-
"text": "ParentNode"
|
|
11808
|
-
}
|
|
11809
|
-
}
|
|
11810
|
-
]
|
|
11811
|
-
},
|
|
11812
|
-
{
|
|
11813
|
-
"kind": "method",
|
|
11814
|
-
"name": "syncAttachedHeaderState",
|
|
11815
|
-
"privacy": "private"
|
|
11816
|
-
},
|
|
11817
12750
|
{
|
|
11818
12751
|
"kind": "method",
|
|
11819
12752
|
"name": "syncSlottedButtonProps",
|
|
@@ -12035,6 +12968,14 @@
|
|
|
12035
12968
|
"module": "src/ar/poi/poi.ts"
|
|
12036
12969
|
}
|
|
12037
12970
|
},
|
|
12971
|
+
{
|
|
12972
|
+
"kind": "js",
|
|
12973
|
+
"name": "DEFAULT_LINE_LENGTH_PX",
|
|
12974
|
+
"declaration": {
|
|
12975
|
+
"name": "DEFAULT_LINE_LENGTH_PX",
|
|
12976
|
+
"module": "src/ar/poi/poi.ts"
|
|
12977
|
+
}
|
|
12978
|
+
},
|
|
12038
12979
|
{
|
|
12039
12980
|
"kind": "js",
|
|
12040
12981
|
"name": "ObcPoi",
|