@oicl/openbridge-webcomponents 2.0.0-next.45 → 2.0.0-next.47

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.
Files changed (37) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +14869 -14889
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +74 -81
  4. package/dist/components/badge/badge.css.js +15 -15
  5. package/dist/navigation-instruments/compass/compass.d.ts +3 -3
  6. package/dist/navigation-instruments/compass/compass.d.ts.map +1 -1
  7. package/dist/navigation-instruments/compass/compass.js +3 -3
  8. package/dist/navigation-instruments/compass/compass.js.map +1 -1
  9. package/dist/navigation-instruments/compass-indicator/compass-indicator.d.ts +12 -0
  10. package/dist/navigation-instruments/compass-indicator/compass-indicator.d.ts.map +1 -1
  11. package/dist/navigation-instruments/compass-indicator/compass-indicator.js +9 -1
  12. package/dist/navigation-instruments/compass-indicator/compass-indicator.js.map +1 -1
  13. package/dist/navigation-instruments/velocity-projection-plot/velocity-projection-plot.d.ts +4 -4
  14. package/dist/navigation-instruments/velocity-projection-plot/velocity-projection-plot.d.ts.map +1 -1
  15. package/dist/navigation-instruments/velocity-projection-plot/velocity-projection-plot.js +15 -14
  16. package/dist/navigation-instruments/velocity-projection-plot/velocity-projection-plot.js.map +1 -1
  17. package/dist/navigation-instruments/watch/environment.d.ts +39 -1
  18. package/dist/navigation-instruments/watch/environment.d.ts.map +1 -1
  19. package/dist/navigation-instruments/watch/environment.js +71 -88
  20. package/dist/navigation-instruments/watch/environment.js.map +1 -1
  21. package/dist/navigation-instruments/watch/watch.d.ts +1 -1
  22. package/dist/navigation-instruments/watch/watch.d.ts.map +1 -1
  23. package/dist/navigation-instruments/watch/watch.js +4 -4
  24. package/dist/navigation-instruments/watch/watch.js.map +1 -1
  25. package/dist/navigation-instruments/wind/wind.d.ts +1 -1
  26. package/dist/navigation-instruments/wind/wind.d.ts.map +1 -1
  27. package/dist/navigation-instruments/wind/wind.js +3 -3
  28. package/dist/navigation-instruments/wind/wind.js.map +1 -1
  29. package/dist/navigation-instruments/wind-indicator/wind-indicator.d.ts +63 -9
  30. package/dist/navigation-instruments/wind-indicator/wind-indicator.d.ts.map +1 -1
  31. package/dist/navigation-instruments/wind-indicator/wind-indicator.js +57 -1995
  32. package/dist/navigation-instruments/wind-indicator/wind-indicator.js.map +1 -1
  33. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.d.ts +1 -1
  34. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.d.ts.map +1 -1
  35. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.js +4 -4
  36. package/dist/navigation-instruments/wind-propulsion/wind-propulsion.js.map +1 -1
  37. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wind-indicator.js","sources":["../../../src/navigation-instruments/wind-indicator/wind-indicator.ts"],"sourcesContent":["import {LitElement, css, html, svg, type SVGTemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {customElement} from '../../decorator.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport '../../icons/index.js';\n\nexport enum WindIndicatorType {\n arrow = 'arrow',\n shaft = 'shaft',\n labeled = 'labeled',\n}\n\nexport enum WindIndicatorDirection {\n true = 'true',\n relative = 'relative',\n}\n\nexport enum WindIndicatorPriority {\n regular = 'regular',\n enhanced = 'enhanced',\n}\n\nconst VIEW_SIZE = 48;\nconst CX = VIEW_SIZE / 2;\nconst CY = VIEW_SIZE / 2;\n\nconst FRAME_R = 18;\nconst N_ARROW_BASE_ROTATION_DEG = -25;\n\nconst TRUE_N_ARROW_D =\n 'M23.5912 1.56962L19.5628 7.20939C19.3264 7.54032 19.563 8.00001 19.9696 8.00001H28.0264C28.4331 8.00001 28.6697 7.54032 28.4333 7.20939L24.4049 1.56962C24.2055 1.29045 23.7906 1.29045 23.5912 1.56962Z';\n\nconst SHAFT_TRUE_CIRCLE_TPL = svg`\n <circle\n cx=\"24.0004\"\n cy=\"23.9996\"\n r=\"2\"\n transform=\"rotate(60 24.0004 23.9996)\"\n fill=\"var(--instrument-frame-primary-color)\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n vector-effect=\"non-scaling-stroke\"\n />\n`;\n\nconst SHAFT_TRUE_WIND_BARB_TPL = svg`\n <path\n d=\"M39.613 20.3747C39.7971 20.6935 39.6878 21.1013 39.3689 21.2853C39.0501 21.4694 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.708C37.4876 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3329 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L33.9942 21.3093C34.1782 21.6281 34.069 22.0359 33.7501 22.22C33.4313 22.4041 33.0235 22.2948 32.8395 21.9759L31.8395 20.2439L24.3339 24.5772L23.6672 23.4225L36.3114 16.1224C36.6621 15.9201 37.1103 16.0402 37.3128 16.3907L39.613 20.3747Z\"\n fill=\"currentColor\"\n />\n`;\n\nconst SHAFT_TRUE_WIND_BARB_D_BY_LEVEL: string[] = [\n 'M33.0954 23.7527C35.1680 22.5560 35.8782 19.9058 34.6816 17.8332C33.4850 15.7606 30.8347 15.0504 28.7621 16.2471C26.6895 17.4437 25.9794 20.0939 27.1760 22.1665L26.3099 22.6665C24.8372 20.1156 25.7112 16.8538 28.2621 15.3810C30.8130 13.9083 34.0748 14.7823 35.5476 17.3332C37.0204 19.8841 36.1463 23.1459 33.5954 24.6187C31.0445 26.0914 27.7827 25.2174 26.3099 22.6665L27.1760 22.1665C28.3726 24.2392 31.0228 24.9493 33.0954 23.7527L33.0954 23.7527',\n 'M37.2797 16.3332C37.4638 16.6521 37.3545 17.0598 37.0356 17.2439L24.3339 24.5772L23.6672 23.4225L36.3690 16.0892C36.6878 15.9051 37.0956 16.0143 37.2797 16.3332L37.2797 16.3332',\n 'M37.2797 16.3332C37.4638 16.6521 37.3545 17.0598 37.0356 17.2439L35.3036 18.2439L36.3036 19.9759C36.4877 20.2948 36.3784 20.7025 36.0595 20.8866C35.7407 21.0707 35.3330 20.9615 35.1489 20.6426L34.1489 18.9106L24.3339 24.5772L23.6672 23.4225L36.3690 16.0892C36.6878 15.9051 37.0956 16.0143 37.2797 16.3332L37.2797 16.3332',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L36.3036 19.9759C36.4877 20.2948 36.3784 20.7025 36.0595 20.8866C35.7407 21.0707 35.3330 20.9615 35.1489 20.6426L34.1489 18.9106L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L33.9942 21.3093C34.1783 21.6281 34.0690 22.0359 33.7501 22.2200C33.4313 22.4041 33.0235 22.2948 32.8394 21.9759L31.8395 20.2439L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.613 20.3747C39.7971 20.6935 39.6878 21.1013 39.3689 21.2853C39.0501 21.4694 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.708C37.4876 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3329 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L33.9942 21.3093C34.1782 21.6281 34.069 22.0359 33.7501 22.22C33.4313 22.4041 33.0235 22.2948 32.8395 21.9759L31.8395 20.2439L24.3339 24.5772L23.6672 23.4225L36.3114 16.1224C36.6621 15.9201 37.1103 16.0402 37.3128 16.3907L39.613 20.3747Z',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L34.9941 23.0413C35.1782 23.3602 35.0690 23.7679 34.7501 23.9520C34.4313 24.1361 34.0235 24.0269 33.8394 23.7080L31.8395 20.2439L30.6847 20.9105L31.6847 22.6426C31.8688 22.9615 31.7596 23.3692 31.4407 23.5533C31.1218 23.7374 30.7141 23.6281 30.5300 23.3093L29.5300 21.5772L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L34.9941 23.0413C35.1782 23.3602 35.0690 23.7679 34.7501 23.9520C34.4313 24.1361 34.0235 24.0269 33.8394 23.7080L31.8395 20.2439L30.6847 20.9105L32.6847 24.3747C32.8688 24.6935 32.7596 25.1012 32.4407 25.2853C32.1218 25.4694 31.7141 25.3602 31.5300 25.0413L29.5300 21.5772L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L34.9941 23.0413C35.1782 23.3602 35.0690 23.7679 34.7501 23.9520C34.4313 24.1361 34.0235 24.0269 33.8394 23.7080L31.8395 20.2439L30.6847 20.9105L32.6847 24.3747C32.8688 24.6935 32.7596 25.1012 32.4407 25.2853C32.1218 25.4694 31.7141 25.3602 31.5300 25.0413L29.5300 21.5772L28.3753 22.2439L29.3753 23.9759C29.5594 24.2948 29.4502 24.7025 29.1313 24.8866C28.8124 25.0707 28.4047 24.9615 28.2206 24.6426L27.2206 22.9105L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M37.3380 16.4822L37.3672 16.5654L38.7821 21.5122C38.9920 22.2462 38.0802 22.7726 37.5496 22.2238L34.2758 18.8373L24.3339 24.5772L23.6672 23.4224L36.2952 16.1318C36.6825 15.9082 37.1705 16.0816 37.3380 16.4822L37.3380 16.4822',\n 'M37.3380 16.4822L37.3672 16.5654L38.7821 21.5122C38.9920 22.2462 38.0802 22.7726 37.5496 22.2238L34.2758 18.8373L32.9942 19.5772L34.9942 23.0413C35.1783 23.3602 35.0690 23.7679 34.7502 23.9520C34.4313 24.1361 34.0236 24.0268 33.8395 23.7080L31.8395 20.2438L24.3339 24.5772L23.6672 23.4224L36.2952 16.1318C36.6825 15.9082 37.1705 16.0816 37.3380 16.4822L37.3380 16.4822',\n];\n\nconst SHAFT_RELATIVE_EXPORT_OFFSET_X = -9.9395;\nconst SHAFT_RELATIVE_EXPORT_OFFSET_Y = -9.9404;\nconst SHAFT_RELATIVE_FIGMA_CX = 33.9395;\nconst SHAFT_RELATIVE_FIGMA_CY = 33.9404;\nconst SHAFT_RELATIVE_WIND_7_D =\n 'M41.332 19.8761C41.5987 19.9476 41.757 20.2217 41.6855 20.4885C41.614 20.7552 41.3399 20.9135 41.0731 20.842L38.1754 20.0656L37.9165 21.0315L40.8143 21.8079C41.0811 21.8794 41.2394 22.1536 41.1679 22.4203C41.0964 22.6871 40.8222 22.8453 40.5555 22.7739L37.6577 21.9974L37.3989 22.9633L38.8478 23.3516C39.1145 23.423 39.2728 23.6972 39.2014 23.9639C39.1299 24.2307 38.8557 24.389 38.589 24.3175L37.1401 23.9293L35.4578 30.2078L34.4918 29.949L37.326 19.3719C37.4046 19.0787 37.706 18.9046 37.9993 18.9831L41.332 19.8761Z';\nconst SHAFT_RELATIVE_WIND_ICON_ROTATE_DEG = -157;\nconst SHAFT_RELATIVE_WIND_ICON_TX = 32.0346;\nconst SHAFT_RELATIVE_WIND_ICON_TY = 18.4132;\nconst SHAFT_RELATIVE_WIND_ICON_AXIS_SCALE = 0.4914435;\nconst SHAFT_RELATIVE_WIND_ROTATION_OFFSET_DEG = 309.2663;\nconst SHAFT_RELATIVE_HDG_BG_X = 28.4395;\nconst SHAFT_RELATIVE_HDG_BG_Y = 28.4404;\nconst SHAFT_RELATIVE_HDG_BG_SIZE = 11;\nconst SHAFT_RELATIVE_HDG_TRIANGLE_D =\n 'M33.7061 28.5957C33.7904 28.3887 34.0885 28.3887 34.1728 28.5957L37.9016 37.7605C38.0812 38.2018 37.5854 38.6136 37.1728 38.3657L33.9395 36.4404L30.7061 38.3657C30.2935 38.6136 29.7977 38.2018 29.9773 37.7605L33.7061 28.5957Z';\n\nconst SHAFT_ARROW_OFFSET_DEG = 298;\nconst SHAFT_TRUE_ARROW_OFFSET_DEG = SHAFT_ARROW_OFFSET_DEG;\n\nconst LABELED_TICK_MARKS_TPL = svg`\n <mask\n id=\"obc-wind-indicator-labeled-ticks-mask-0\"\n style=\"mask-type: alpha\"\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"48\"\n height=\"48\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24 40C32.8366 40 40 32.8366 40 24C40 15.1634 32.8366 8 24 8C15.1634 8 8 15.1634 8 24C8 32.8366 15.1634 40 24 40ZM24 36C30.6274 36 36 30.6274 36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36Z\"\n fill=\"white\"\n />\n </mask>\n <g mask=\"url(#obc-wind-indicator-labeled-ticks-mask-0)\">\n <path\n d=\"M24 0V24M24 24L12 3.21539M24 24L3.21539 12M24 24H0M24 24L3.21539 36M24 24L12 44.7846M24 24V48M24 24L36 44.7846M24 24L44.7846 36M24 24H48M24 24L44.7846 12M24 24L36 3.21539\"\n stroke=\"var(--instrument-frame-tertiary-color)\"\n vector-effect=\"non-scaling-stroke\"\n />\n </g>\n <mask\n id=\"obc-wind-indicator-labeled-ticks-mask-1\"\n style=\"mask-type: alpha\"\n maskUnits=\"userSpaceOnUse\"\n x=\"-14\"\n y=\"-14\"\n width=\"76\"\n height=\"76\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24 42C33.9411 42 42 33.9411 42 24C42 14.0589 33.9411 6 24 6C14.0589 6 6 14.0589 6 24C6 33.9411 14.0589 42 24 42ZM24 36C30.6274 36 36 30.6274 36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36Z\"\n fill=\"white\"\n />\n </mask>\n <g mask=\"url(#obc-wind-indicator-labeled-ticks-mask-1)\">\n <path\n d=\"M24 0V24M24 24H0M24 24V48M24 24H48\"\n stroke=\"var(--instrument-frame-tertiary-color)\"\n vector-effect=\"non-scaling-stroke\"\n />\n </g>\n`;\n\nconst LABELED_ARROW_FRAME_R = 17.5;\nconst LABELED_ARROW_SCALE = FRAME_R / LABELED_ARROW_FRAME_R;\nconst LABELED_ARROW_CX = 32.7881;\nconst LABELED_ARROW_CY = 32.7852;\nconst LABELED_ARROW_OFFSET_DEG = 209.7225;\nconst LABELED_ARROW_TPL = svg`\n <circle\n cx=\"22.7845\"\n cy=\"15.4642\"\n r=\"2\"\n transform=\"rotate(150 22.7845 15.4642)\"\n fill=\"currentColor\"\n />\n <path\n d=\"M41.7842 48.373L37.7842 41.4448\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n d=\"M27.7842 24.124L23.7842 17.1958\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n d=\"M44.9277 46.0779L44.3529 52.0069C44.3198 52.3483 43.9605 52.5558 43.6482 52.4137L38.2261 49.947C39.4419 49.5603 40.6351 49.0376 41.7854 48.3735C42.9356 47.7093 43.9849 46.9374 44.9277 46.0779Z\"\n fill=\"currentColor\"\n />\n`;\n\n/**\n * `<obc-wind-indicator>` – A compact wind indicator with a fixed frame and a rotating wind marker.\n *\n * Visualizes a discrete wind `level` using a compact icon plus optional mode layers.\n *\n * ## Features\n *\n * - **Variants:** `type` (`arrow` | `shaft` | `labeled`), `direction` (`true` | `relative`), `priority` (`regular` | `enhanced`).\n * - **Discrete input:** `level` selects the icon state; mapping from real wind to `level` happens outside.\n *\n * ## Usage Guidelines\n *\n * Use when you need a small wind cue next to other compact indicators.\n */\n@customElement('obc-wind-indicator')\nexport class ObcWindIndicator extends LitElement {\n @property({type: String}) type: WindIndicatorType = WindIndicatorType.arrow;\n\n @property({type: String}) direction: WindIndicatorDirection =\n WindIndicatorDirection.true;\n\n @property({type: String}) priority: WindIndicatorPriority =\n WindIndicatorPriority.regular;\n\n @property({type: Number}) level = 0;\n\n /**\n * Rotation of the reference frame (course/heading) in degrees.\n *\n * Used in relative mode to compute the marker rotation as `windFromAngle - rotationAngle`.\n * `0` means north-up.\n */\n @property({type: Number, attribute: 'rotation-angle'}) rotationAngle = 0;\n\n /**\n * Primary wind direction input (wind-from).\n *\n * Represents the direction the wind comes **from** in degrees.\n * - `0` / `360`: wind from north → marker points south (down)\n * - `180`: wind from south → marker points north (up)\n */\n @property({type: Number, attribute: 'wind-from-angle'}) windFromAngle = 0;\n\n /**\n * @deprecated Use `windFromAngle` instead.\n */\n @property({type: Number})\n get angle() {\n return this.windFromAngle;\n }\n set angle(value: number) {\n this.windFromAngle = value;\n }\n\n static override styles = css`\n :host {\n display: flex;\n box-sizing: border-box;\n width: var(--global-size-spacing-touch-target-min);\n height: var(--global-size-spacing-touch-target-min);\n align-items: center;\n justify-content: center;\n aspect-ratio: 1;\n }\n\n svg {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n flex-shrink: 0;\n }\n\n text {\n font: var(--font-family-main);\n }\n\n svg g[data-name='hdg'] path {\n fill: currentColor !important;\n }\n\n svg g[data-name='wind'] path {\n fill: currentColor !important;\n }\n `;\n\n private clampLevel(value: number): number {\n if (!Number.isFinite(value)) {\n return 0;\n }\n return Math.max(0, Math.min(12, Math.round(value)));\n }\n\n private get clampedLevel(): number {\n return this.clampLevel(this.level);\n }\n\n private get accentColor(): string {\n return this.priority === WindIndicatorPriority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : 'var(--instrument-regular-secondary-color)';\n }\n\n private getWindBaseAngle(): number {\n if (this.type === WindIndicatorType.labeled) {\n return this.windFromAngle;\n }\n return this.direction === WindIndicatorDirection.relative\n ? this.windFromAngle - this.rotationAngle\n : this.windFromAngle;\n }\n\n private getWindRotation(offsetDeg = 0): number {\n return this.getWindBaseAngle() + offsetDeg;\n }\n\n private readonly windIconCache = new Map<string, SVGTemplateResult>();\n\n private getWindIconSvg(tagName: string): SVGTemplateResult | null {\n const cached = this.windIconCache.get(tagName);\n if (cached) {\n return cached;\n }\n\n const ctor = customElements.get(tagName) as\n | (new () => {icon?: SVGTemplateResult; iconCss?: SVGTemplateResult})\n | undefined;\n\n if (!ctor) {\n return null;\n }\n\n const instance = new ctor();\n const tpl: SVGTemplateResult | undefined =\n instance.iconCss ?? instance.icon;\n if (!tpl) {\n return null;\n }\n\n this.windIconCache.set(tagName, tpl);\n return tpl;\n }\n\n private getWindIconTagName(\n type: string,\n _direction: string,\n level: number\n ): string {\n const index = Math.max(0, Math.min(12, Math.round(level))) + 1;\n\n if (type === WindIndicatorType.shaft) {\n return `obi-wind-shaft-${index}`;\n }\n\n return `obi-wind-true-${index}`;\n }\n\n private getWindIcon(\n type: string,\n direction: string,\n level: number\n ): SVGTemplateResult | null {\n const tagName = this.getWindIconTagName(type, direction, level);\n return this.getWindIconSvg(tagName);\n }\n\n private renderFrame() {\n return svg`\n <circle\n cx=\"${CX}\"\n cy=\"${CY}\"\n r=\"${FRAME_R}\"\n fill=\"var(--instrument-frame-primary-color)\"\n stroke=\"var(--instrument-frame-tertiary-color)\"\n vector-effect=\"non-scaling-stroke\"\n />\n `;\n }\n\n private renderNorthArrow() {\n if (this.type === WindIndicatorType.labeled) {\n return null;\n }\n\n const baseRotation =\n this.direction === WindIndicatorDirection.relative\n ? this.rotationAngle +\n (this.type === WindIndicatorType.shaft\n ? N_ARROW_BASE_ROTATION_DEG\n : 0)\n : 0;\n\n return svg`\n <g transform=\"rotate(${baseRotation} ${CX} ${CY})\">\n <g transform=\"translate(0 -1.5)\">\n <path\n d=\"${TRUE_N_ARROW_D}\"\n fill=\"var(--instrument-frame-tertiary-color)\"\n />\n </g>\n </g>\n `;\n }\n\n private renderLabeledTickMarks() {\n if (this.type !== WindIndicatorType.labeled) {\n return null;\n }\n\n return LABELED_TICK_MARKS_TPL;\n }\n\n private renderLabeledArrow() {\n if (this.type !== WindIndicatorType.labeled) {\n return null;\n }\n\n const color =\n this.priority === WindIndicatorPriority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : 'var(--element-neutral-color)';\n\n const styles = {color};\n\n return svg`\n <g\n style=${styleMap(styles)}\n transform=\"translate(${CX} ${CY}) rotate(${this.getWindRotation(LABELED_ARROW_OFFSET_DEG)}) scale(${LABELED_ARROW_SCALE}) translate(-${LABELED_ARROW_CX} -${LABELED_ARROW_CY})\"\n >\n ${LABELED_ARROW_TPL}\n </g>\n `;\n }\n\n private renderHdgGroup() {\n if (this.type === WindIndicatorType.labeled) {\n return null;\n }\n\n if (\n this.type === WindIndicatorType.shaft &&\n this.direction === WindIndicatorDirection.relative\n ) {\n const windStyles = {color: this.accentColor};\n const windIcon = this.getWindIcon(\n WindIndicatorType.shaft,\n this.direction,\n this.clampedLevel\n );\n\n const windMarker = svg`\n <g\n style=${styleMap(windStyles)}\n transform=\"translate(${SHAFT_RELATIVE_EXPORT_OFFSET_X} ${SHAFT_RELATIVE_EXPORT_OFFSET_Y})\"\n data-name=\"wind\"\n >\n <g\n transform=\"rotate(${this.getWindRotation(SHAFT_RELATIVE_WIND_ROTATION_OFFSET_DEG)} ${SHAFT_RELATIVE_FIGMA_CX} ${SHAFT_RELATIVE_FIGMA_CY})\"\n >\n ${\n windIcon\n ? svg`<g transform=\"translate(${SHAFT_RELATIVE_WIND_ICON_TX} ${SHAFT_RELATIVE_WIND_ICON_TY}) scale(${SHAFT_RELATIVE_WIND_ICON_AXIS_SCALE}) rotate(${SHAFT_RELATIVE_WIND_ICON_ROTATE_DEG} 12 12) rotate(180 12 12)\">${windIcon}</g>`\n : svg`<path d=\"${SHAFT_RELATIVE_WIND_7_D}\" fill=\"currentColor\" />`\n }\n </g>\n </g>\n `;\n\n return svg`\n <g>\n ${windMarker}\n <g\n transform=\"translate(${SHAFT_RELATIVE_EXPORT_OFFSET_X} ${SHAFT_RELATIVE_EXPORT_OFFSET_Y})\"\n >\n <g\n transform=\"rotate(${this.rotationAngle} ${SHAFT_RELATIVE_FIGMA_CX} ${SHAFT_RELATIVE_FIGMA_CY})\"\n >\n <rect\n x=\"${SHAFT_RELATIVE_HDG_BG_X}\"\n y=\"${SHAFT_RELATIVE_HDG_BG_Y}\"\n width=\"${SHAFT_RELATIVE_HDG_BG_SIZE}\"\n height=\"${SHAFT_RELATIVE_HDG_BG_SIZE}\"\n rx=\"${SHAFT_RELATIVE_HDG_BG_SIZE / 2}\"\n fill=\"var(--instrument-frame-primary-color)\"\n stroke=\"var(--instrument-frame-primary-color)\"\n />\n <path\n d=\"${SHAFT_RELATIVE_HDG_TRIANGLE_D}\"\n fill=\"var(--element-symbol-color)\"\n />\n </g>\n </g>\n </g>\n `;\n }\n\n if (\n this.type === WindIndicatorType.shaft &&\n this.direction === WindIndicatorDirection.true\n ) {\n const styles = {color: this.accentColor};\n return svg`\n <g\n style=${styleMap(styles)}\n transform=\"rotate(${this.getWindRotation(SHAFT_TRUE_ARROW_OFFSET_DEG)} ${CX} ${CY})\"\n data-name=\"hdg\"\n >\n ${\n this.clampedLevel === 7\n ? SHAFT_TRUE_WIND_BARB_TPL\n : svg`<path d=${SHAFT_TRUE_WIND_BARB_D_BY_LEVEL[this.clampedLevel]} fill=\"currentColor\" />`\n }\n ${SHAFT_TRUE_CIRCLE_TPL}\n </g>\n `;\n }\n\n const icon = this.getWindIcon(this.type, this.direction, this.clampedLevel);\n if (!icon) {\n return null;\n }\n const styles = {color: this.accentColor};\n\n return svg`\n <g\n style=${styleMap(styles)}\n transform=\"translate(${CX} ${CY}) rotate(${this.getWindRotation()}) translate(-12 -12)\"\n data-name=\"hdg\"\n >\n ${icon}\n </g>\n `;\n }\n\n private renderLabel() {\n if (this.type !== WindIndicatorType.labeled) {\n return null;\n }\n\n return svg`\n <text\n x=\"${CX}\"\n y=\"${CY + 1}\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n fill=\"var(--element-active-color)\"\n font-size=\"var(--global-typography-ui-label-active-font-size)\"\n font-weight=\"var(--global-typography-ui-label-active-font-weight)\"\n line-height=\"var(--global-typography-ui-label-active-line-height)\"\n >\n ${this.clampedLevel}\n </text>\n `;\n }\n\n override render() {\n return html`\n <svg\n viewBox=\"0 0 ${VIEW_SIZE} ${VIEW_SIZE}\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n ${this.renderFrame()} ${this.renderNorthArrow()}\n ${this.renderHdgGroup()} ${this.renderLabeledTickMarks()}\n ${this.renderLabeledArrow()} ${this.renderLabel()}\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-wind-indicator': ObcWindIndicator;\n }\n}\n"],"names":["WindIndicatorType","WindIndicatorDirection","WindIndicatorPriority","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"wind-indicator.js","sources":["../../../src/navigation-instruments/wind-indicator/wind-indicator.ts"],"sourcesContent":["import {LitElement, css, html, svg, type SVGTemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {customElement} from '../../decorator.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport '../../icons/icon-wind-true-1.js';\nimport '../../icons/icon-wind-true-2.js';\nimport '../../icons/icon-wind-true-3.js';\nimport '../../icons/icon-wind-true-4.js';\nimport '../../icons/icon-wind-true-5.js';\nimport '../../icons/icon-wind-true-6.js';\nimport '../../icons/icon-wind-true-7.js';\nimport '../../icons/icon-wind-true-8.js';\nimport '../../icons/icon-wind-true-9.js';\nimport '../../icons/icon-wind-true-10.js';\nimport '../../icons/icon-wind-true-11.js';\nimport '../../icons/icon-wind-true-12.js';\nimport '../../icons/icon-wind-true-13.js';\nimport '../../icons/icon-wind-true-14.js';\nimport '../../icons/icon-wind-shaft-1.js';\nimport '../../icons/icon-wind-shaft-2.js';\nimport '../../icons/icon-wind-shaft-3.js';\nimport '../../icons/icon-wind-shaft-4.js';\nimport '../../icons/icon-wind-shaft-5.js';\nimport '../../icons/icon-wind-shaft-6.js';\nimport '../../icons/icon-wind-shaft-7.js';\nimport '../../icons/icon-wind-shaft-8.js';\nimport '../../icons/icon-wind-shaft-9.js';\nimport '../../icons/icon-wind-shaft-10.js';\nimport '../../icons/icon-wind-shaft-11.js';\nimport '../../icons/icon-wind-shaft-12.js';\nimport '../../icons/icon-wind-shaft-13.js';\nimport '../../icons/icon-wind-shaft-14.js';\nimport {windKnotsToIconIndex} from '../watch/environment.js';\n\nexport enum WindIndicatorType {\n arrow = 'arrow',\n shaft = 'shaft',\n labeled = 'labeled',\n}\n\nexport enum WindIndicatorDirection {\n true = 'true',\n relative = 'relative',\n}\n\nexport enum WindIndicatorPriority {\n regular = 'regular',\n enhanced = 'enhanced',\n}\n\nconst VIEW_SIZE = 48;\nconst CX = VIEW_SIZE / 2;\nconst CY = VIEW_SIZE / 2;\n\nconst FRAME_R = 18;\nconst N_ARROW_BASE_ROTATION_DEG = -25;\n\nconst TRUE_N_ARROW_D =\n 'M23.5912 1.56962L19.5628 7.20939C19.3264 7.54032 19.563 8.00001 19.9696 8.00001H28.0264C28.4331 8.00001 28.6697 7.54032 28.4333 7.20939L24.4049 1.56962C24.2055 1.29045 23.7906 1.29045 23.5912 1.56962Z';\n\nconst SHAFT_TRUE_CIRCLE_TPL = svg`\n <circle\n cx=\"24.0004\"\n cy=\"23.9996\"\n r=\"2\"\n transform=\"rotate(60 24.0004 23.9996)\"\n fill=\"var(--instrument-frame-primary-color)\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n vector-effect=\"non-scaling-stroke\"\n />\n`;\n\nconst SHAFT_TRUE_WIND_BARB_D_BY_LEVEL: string[] = [\n 'M33.0954 23.7527C35.1680 22.5560 35.8782 19.9058 34.6816 17.8332C33.4850 15.7606 30.8347 15.0504 28.7621 16.2471C26.6895 17.4437 25.9794 20.0939 27.1760 22.1665L26.3099 22.6665C24.8372 20.1156 25.7112 16.8538 28.2621 15.3810C30.8130 13.9083 34.0748 14.7823 35.5476 17.3332C37.0204 19.8841 36.1463 23.1459 33.5954 24.6187C31.0445 26.0914 27.7827 25.2174 26.3099 22.6665L27.1760 22.1665C28.3726 24.2392 31.0228 24.9493 33.0954 23.7527L33.0954 23.7527',\n 'M37.2797 16.3332C37.4638 16.6521 37.3545 17.0598 37.0356 17.2439L24.3339 24.5772L23.6672 23.4225L36.3690 16.0892C36.6878 15.9051 37.0956 16.0143 37.2797 16.3332L37.2797 16.3332',\n 'M37.2797 16.3332C37.4638 16.6521 37.3545 17.0598 37.0356 17.2439L35.3036 18.2439L36.3036 19.9759C36.4877 20.2948 36.3784 20.7025 36.0595 20.8866C35.7407 21.0707 35.3330 20.9615 35.1489 20.6426L34.1489 18.9106L24.3339 24.5772L23.6672 23.4225L36.3690 16.0892C36.6878 15.9051 37.0956 16.0143 37.2797 16.3332L37.2797 16.3332',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L36.3036 19.9759C36.4877 20.2948 36.3784 20.7025 36.0595 20.8866C35.7407 21.0707 35.3330 20.9615 35.1489 20.6426L34.1489 18.9106L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L33.9942 21.3093C34.1783 21.6281 34.0690 22.0359 33.7501 22.2200C33.4313 22.4041 33.0235 22.2948 32.8394 21.9759L31.8395 20.2439L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.613 20.3747C39.7971 20.6935 39.6878 21.1013 39.3689 21.2853C39.0501 21.4694 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.708C37.4876 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3329 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L33.9942 21.3093C34.1782 21.6281 34.069 22.0359 33.7501 22.22C33.4313 22.4041 33.0235 22.2948 32.8395 21.9759L31.8395 20.2439L24.3339 24.5772L23.6672 23.4225L36.3114 16.1224C36.6621 15.9201 37.1103 16.0402 37.3128 16.3907L39.613 20.3747Z',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L34.9941 23.0413C35.1782 23.3602 35.0690 23.7679 34.7501 23.9520C34.4313 24.1361 34.0235 24.0269 33.8394 23.7080L31.8395 20.2439L30.6847 20.9105L31.6847 22.6426C31.8688 22.9615 31.7596 23.3692 31.4407 23.5533C31.1218 23.7374 30.7141 23.6281 30.5300 23.3093L29.5300 21.5772L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L34.9941 23.0413C35.1782 23.3602 35.0690 23.7679 34.7501 23.9520C34.4313 24.1361 34.0235 24.0269 33.8394 23.7080L31.8395 20.2439L30.6847 20.9105L32.6847 24.3747C32.8688 24.6935 32.7596 25.1012 32.4407 25.2853C32.1218 25.4694 31.7141 25.3602 31.5300 25.0413L29.5300 21.5772L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M39.6130 20.3747C39.7971 20.6936 39.6878 21.1013 39.3690 21.2854C39.0501 21.4695 38.6424 21.3602 38.4583 21.0413L36.4583 17.5772L35.3036 18.2439L37.3036 21.7080C37.4877 22.0269 37.3784 22.4346 37.0595 22.6187C36.7407 22.8028 36.3330 22.6935 36.1489 22.3747L34.1489 18.9106L32.9942 19.5772L34.9941 23.0413C35.1782 23.3602 35.0690 23.7679 34.7501 23.9520C34.4313 24.1361 34.0235 24.0269 33.8394 23.7080L31.8395 20.2439L30.6847 20.9105L32.6847 24.3747C32.8688 24.6935 32.7596 25.1012 32.4407 25.2853C32.1218 25.4694 31.7141 25.3602 31.5300 25.0413L29.5300 21.5772L28.3753 22.2439L29.3753 23.9759C29.5594 24.2948 29.4502 24.7025 29.1313 24.8866C28.8124 25.0707 28.4047 24.9615 28.2206 24.6426L27.2206 22.9105L24.3339 24.5772L23.6672 23.4225L36.3115 16.1224C36.6621 15.9201 37.1103 16.0402 37.3129 16.3907L39.6130 20.3747L39.6130 20.3747',\n 'M37.3380 16.4822L37.3672 16.5654L38.7821 21.5122C38.9920 22.2462 38.0802 22.7726 37.5496 22.2238L34.2758 18.8373L24.3339 24.5772L23.6672 23.4224L36.2952 16.1318C36.6825 15.9082 37.1705 16.0816 37.3380 16.4822L37.3380 16.4822',\n 'M37.3380 16.4822L37.3672 16.5654L38.7821 21.5122C38.9920 22.2462 38.0802 22.7726 37.5496 22.2238L34.2758 18.8373L32.9942 19.5772L34.9942 23.0413C35.1783 23.3602 35.0690 23.7679 34.7502 23.9520C34.4313 24.1361 34.0236 24.0268 33.8395 23.7080L31.8395 20.2438L24.3339 24.5772L23.6672 23.4224L36.2952 16.1318C36.6825 15.9082 37.1705 16.0816 37.3380 16.4822L37.3380 16.4822',\n 'M37.3380 16.4822L37.3672 16.5654L38.7821 21.5122C38.9920 22.2462 38.0802 22.7726 37.5496 22.2238L34.2758 18.8373L32.9942 19.5772L34.9942 23.0413C35.1783 23.3602 35.0690 23.7679 34.7502 23.9520C34.4313 24.1361 34.0236 24.0268 33.8395 23.7080L31.8395 20.2438L30.6847 20.9105L32.6847 24.3747C32.8688 24.6935 32.7596 25.1012 32.4407 25.2853C32.1218 25.4694 31.7141 25.3602 31.5300 25.0413L29.5300 21.5772L24.3339 24.5772L23.6672 23.4224L36.2952 16.1318C36.6825 15.9082 37.1705 16.0816 37.3380 16.4822L37.3380 16.4822',\n];\n\nconst SHAFT_RELATIVE_EXPORT_OFFSET_X = -9.9395;\nconst SHAFT_RELATIVE_EXPORT_OFFSET_Y = -9.9404;\nconst SHAFT_RELATIVE_FIGMA_CX = 33.9395;\nconst SHAFT_RELATIVE_FIGMA_CY = 33.9404;\nconst SHAFT_RELATIVE_WIND_7_D =\n 'M41.332 19.8761C41.5987 19.9476 41.757 20.2217 41.6855 20.4885C41.614 20.7552 41.3399 20.9135 41.0731 20.842L38.1754 20.0656L37.9165 21.0315L40.8143 21.8079C41.0811 21.8794 41.2394 22.1536 41.1679 22.4203C41.0964 22.6871 40.8222 22.8453 40.5555 22.7739L37.6577 21.9974L37.3989 22.9633L38.8478 23.3516C39.1145 23.423 39.2728 23.6972 39.2014 23.9639C39.1299 24.2307 38.8557 24.389 38.589 24.3175L37.1401 23.9293L35.4578 30.2078L34.4918 29.949L37.326 19.3719C37.4046 19.0787 37.706 18.9046 37.9993 18.9831L41.332 19.8761Z';\nconst SHAFT_RELATIVE_WIND_ICON_ROTATE_DEG = -157;\nconst SHAFT_RELATIVE_WIND_ICON_TX = 32.0346;\nconst SHAFT_RELATIVE_WIND_ICON_TY = 18.4132;\nconst SHAFT_RELATIVE_WIND_ICON_AXIS_SCALE = 0.4914435;\nconst SHAFT_RELATIVE_WIND_ROTATION_OFFSET_DEG = 309.2663;\nconst SHAFT_RELATIVE_HDG_BG_X = 28.4395;\nconst SHAFT_RELATIVE_HDG_BG_Y = 28.4404;\nconst SHAFT_RELATIVE_HDG_BG_SIZE = 11;\nconst SHAFT_RELATIVE_HDG_TRIANGLE_D =\n 'M33.7061 28.5957C33.7904 28.3887 34.0885 28.3887 34.1728 28.5957L37.9016 37.7605C38.0812 38.2018 37.5854 38.6136 37.1728 38.3657L33.9395 36.4404L30.7061 38.3657C30.2935 38.6136 29.7977 38.2018 29.9773 37.7605L33.7061 28.5957Z';\n\nconst SHAFT_ARROW_OFFSET_DEG = 298;\nconst SHAFT_TRUE_ARROW_OFFSET_DEG = SHAFT_ARROW_OFFSET_DEG;\n\nconst LABELED_TICK_MARKS_TPL = svg`\n <mask\n id=\"obc-wind-indicator-labeled-ticks-mask-0\"\n style=\"mask-type: alpha\"\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"48\"\n height=\"48\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24 40C32.8366 40 40 32.8366 40 24C40 15.1634 32.8366 8 24 8C15.1634 8 8 15.1634 8 24C8 32.8366 15.1634 40 24 40ZM24 36C30.6274 36 36 30.6274 36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36Z\"\n fill=\"white\"\n />\n </mask>\n <g mask=\"url(#obc-wind-indicator-labeled-ticks-mask-0)\">\n <path\n d=\"M24 0V24M24 24L12 3.21539M24 24L3.21539 12M24 24H0M24 24L3.21539 36M24 24L12 44.7846M24 24V48M24 24L36 44.7846M24 24L44.7846 36M24 24H48M24 24L44.7846 12M24 24L36 3.21539\"\n stroke=\"var(--instrument-frame-tertiary-color)\"\n vector-effect=\"non-scaling-stroke\"\n />\n </g>\n <mask\n id=\"obc-wind-indicator-labeled-ticks-mask-1\"\n style=\"mask-type: alpha\"\n maskUnits=\"userSpaceOnUse\"\n x=\"-14\"\n y=\"-14\"\n width=\"76\"\n height=\"76\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24 42C33.9411 42 42 33.9411 42 24C42 14.0589 33.9411 6 24 6C14.0589 6 6 14.0589 6 24C6 33.9411 14.0589 42 24 42ZM24 36C30.6274 36 36 30.6274 36 24C36 17.3726 30.6274 12 24 12C17.3726 12 12 17.3726 12 24C12 30.6274 17.3726 36 24 36Z\"\n fill=\"white\"\n />\n </mask>\n <g mask=\"url(#obc-wind-indicator-labeled-ticks-mask-1)\">\n <path\n d=\"M24 0V24M24 24H0M24 24V48M24 24H48\"\n stroke=\"var(--instrument-frame-tertiary-color)\"\n vector-effect=\"non-scaling-stroke\"\n />\n </g>\n`;\n\nconst LABELED_ARROW_FRAME_R = 17.5;\nconst LABELED_ARROW_SCALE = FRAME_R / LABELED_ARROW_FRAME_R;\nconst LABELED_ARROW_CX = 32.7881;\nconst LABELED_ARROW_CY = 32.7852;\nconst LABELED_ARROW_OFFSET_DEG = 209.7225;\nconst LABELED_ARROW_TPL = svg`\n <circle\n cx=\"22.7845\"\n cy=\"15.4642\"\n r=\"2\"\n transform=\"rotate(150 22.7845 15.4642)\"\n fill=\"currentColor\"\n />\n <path\n d=\"M41.7842 48.373L37.7842 41.4448\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n d=\"M27.7842 24.124L23.7842 17.1958\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n d=\"M44.9277 46.0779L44.3529 52.0069C44.3198 52.3483 43.9605 52.5558 43.6482 52.4137L38.2261 49.947C39.4419 49.5603 40.6351 49.0376 41.7854 48.3735C42.9356 47.7093 43.9849 46.9374 44.9277 46.0779Z\"\n fill=\"currentColor\"\n />\n`;\n\n/**\n * `<obc-wind-indicator>` – A compact wind indicator with a fixed frame and a rotating wind marker.\n *\n * Visualizes a wind speed in knots using a compact wind-barb icon plus\n * optional mode layers.\n *\n * ## Features\n *\n * - **Variants:** `type` (`arrow` | `shaft` | `labeled`), `direction` (`true` | `relative`), `priority` (`regular` | `enhanced`).\n * - **Speed input:** `currentWindSpeedKnots` is the wind speed in knots.\n * The barb icon follows the standard meteorological convention (one\n * half-barb per 5 kn). 0–65 kn covers all 14 icons; higher values clamp\n * to the heaviest icon.\n *\n * ## Usage Guidelines\n *\n * Use when you need a small wind cue next to other compact indicators.\n * Pass the wind speed in knots through `currentWindSpeedKnots`, matching\n * the convention used by `<obc-wind>`, `<obc-wind-propulsion>` and\n * `<obc-compass>`.\n */\n@customElement('obc-wind-indicator')\nexport class ObcWindIndicator extends LitElement {\n @property({type: String}) type: WindIndicatorType = WindIndicatorType.arrow;\n\n @property({type: String}) direction: WindIndicatorDirection =\n WindIndicatorDirection.true;\n\n @property({type: String}) priority: WindIndicatorPriority =\n WindIndicatorPriority.regular;\n\n /**\n * Wind speed in **knots**, used to pick the wind-barb icon.\n *\n * Maps to the icon set using the designer-confirmed \"Option C\"\n * ranges: `[0, 0.5)` kn renders calm, `[0.5, 2.5)` kn renders a\n * shaft only, then 5-kn nearest-neighbour buckets up to 45 kn\n * (half-barb steps), `[47.5, 55)` kn renders the 50-kn pennant, and\n * `[55, 65)` / `[65, ∞)` kn add one and two full barbs above the\n * pennant respectively. Non-finite or negative values fall back to\n * calm.\n */\n @property({type: Number, attribute: 'current-wind-speed-knots'})\n currentWindSpeedKnots = 0;\n\n /**\n * Rotation of the reference frame (course/heading) in degrees.\n *\n * This could be the heading or the course of the vessel.\n * `0` means north-up.\n */\n @property({type: Number, attribute: 'rotation-angle'}) rotationAngle = 0;\n\n /**\n * Primary wind direction input (wind-from).\n *\n * Represents the direction the wind comes **from** in degrees.\n * - `0` / `360`: wind from north → marker points south (down)\n * - `180`: wind from south → marker points north (up)\n */\n @property({type: Number, attribute: 'current-wind-from-direction'})\n currentWindFromDirection = 0;\n\n /**\n * @deprecated Use `currentWindFromDirection` instead.\n */\n @property({type: Number})\n get windFromAngle() {\n return this.currentWindFromDirection;\n }\n set windFromAngle(value: number) {\n this.currentWindFromDirection = value;\n }\n\n /**\n * @deprecated Use `currentWindFromDirection` instead.\n */\n @property({type: Number})\n get angle() {\n return this.currentWindFromDirection;\n }\n set angle(value: number) {\n this.currentWindFromDirection = value;\n }\n\n static override styles = css`\n :host {\n display: flex;\n box-sizing: border-box;\n width: var(--global-size-spacing-touch-target-min);\n height: var(--global-size-spacing-touch-target-min);\n align-items: center;\n justify-content: center;\n aspect-ratio: 1;\n }\n\n svg {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n flex-shrink: 0;\n }\n\n text {\n font: var(--font-family-main);\n }\n\n svg g[data-name='hdg'] path {\n fill: currentColor !important;\n }\n\n svg g[data-name='wind'] path {\n fill: currentColor !important;\n }\n `;\n\n /**\n * Icon index in the range `1..14`, derived from `currentWindSpeedKnots`\n * via the shared `windKnotsToIconIndex` helper (standard meteorological\n * wind-barb convention; one half-barb per 5 kn).\n */\n private get iconIndex(): number {\n return windKnotsToIconIndex(this.currentWindSpeedKnots);\n }\n\n private get accentColor(): string {\n return this.priority === WindIndicatorPriority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : 'var(--instrument-regular-secondary-color)';\n }\n\n private getWindBaseAngle(): number {\n if (this.type === WindIndicatorType.labeled) {\n return this.currentWindFromDirection;\n }\n return this.direction === WindIndicatorDirection.relative\n ? this.currentWindFromDirection + this.rotationAngle\n : this.currentWindFromDirection;\n }\n\n private getWindRotation(offsetDeg = 0): number {\n return this.getWindBaseAngle() + offsetDeg;\n }\n\n private readonly windIconCache = new Map<string, SVGTemplateResult>();\n\n private getWindIconSvg(tagName: string): SVGTemplateResult | null {\n const cached = this.windIconCache.get(tagName);\n if (cached) {\n return cached;\n }\n\n const ctor = customElements.get(tagName) as\n | (new () => {icon?: SVGTemplateResult; iconCss?: SVGTemplateResult})\n | undefined;\n\n if (!ctor) {\n return null;\n }\n\n const instance = new ctor();\n const tpl: SVGTemplateResult | undefined =\n instance.iconCss ?? instance.icon;\n if (!tpl) {\n return null;\n }\n\n this.windIconCache.set(tagName, tpl);\n return tpl;\n }\n\n private getWindIconTagName(type: string, _direction: string): string {\n const index = this.iconIndex;\n\n if (type === WindIndicatorType.shaft) {\n return `obi-wind-shaft-${index}`;\n }\n\n return `obi-wind-true-${index}`;\n }\n\n private getWindIcon(\n type: string,\n direction: string\n ): SVGTemplateResult | null {\n const tagName = this.getWindIconTagName(type, direction);\n return this.getWindIconSvg(tagName);\n }\n\n private renderFrame() {\n return svg`\n <circle\n cx=\"${CX}\"\n cy=\"${CY}\"\n r=\"${FRAME_R}\"\n fill=\"var(--instrument-frame-primary-color)\"\n stroke=\"var(--instrument-frame-tertiary-color)\"\n vector-effect=\"non-scaling-stroke\"\n />\n `;\n }\n\n private renderNorthArrow() {\n if (this.type === WindIndicatorType.labeled) {\n return null;\n }\n\n const baseRotation =\n this.direction === WindIndicatorDirection.relative\n ? this.rotationAngle +\n (this.type === WindIndicatorType.shaft\n ? N_ARROW_BASE_ROTATION_DEG\n : 0)\n : 0;\n\n return svg`\n <g transform=\"rotate(${baseRotation} ${CX} ${CY})\">\n <g transform=\"translate(0 -1.5)\">\n <path\n d=\"${TRUE_N_ARROW_D}\"\n fill=\"var(--instrument-frame-tertiary-color)\"\n />\n </g>\n </g>\n `;\n }\n\n private renderLabeledTickMarks() {\n if (this.type !== WindIndicatorType.labeled) {\n return null;\n }\n\n return LABELED_TICK_MARKS_TPL;\n }\n\n private renderLabeledArrow() {\n if (this.type !== WindIndicatorType.labeled) {\n return null;\n }\n\n const color =\n this.priority === WindIndicatorPriority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : 'var(--element-neutral-color)';\n\n const styles = {color};\n\n return svg`\n <g\n style=${styleMap(styles)}\n transform=\"translate(${CX} ${CY}) rotate(${this.getWindRotation(LABELED_ARROW_OFFSET_DEG)}) scale(${LABELED_ARROW_SCALE}) translate(-${LABELED_ARROW_CX} -${LABELED_ARROW_CY})\"\n >\n ${LABELED_ARROW_TPL}\n </g>\n `;\n }\n\n private renderHdgGroup() {\n if (this.type === WindIndicatorType.labeled) {\n return null;\n }\n\n if (\n this.type === WindIndicatorType.shaft &&\n this.direction === WindIndicatorDirection.relative\n ) {\n const windStyles = {color: this.accentColor};\n const windIcon = this.getWindIcon(\n WindIndicatorType.shaft,\n this.direction\n );\n\n const windMarker = svg`\n <g\n style=${styleMap(windStyles)}\n transform=\"translate(${SHAFT_RELATIVE_EXPORT_OFFSET_X} ${SHAFT_RELATIVE_EXPORT_OFFSET_Y})\"\n data-name=\"wind\"\n >\n <g\n transform=\"rotate(${this.getWindRotation(SHAFT_RELATIVE_WIND_ROTATION_OFFSET_DEG)} ${SHAFT_RELATIVE_FIGMA_CX} ${SHAFT_RELATIVE_FIGMA_CY})\"\n >\n ${\n windIcon\n ? svg`<g transform=\"translate(${SHAFT_RELATIVE_WIND_ICON_TX} ${SHAFT_RELATIVE_WIND_ICON_TY}) scale(${SHAFT_RELATIVE_WIND_ICON_AXIS_SCALE}) rotate(${SHAFT_RELATIVE_WIND_ICON_ROTATE_DEG} 12 12) rotate(180 12 12)\">${windIcon}</g>`\n : svg`<path d=\"${SHAFT_RELATIVE_WIND_7_D}\" fill=\"currentColor\" />`\n }\n </g>\n </g>\n `;\n\n return svg`\n <g>\n ${windMarker}\n <g\n transform=\"translate(${SHAFT_RELATIVE_EXPORT_OFFSET_X} ${SHAFT_RELATIVE_EXPORT_OFFSET_Y})\"\n >\n <g\n transform=\"rotate(${this.rotationAngle} ${SHAFT_RELATIVE_FIGMA_CX} ${SHAFT_RELATIVE_FIGMA_CY})\"\n >\n <rect\n x=\"${SHAFT_RELATIVE_HDG_BG_X}\"\n y=\"${SHAFT_RELATIVE_HDG_BG_Y}\"\n width=\"${SHAFT_RELATIVE_HDG_BG_SIZE}\"\n height=\"${SHAFT_RELATIVE_HDG_BG_SIZE}\"\n rx=\"${SHAFT_RELATIVE_HDG_BG_SIZE / 2}\"\n fill=\"var(--instrument-frame-primary-color)\"\n stroke=\"var(--instrument-frame-primary-color)\"\n />\n <path\n d=\"${SHAFT_RELATIVE_HDG_TRIANGLE_D}\"\n fill=\"var(--element-symbol-color)\"\n />\n </g>\n </g>\n </g>\n `;\n }\n\n if (\n this.type === WindIndicatorType.shaft &&\n this.direction === WindIndicatorDirection.true\n ) {\n const styles = {color: this.accentColor};\n return svg`\n <g\n style=${styleMap(styles)}\n transform=\"rotate(${this.getWindRotation(SHAFT_TRUE_ARROW_OFFSET_DEG)} ${CX} ${CY})\"\n data-name=\"hdg\"\n >\n ${svg`<path d=${SHAFT_TRUE_WIND_BARB_D_BY_LEVEL[this.iconIndex - 1]} fill=\"currentColor\" />`}\n ${SHAFT_TRUE_CIRCLE_TPL}\n </g>\n `;\n }\n\n const icon = this.getWindIcon(this.type, this.direction);\n if (!icon) {\n return null;\n }\n const styles = {color: this.accentColor};\n\n return svg`\n <g\n style=${styleMap(styles)}\n transform=\"translate(${CX} ${CY}) rotate(${this.getWindRotation()}) translate(-12 -12)\"\n data-name=\"hdg\"\n >\n ${icon}\n </g>\n `;\n }\n\n private renderLabel() {\n if (this.type !== WindIndicatorType.labeled) {\n return null;\n }\n\n const value = Number.isFinite(this.currentWindSpeedKnots)\n ? Math.max(0, Math.round(this.currentWindSpeedKnots))\n : 0;\n\n return svg`\n <text\n x=\"${CX}\"\n y=\"${CY + 1}\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n fill=\"var(--element-active-color)\"\n font-size=\"var(--global-typography-ui-label-active-font-size)\"\n font-weight=\"var(--global-typography-ui-label-active-font-weight)\"\n line-height=\"var(--global-typography-ui-label-active-line-height)\"\n >\n ${value}\n </text>\n `;\n }\n\n override render() {\n return html`\n <svg\n viewBox=\"0 0 ${VIEW_SIZE} ${VIEW_SIZE}\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n ${this.renderFrame()} ${this.renderNorthArrow()}\n ${this.renderHdgGroup()} ${this.renderLabeledTickMarks()}\n ${this.renderLabeledArrow()} ${this.renderLabel()}\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-wind-indicator': ObcWindIndicator;\n }\n}\n"],"names":["WindIndicatorType","WindIndicatorDirection","WindIndicatorPriority","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,IAAK,sCAAAA,uBAAL;AACLA,qBAAA,OAAA,IAAQ;AACRA,qBAAA,OAAA,IAAQ;AACRA,qBAAA,SAAA,IAAU;AAHA,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AAML,IAAK,2CAAAC,4BAAL;AACLA,0BAAA,MAAA,IAAO;AACPA,0BAAA,UAAA,IAAW;AAFD,SAAAA;AAAA,GAAA,0BAAA,CAAA,CAAA;AAKL,IAAK,0CAAAC,2BAAL;AACLA,yBAAA,SAAA,IAAU;AACVA,yBAAA,UAAA,IAAW;AAFD,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;AAKZ,MAAM,YAAY;AAClB,MAAM,KAAK,YAAY;AACvB,MAAM,KAAK,YAAY;AAEvB,MAAM,UAAU;AAChB,MAAM,4BAA4B;AAElC,MAAM,iBACJ;AAEF,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAa9B,MAAM,kCAA4C;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,iCAAiC;AACvC,MAAM,iCAAiC;AACvC,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,MAAM,0BACJ;AACF,MAAM,sCAAsC;AAC5C,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,sCAAsC;AAC5C,MAAM,0CAA0C;AAChD,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,MAAM,6BAA6B;AACnC,MAAM,gCACJ;AAEF,MAAM,yBAAyB;AAC/B,MAAM,8BAA8B;AAEpC,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiD/B,MAAM,wBAAwB;AAC9B,MAAM,sBAAsB,UAAU;AACtC,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AACzB,MAAM,2BAA2B;AACjC,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDnB,IAAM,mBAAN,cAA+B,WAAW;AAAA,EAA1C,cAAA;AAAA,UAAA,GAAA,SAAA;AACqB,SAAA,OAA0B;AAE1B,SAAA,YACxB;AAEwB,SAAA,WACxB;AAcF,SAAA,wBAAwB;AAQ+B,SAAA,gBAAgB;AAUvE,SAAA,2BAA2B;AAoF3B,SAAiB,oCAAoB,IAAA;AAAA,EAA+B;AAAA,EA9EpE,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,cAAc,OAAe;AAC/B,SAAK,2BAA2B;AAAA,EAClC;AAAA,EAMA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,OAAe;AACvB,SAAK,2BAA2B;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuCA,IAAY,YAAoB;AAC9B,WAAO,qBAAqB,KAAK,qBAAqB;AAAA,EACxD;AAAA,EAEA,IAAY,cAAsB;AAChC,WAAO,KAAK,aAAa,aACrB,+CACA;AAAA,EACN;AAAA,EAEQ,mBAA2B;AACjC,QAAI,KAAK,SAAS,WAA2B;AAC3C,aAAO,KAAK;AAAA,IACd;AACA,WAAO,KAAK,cAAc,aACtB,KAAK,2BAA2B,KAAK,gBACrC,KAAK;AAAA,EACX;AAAA,EAEQ,gBAAgB,YAAY,GAAW;AAC7C,WAAO,KAAK,qBAAqB;AAAA,EACnC;AAAA,EAIQ,eAAe,SAA2C;AAChE,UAAM,SAAS,KAAK,cAAc,IAAI,OAAO;AAC7C,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,UAAM,OAAO,eAAe,IAAI,OAAO;AAIvC,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,IAAI,KAAA;AACrB,UAAM,MACJ,SAAS,WAAW,SAAS;AAC/B,QAAI,CAAC,KAAK;AACR,aAAO;AAAA,IACT;AAEA,SAAK,cAAc,IAAI,SAAS,GAAG;AACnC,WAAO;AAAA,EACT;AAAA,EAEQ,mBAAmB,MAAc,YAA4B;AACnE,UAAM,QAAQ,KAAK;AAEnB,QAAI,SAAS,SAAyB;AACpC,aAAO,kBAAkB,KAAK;AAAA,IAChC;AAEA,WAAO,iBAAiB,KAAK;AAAA,EAC/B;AAAA,EAEQ,YACN,MACA,WAC0B;AAC1B,UAAM,UAAU,KAAK,mBAAmB,MAAM,SAAS;AACvD,WAAO,KAAK,eAAe,OAAO;AAAA,EACpC;AAAA,EAEQ,cAAc;AACpB,WAAO;AAAA;AAAA,cAEG,EAAE;AAAA,cACF,EAAE;AAAA,aACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlB;AAAA,EAEQ,mBAAmB;AACzB,QAAI,KAAK,SAAS,WAA2B;AAC3C,aAAO;AAAA,IACT;AAEA,UAAM,eACJ,KAAK,cAAc,aACf,KAAK,iBACJ,KAAK,SAAS,UACX,4BACA,KACJ;AAEN,WAAO;AAAA,6BACkB,YAAY,IAAI,EAAE,IAAI,EAAE;AAAA;AAAA;AAAA,iBAGpC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7B;AAAA,EAEQ,yBAAyB;AAC/B,QAAI,KAAK,SAAS,WAA2B;AAC3C,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,qBAAqB;AAC3B,QAAI,KAAK,SAAS,WAA2B;AAC3C,aAAO;AAAA,IACT;AAEA,UAAM,QACJ,KAAK,aAAa,aACd,+CACA;AAEN,UAAM,SAAS,EAAC,MAAA;AAEhB,WAAO;AAAA;AAAA,gBAEK,SAAS,MAAM,CAAC;AAAA,+BACD,EAAE,IAAI,EAAE,YAAY,KAAK,gBAAgB,wBAAwB,CAAC,WAAW,mBAAmB,gBAAgB,gBAAgB,KAAK,gBAAgB;AAAA;AAAA,UAE1K,iBAAiB;AAAA;AAAA;AAAA,EAGzB;AAAA,EAEQ,iBAAiB;AACvB,QAAI,KAAK,SAAS,WAA2B;AAC3C,aAAO;AAAA,IACT;AAEA,QACE,KAAK,SAAS,WACd,KAAK,cAAc,YACnB;AACA,YAAM,aAAa,EAAC,OAAO,KAAK,YAAA;AAChC,YAAM,WAAW,KAAK;AAAA,QACpB;AAAA,QACA,KAAK;AAAA,MAAA;AAGP,YAAM,aAAa;AAAA;AAAA,kBAEP,SAAS,UAAU,CAAC;AAAA,iCACL,8BAA8B,IAAI,8BAA8B;AAAA;AAAA;AAAA;AAAA,gCAIjE,KAAK,gBAAgB,uCAAuC,CAAC,IAAI,uBAAuB,IAAI,uBAAuB;AAAA;AAAA,cAGrI,WACI,8BAA8B,2BAA2B,IAAI,2BAA2B,WAAW,mCAAmC,YAAY,mCAAmC,8BAA8B,QAAQ,SAC3N,eAAe,uBAAuB,0BAC5C;AAAA;AAAA;AAAA;AAKN,aAAO;AAAA;AAAA,YAED,UAAU;AAAA;AAAA,mCAEa,8BAA8B,IAAI,8BAA8B;AAAA;AAAA;AAAA,kCAGjE,KAAK,aAAa,IAAI,uBAAuB,IAAI,uBAAuB;AAAA;AAAA;AAAA,mBAGvF,uBAAuB;AAAA,mBACvB,uBAAuB;AAAA,uBACnB,0BAA0B;AAAA,wBACzB,0BAA0B;AAAA,oBAC9B,6BAA6B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,mBAK/B,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO5C;AAEA,QACE,KAAK,SAAS,WACd,KAAK,cAAc,QACnB;AACA,YAAMC,UAAS,EAAC,OAAO,KAAK,YAAA;AAC5B,aAAO;AAAA;AAAA,kBAEK,SAASA,OAAM,CAAC;AAAA,8BACJ,KAAK,gBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE;AAAA;AAAA;AAAA,YAG/E,cAAc,gCAAgC,KAAK,YAAY,CAAC,CAAC,yBAAyB;AAAA,YAC1F,qBAAqB;AAAA;AAAA;AAAA,IAG7B;AAEA,UAAM,OAAO,KAAK,YAAY,KAAK,MAAM,KAAK,SAAS;AACvD,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AACA,UAAM,SAAS,EAAC,OAAO,KAAK,YAAA;AAE5B,WAAO;AAAA;AAAA,gBAEK,SAAS,MAAM,CAAC;AAAA,+BACD,EAAE,IAAI,EAAE,YAAY,KAAK,iBAAiB;AAAA;AAAA;AAAA,UAG/D,IAAI;AAAA;AAAA;AAAA,EAGZ;AAAA,EAEQ,cAAc;AACpB,QAAI,KAAK,SAAS,WAA2B;AAC3C,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,OAAO,SAAS,KAAK,qBAAqB,IACpD,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,qBAAqB,CAAC,IAClD;AAEJ,WAAO;AAAA;AAAA,aAEE,EAAE;AAAA,aACF,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQT,KAAK;AAAA;AAAA;AAAA,EAGb;AAAA,EAES,SAAS;AAChB,WAAO;AAAA;AAAA,uBAEY,SAAS,IAAI,SAAS;AAAA;AAAA;AAAA;AAAA,UAInC,KAAK,YAAA,CAAa,IAAI,KAAK,kBAAkB;AAAA,UAC7C,KAAK,eAAA,CAAgB,IAAI,KAAK,wBAAwB;AAAA,UACtD,KAAK,mBAAA,CAAoB,IAAI,KAAK,aAAa;AAAA;AAAA;AAAA,EAGvD;AACF;AAjXa,iBA+DK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA9DC,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GADb,iBACe,WAAA,QAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAHb,iBAGe,WAAA,aAAA,CAAA;AAGA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GANb,iBAMe,WAAA,YAAA,CAAA;AAe1B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAQ,WAAW,4BAA2B;AAAA,GApBpD,iBAqBX,WAAA,yBAAA,CAAA;AAQuD,gBAAA;AAAA,EAAtD,SAAS,EAAC,MAAM,QAAQ,WAAW,kBAAiB;AAAA,GA7B1C,iBA6B4C,WAAA,iBAAA,CAAA;AAUvD,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,QAAQ,WAAW,+BAA8B;AAAA,GAtCvD,iBAuCX,WAAA,4BAAA,CAAA;AAMI,gBAAA;AAAA,EADH,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA5Cb,iBA6CP,WAAA,iBAAA,CAAA;AAWA,gBAAA;AAAA,EADH,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAvDb,iBAwDP,WAAA,SAAA,CAAA;AAxDO,mBAAN,gBAAA;AAAA,EADN,cAAc,oBAAoB;AAAA,GACtB,gBAAA;"}
@@ -66,7 +66,7 @@ export declare class ObcWindPropulsion extends LitElement {
66
66
  showLabels: boolean;
67
67
  tickmarksInside: boolean;
68
68
  tickmarkStyle: TickmarkStyle;
69
- currentWindSpeedBeaufort: number | null;
69
+ currentWindSpeedKnots: number | null;
70
70
  currentWindFromDirection: number | null;
71
71
  sailAngleAdvices: AngleAdvice[];
72
72
  private _forceBarMaskId;
@@ -1 +1 @@
1
- {"version":3,"file":"wind-propulsion.d.ts","sourceRoot":"","sources":["../../../src/navigation-instruments/wind-propulsion/wind-propulsion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAY,MAAM,KAAK,CAAC;AAEhD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,KAAK,CAAC;AAExC,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEtD,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAC,QAAQ,EAAiB,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAC,WAAW,EAA8B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,aAAa,EAAe,MAAM,sBAAsB,CAAC;AAS3E,oBAAY,6BAA6B;IACvC,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IACrB,UAAU,SAAK;IACf,SAAS,SAAK;IAEd,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,mBAAmB,EAAE,OAAO,CAAS;IAEhE,uBAAuB,EAAE,OAAO,CAAQ;IACd,+BAA+B,EAAE,MAAM,CAAK;IAC5C,+BAA+B,EAAE,MAAM,CAAO;IAC7C,yBAAyB,EAAE,OAAO,CAAS;IAC3C,eAAe,EAAE,OAAO,CAAS;IACjC,QAAQ,EAAE,OAAO,CAAS;IAE3B,KAAK,SAAK;IACV,QAAQ,SAAO;IACf,QAAQ,EAAE,QAAQ,CAAsB;IAExC,KAAK,EAAE,eAAe,CAA0B;IAChD,QAAQ,EAAE,QAAQ,CAAoB;IAEhE,gBAAgB,EAAE,6BAA6B,EAAE,CAE/C;IACyB,UAAU,EAAE,OAAO,CAAS;IAC5B,eAAe,EAAE,OAAO,CAAS;IAClC,aAAa,EAAE,aAAa,CAC9B;IAEE,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/C,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9B,gBAAgB,EAAE,WAAW,EAAE,CACrE;IAEL,OAAO,CAAC,eAAe,CAAqD;IAE5E,OAAO,CAAC,YAAY,CAGjB;IAEM,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAezC,oBAAoB,IAAI,IAAI;IAKrC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAalB,OAAO,KAAK,cAAc,GAqBzB;IAED,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,eAAe;IAmCd,MAAM;IAkDf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"wind-propulsion.d.ts","sourceRoot":"","sources":["../../../src/navigation-instruments/wind-propulsion/wind-propulsion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAY,MAAM,KAAK,CAAC;AAEhD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,KAAK,CAAC;AAExC,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEtD,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAC,QAAQ,EAAiB,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAC,WAAW,EAA8B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,aAAa,EAAe,MAAM,sBAAsB,CAAC;AAS3E,oBAAY,6BAA6B;IACvC,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IACrB,UAAU,SAAK;IACf,SAAS,SAAK;IAEd,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,mBAAmB,EAAE,OAAO,CAAS;IAEhE,uBAAuB,EAAE,OAAO,CAAQ;IACd,+BAA+B,EAAE,MAAM,CAAK;IAC5C,+BAA+B,EAAE,MAAM,CAAO;IAC7C,yBAAyB,EAAE,OAAO,CAAS;IAC3C,eAAe,EAAE,OAAO,CAAS;IACjC,QAAQ,EAAE,OAAO,CAAS;IAE3B,KAAK,SAAK;IACV,QAAQ,SAAO;IACf,QAAQ,EAAE,QAAQ,CAAsB;IAExC,KAAK,EAAE,eAAe,CAA0B;IAChD,QAAQ,EAAE,QAAQ,CAAoB;IAEhE,gBAAgB,EAAE,6BAA6B,EAAE,CAE/C;IACyB,UAAU,EAAE,OAAO,CAAS;IAC5B,eAAe,EAAE,OAAO,CAAS;IAClC,aAAa,EAAE,aAAa,CAC9B;IAEE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5C,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9B,gBAAgB,EAAE,WAAW,EAAE,CACrE;IAEL,OAAO,CAAC,eAAe,CAAqD;IAE5E,OAAO,CAAC,YAAY,CAGjB;IAEM,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAezC,oBAAoB,IAAI,IAAI;IAKrC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAalB,OAAO,KAAK,cAAc,GAqBzB;IAED,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,eAAe;IAmCd,MAAM;IAkDf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -53,7 +53,7 @@ let ObcWindPropulsion = class extends LitElement {
53
53
  this.showLabels = false;
54
54
  this.tickmarksInside = false;
55
55
  this.tickmarkStyle = TickmarkStyle.regular;
56
- this.currentWindSpeedBeaufort = null;
56
+ this.currentWindSpeedKnots = null;
57
57
  this.currentWindFromDirection = null;
58
58
  this.sailAngleAdvices = [];
59
59
  this._forceBarMaskId = `wp-fb-${Math.random().toString(36).slice(2, 9)}`;
@@ -88,7 +88,7 @@ let ObcWindPropulsion = class extends LitElement {
88
88
  return this.priorityFor(element) === Priority.enhanced ? "var(--instrument-enhanced-secondary-color)" : void 0;
89
89
  }
90
90
  getPadding() {
91
- if (this.currentWindSpeedBeaufort != null && this.currentWindFromDirection != null) {
91
+ if (this.currentWindSpeedKnots != null && this.currentWindFromDirection != null) {
92
92
  return 72;
93
93
  }
94
94
  if (this.showLabels && !this.tickmarksInside) {
@@ -182,7 +182,7 @@ let ObcWindPropulsion = class extends LitElement {
182
182
  .tickmarkStyle=${this.tickmarkStyle}
183
183
  .watchCircleType=${WatchCircleType.single}
184
184
  .advices=${this.angleAdviceRaw}
185
- .wind=${this.currentWindSpeedBeaufort}
185
+ .windKnots=${this.currentWindSpeedKnots}
186
186
  .windFromDirectionDeg=${this.currentWindFromDirection}
187
187
  .windColor=${this.colorFor(
188
188
  "wind"
@@ -275,7 +275,7 @@ __decorateClass([
275
275
  ], ObcWindPropulsion.prototype, "tickmarkStyle", 2);
276
276
  __decorateClass([
277
277
  property({ type: Number })
278
- ], ObcWindPropulsion.prototype, "currentWindSpeedBeaufort", 2);
278
+ ], ObcWindPropulsion.prototype, "currentWindSpeedKnots", 2);
279
279
  __decorateClass([
280
280
  property({ type: Number })
281
281
  ], ObcWindPropulsion.prototype, "currentWindFromDirection", 2);
@@ -1 +1 @@
1
- {"version":3,"file":"wind-propulsion.js","sources":["../../../src/navigation-instruments/wind-propulsion/wind-propulsion.ts"],"sourcesContent":["import {html, LitElement, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport type {PropertyValues} from 'lit';\nimport {svg} from 'lit';\nimport {InstrumentState, Priority} from '../types.js';\nimport {SetpointBundle} from '../../svghelpers/setpoint-bundle.js';\nimport '../watch/watch.js';\nimport {WatchCircleType} from '../watch/watch.js';\nimport {SailType, sailTypeImages} from '../watch/sail-type.js';\nimport componentStyle from './wind-propulsion.css?inline';\nimport {AngleAdvice, AngleAdviceRaw, AdviceState} from '../watch/advice.js';\nimport {Tickmark, TickmarkStyle, TickmarkType} from '../watch/tickmark.js';\nimport {renderForceBar} from './force-bar.js';\nimport {customElement} from '../../decorator.js';\n\nfunction mapAngle0to360(angle: number): number {\n const a = angle % 360;\n return a >= 0 ? a : a + 360;\n}\n\nexport enum WindPropulsionPriorityElement {\n sail = 'sail',\n forceBar = 'forceBar',\n wind = 'wind',\n}\n\n/**\n * `<obc-wind-propulsion>` – Radial instrument showing sail force direction and strength.\n *\n * Displays a circular watch face with a rotatable sail image, a directional force bar\n * indicating force strength (0–100), and an independent sail angle setpoint. The sail\n * and force bar rotate independently to show the difference between sail orientation\n * and force direction.\n *\n * ## Features\n *\n * - **Sail angle**: Rotatable sail type image with a directional arrow\n * pointing outward from the bow.\n * - **Force angle / force**: A vertical bar overlay that rotates to `forceAngle`,\n * filled proportionally to `force / maxForce`.\n * - **Sail angle setpoint**: Optional setpoint marker on the watch ring with\n * auto at-setpoint detection and confirm animation support.\n * - **Advice zones**: Configurable caution/alert arcs on the watch ring.\n * - **Wind overlay**: Optional wind speed/direction indicator (pass-through to watch).\n * - **Labels**: Toggleable 0°/90°/180°/–90° tickmark labels.\n * - **Priority elements**: Selectively apply the enhanced color palette to\n * individual elements (`sail`, `forceBar`, `wind`) via `priorityElements`.\n *\n * ## Usage Guidelines\n *\n * - Set `forceAngle` and `sailAngle` independently to show the angular\n * difference between force direction and sail orientation.\n * - Use `sailAngleSetpoint` to show a target sail angle on the watch ring.\n * - Select the sail image via `sailType` (e.g. `SailType.solidSail`).\n * - Use `priorityElements` to control which elements receive the enhanced\n * color palette when `priority` is `enhanced`.\n * - Set `maxForce` to the system-specific ceiling so the bar fills\n * proportionally (default 100).\n * - For a full-circle compass, use `<obc-compass>` instead.\n *\n * @fires None\n */\n@customElement('obc-wind-propulsion')\nexport class ObcWindPropulsion extends LitElement {\n @property({type: Number}) forceAngle = 0;\n @property({type: Number}) sailAngle = 0;\n\n @property({type: Number}) sailAngleSetpoint: number | undefined;\n @property({type: Number}) newSailAngleSetpoint: number | undefined;\n @property({type: Boolean}) atSailAngleSetpoint: boolean = false;\n @property({type: Boolean, attribute: false})\n autoAtSailAngleSetpoint: boolean = true;\n @property({type: Number}) autoAtSailAngleSetpointDeadband: number = 2;\n @property({type: Number}) sailAngleSetpointAtZeroDeadband: number = 0.5;\n @property({type: Boolean}) sailAngleSetpointOverride: boolean = false;\n @property({type: Boolean}) animateSetpoint: boolean = false;\n @property({type: Boolean}) touching: boolean = false;\n\n @property({type: Number}) force = 0;\n @property({type: Number}) maxForce = 100;\n @property({type: String}) sailType: SailType = SailType.rotorSail;\n\n @property({type: String}) state: InstrumentState = InstrumentState.active;\n @property({type: String}) priority: Priority = Priority.regular;\n @property({type: Array, attribute: false})\n priorityElements: WindPropulsionPriorityElement[] = [\n WindPropulsionPriorityElement.sail,\n ];\n @property({type: Boolean}) showLabels: boolean = false;\n @property({type: Boolean}) tickmarksInside: boolean = false;\n @property({type: String}) tickmarkStyle: TickmarkStyle =\n TickmarkStyle.regular;\n\n @property({type: Number}) currentWindSpeedBeaufort: number | null = null;\n @property({type: Number}) currentWindFromDirection: number | null = null;\n\n @property({type: Array, attribute: false}) sailAngleAdvices: AngleAdvice[] =\n [];\n\n private _forceBarMaskId = `wp-fb-${Math.random().toString(36).slice(2, 9)}`;\n\n private _sailAngleSp = new SetpointBundle({\n angularWraparound: true,\n onAnimationEnd: () => this.requestUpdate(),\n });\n\n override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this._sailAngleSp.sync({\n setpoint: this.sailAngleSetpoint,\n newSetpoint: this.newSailAngleSetpoint,\n atSetpoint: this.atSailAngleSetpoint,\n touching: this.touching,\n autoAtSetpoint: this.autoAtSailAngleSetpoint,\n autoAtSetpointDeadband: this.autoAtSailAngleSetpointDeadband,\n setpointAtZeroDeadband: this.sailAngleSetpointAtZeroDeadband,\n setpointOverride: this.sailAngleSetpointOverride,\n animateSetpoint: this.animateSetpoint,\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._sailAngleSp.dispose();\n }\n\n private priorityFor(element: WindPropulsionPriorityElement): Priority {\n const selected = Array.isArray(this.priorityElements)\n ? this.priorityElements\n : [];\n return selected.includes(element) ? this.priority : Priority.regular;\n }\n\n private colorFor(element: WindPropulsionPriorityElement): string | undefined {\n return this.priorityFor(element) === Priority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : undefined;\n }\n\n private getPadding(): number {\n if (\n this.currentWindSpeedBeaufort != null &&\n this.currentWindFromDirection != null\n ) {\n return 72;\n }\n if (this.showLabels && !this.tickmarksInside) {\n return 60;\n }\n return 24;\n }\n\n private get angleAdviceRaw(): AngleAdviceRaw[] {\n return this.sailAngleAdvices.map((advice) => {\n const triggered =\n this.sailAngleSetpoint !== undefined &&\n mapAngle0to360(this.sailAngleSetpoint - advice.minAngle) <=\n mapAngle0to360(advice.maxAngle - advice.minAngle);\n let state: AdviceState;\n if (triggered) {\n state = AdviceState.triggered;\n } else if (advice.hinted) {\n state = AdviceState.hinted;\n } else {\n state = AdviceState.regular;\n }\n return {\n minAngle: advice.minAngle,\n maxAngle: advice.maxAngle,\n type: advice.type,\n state,\n };\n });\n }\n\n private getTickmarks(): Tickmark[] {\n const tickmarks: Tickmark[] = [];\n\n const labelText = (angle: number): string | undefined => {\n if (!this.showLabels) return undefined;\n return angle <= 180 ? `${angle}` : `${angle - 360}`;\n };\n\n tickmarks.push({\n angle: 0,\n type: TickmarkType.zeroLine,\n text: this.showLabels ? '0' : undefined,\n });\n\n for (const angle of [90, 180, 270]) {\n tickmarks.push({\n angle,\n type: TickmarkType.primary,\n text: labelText(angle),\n });\n }\n\n return tickmarks;\n }\n\n private renderSailImage() {\n const entry = sailTypeImages[this.sailType];\n if (!entry) return svg``;\n\n const sailPriority = this.priorityFor(WindPropulsionPriorityElement.sail);\n const arrowColor =\n sailPriority === Priority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : 'var(--instrument-regular-secondary-color)';\n\n // Center each sail SVG on its visual center (cx/cy), falling back to\n // the geometric viewBox center (width/2, height/2).\n const cx = entry.cx ?? entry.width / 2;\n const cy = entry.cy ?? entry.height / 2;\n\n // Scale sails down so their top edge clears the directional arrow\n // with the same ~5px gap the arrow has from the watch ring.\n const sailScale = 0.95;\n\n // Fixed arrow radius matching compass/heading arrow positioning\n // (just inside RING2_RADIUS = 160).\n const arrowRadius = 155;\n\n return svg`\n <g style=\"transform: rotate(${this.sailAngle}deg)\">\n <g style=\"transform: scale(${sailScale}) translate(${-cx}px, ${-cy}px)\">\n ${entry.svg}\n </g>\n <path transform=\"translate(-15 ${-arrowRadius})\"\n d=\"M0.707007 14.2929L14.9999 0L29.2928 14.2929C29.9228 14.9229 29.4766 16 28.5857 16H1.41412C0.523211 16 0.0770419 14.9229 0.707007 14.2929Z\"\n fill=\"${arrowColor}\" vector-effect=\"non-scaling-stroke\"/>\n </g>\n `;\n }\n\n override render() {\n const tickmarks = this.getTickmarks();\n const padding = this.getPadding();\n const width = (176 + padding) * 2;\n const viewBox = `-${width / 2} -${width / 2} ${width} ${width}`;\n\n return html`\n <div class=\"container\">\n <obc-watch\n .touching=${this.touching}\n .padding=${padding}\n .tickmarks=${tickmarks}\n .state=${this.state}\n .priority=${this.priority}\n .angleSetpoint=${this.sailAngleSetpoint}\n .newAngleSetpoint=${this.newSailAngleSetpoint}\n .atAngleSetpoint=${this._sailAngleSp.computeAtSetpoint(\n this.sailAngle\n )}\n .angleSetpointAtZeroDeadband=${this.sailAngleSetpointAtZeroDeadband}\n .setpointOverride=${this.sailAngleSetpointOverride}\n .animateSetpoint=${this.animateSetpoint}\n .tickmarksInside=${this.tickmarksInside}\n .tickmarkStyle=${this.tickmarkStyle}\n .watchCircleType=${WatchCircleType.single}\n .advices=${this.angleAdviceRaw}\n .wind=${this.currentWindSpeedBeaufort}\n .windFromDirectionDeg=${this.currentWindFromDirection}\n .windColor=${this.colorFor(WindPropulsionPriorityElement.wind)}\n ></obc-watch>\n <svg viewBox=\"${viewBox}\" xmlns=\"http://www.w3.org/2000/svg\">\n ${this.renderSailImage()}\n </svg>\n <svg viewBox=\"${viewBox}\" xmlns=\"http://www.w3.org/2000/svg\">\n <g style=\"transform: rotate(${this.forceAngle}deg) scale(0.965)\">\n <g transform=\"translate(-256, -256)\">\n ${renderForceBar(\n this.force,\n this.maxForce,\n this.state,\n this.priorityFor(WindPropulsionPriorityElement.forceBar),\n this._forceBarMaskId\n )}\n </g>\n </g>\n </svg>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-wind-propulsion': ObcWindPropulsion;\n }\n}\n"],"names":["WindPropulsionPriorityElement"],"mappings":"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"}
1
+ {"version":3,"file":"wind-propulsion.js","sources":["../../../src/navigation-instruments/wind-propulsion/wind-propulsion.ts"],"sourcesContent":["import {html, LitElement, unsafeCSS} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport type {PropertyValues} from 'lit';\nimport {svg} from 'lit';\nimport {InstrumentState, Priority} from '../types.js';\nimport {SetpointBundle} from '../../svghelpers/setpoint-bundle.js';\nimport '../watch/watch.js';\nimport {WatchCircleType} from '../watch/watch.js';\nimport {SailType, sailTypeImages} from '../watch/sail-type.js';\nimport componentStyle from './wind-propulsion.css?inline';\nimport {AngleAdvice, AngleAdviceRaw, AdviceState} from '../watch/advice.js';\nimport {Tickmark, TickmarkStyle, TickmarkType} from '../watch/tickmark.js';\nimport {renderForceBar} from './force-bar.js';\nimport {customElement} from '../../decorator.js';\n\nfunction mapAngle0to360(angle: number): number {\n const a = angle % 360;\n return a >= 0 ? a : a + 360;\n}\n\nexport enum WindPropulsionPriorityElement {\n sail = 'sail',\n forceBar = 'forceBar',\n wind = 'wind',\n}\n\n/**\n * `<obc-wind-propulsion>` – Radial instrument showing sail force direction and strength.\n *\n * Displays a circular watch face with a rotatable sail image, a directional force bar\n * indicating force strength (0–100), and an independent sail angle setpoint. The sail\n * and force bar rotate independently to show the difference between sail orientation\n * and force direction.\n *\n * ## Features\n *\n * - **Sail angle**: Rotatable sail type image with a directional arrow\n * pointing outward from the bow.\n * - **Force angle / force**: A vertical bar overlay that rotates to `forceAngle`,\n * filled proportionally to `force / maxForce`.\n * - **Sail angle setpoint**: Optional setpoint marker on the watch ring with\n * auto at-setpoint detection and confirm animation support.\n * - **Advice zones**: Configurable caution/alert arcs on the watch ring.\n * - **Wind overlay**: Optional wind speed/direction indicator (pass-through to watch).\n * - **Labels**: Toggleable 0°/90°/180°/–90° tickmark labels.\n * - **Priority elements**: Selectively apply the enhanced color palette to\n * individual elements (`sail`, `forceBar`, `wind`) via `priorityElements`.\n *\n * ## Usage Guidelines\n *\n * - Set `forceAngle` and `sailAngle` independently to show the angular\n * difference between force direction and sail orientation.\n * - Use `sailAngleSetpoint` to show a target sail angle on the watch ring.\n * - Select the sail image via `sailType` (e.g. `SailType.solidSail`).\n * - Use `priorityElements` to control which elements receive the enhanced\n * color palette when `priority` is `enhanced`.\n * - Set `maxForce` to the system-specific ceiling so the bar fills\n * proportionally (default 100).\n * - For a full-circle compass, use `<obc-compass>` instead.\n *\n * @fires None\n */\n@customElement('obc-wind-propulsion')\nexport class ObcWindPropulsion extends LitElement {\n @property({type: Number}) forceAngle = 0;\n @property({type: Number}) sailAngle = 0;\n\n @property({type: Number}) sailAngleSetpoint: number | undefined;\n @property({type: Number}) newSailAngleSetpoint: number | undefined;\n @property({type: Boolean}) atSailAngleSetpoint: boolean = false;\n @property({type: Boolean, attribute: false})\n autoAtSailAngleSetpoint: boolean = true;\n @property({type: Number}) autoAtSailAngleSetpointDeadband: number = 2;\n @property({type: Number}) sailAngleSetpointAtZeroDeadband: number = 0.5;\n @property({type: Boolean}) sailAngleSetpointOverride: boolean = false;\n @property({type: Boolean}) animateSetpoint: boolean = false;\n @property({type: Boolean}) touching: boolean = false;\n\n @property({type: Number}) force = 0;\n @property({type: Number}) maxForce = 100;\n @property({type: String}) sailType: SailType = SailType.rotorSail;\n\n @property({type: String}) state: InstrumentState = InstrumentState.active;\n @property({type: String}) priority: Priority = Priority.regular;\n @property({type: Array, attribute: false})\n priorityElements: WindPropulsionPriorityElement[] = [\n WindPropulsionPriorityElement.sail,\n ];\n @property({type: Boolean}) showLabels: boolean = false;\n @property({type: Boolean}) tickmarksInside: boolean = false;\n @property({type: String}) tickmarkStyle: TickmarkStyle =\n TickmarkStyle.regular;\n\n @property({type: Number}) currentWindSpeedKnots: number | null = null;\n @property({type: Number}) currentWindFromDirection: number | null = null;\n\n @property({type: Array, attribute: false}) sailAngleAdvices: AngleAdvice[] =\n [];\n\n private _forceBarMaskId = `wp-fb-${Math.random().toString(36).slice(2, 9)}`;\n\n private _sailAngleSp = new SetpointBundle({\n angularWraparound: true,\n onAnimationEnd: () => this.requestUpdate(),\n });\n\n override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this._sailAngleSp.sync({\n setpoint: this.sailAngleSetpoint,\n newSetpoint: this.newSailAngleSetpoint,\n atSetpoint: this.atSailAngleSetpoint,\n touching: this.touching,\n autoAtSetpoint: this.autoAtSailAngleSetpoint,\n autoAtSetpointDeadband: this.autoAtSailAngleSetpointDeadband,\n setpointAtZeroDeadband: this.sailAngleSetpointAtZeroDeadband,\n setpointOverride: this.sailAngleSetpointOverride,\n animateSetpoint: this.animateSetpoint,\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._sailAngleSp.dispose();\n }\n\n private priorityFor(element: WindPropulsionPriorityElement): Priority {\n const selected = Array.isArray(this.priorityElements)\n ? this.priorityElements\n : [];\n return selected.includes(element) ? this.priority : Priority.regular;\n }\n\n private colorFor(element: WindPropulsionPriorityElement): string | undefined {\n return this.priorityFor(element) === Priority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : undefined;\n }\n\n private getPadding(): number {\n if (\n this.currentWindSpeedKnots != null &&\n this.currentWindFromDirection != null\n ) {\n return 72;\n }\n if (this.showLabels && !this.tickmarksInside) {\n return 60;\n }\n return 24;\n }\n\n private get angleAdviceRaw(): AngleAdviceRaw[] {\n return this.sailAngleAdvices.map((advice) => {\n const triggered =\n this.sailAngleSetpoint !== undefined &&\n mapAngle0to360(this.sailAngleSetpoint - advice.minAngle) <=\n mapAngle0to360(advice.maxAngle - advice.minAngle);\n let state: AdviceState;\n if (triggered) {\n state = AdviceState.triggered;\n } else if (advice.hinted) {\n state = AdviceState.hinted;\n } else {\n state = AdviceState.regular;\n }\n return {\n minAngle: advice.minAngle,\n maxAngle: advice.maxAngle,\n type: advice.type,\n state,\n };\n });\n }\n\n private getTickmarks(): Tickmark[] {\n const tickmarks: Tickmark[] = [];\n\n const labelText = (angle: number): string | undefined => {\n if (!this.showLabels) return undefined;\n return angle <= 180 ? `${angle}` : `${angle - 360}`;\n };\n\n tickmarks.push({\n angle: 0,\n type: TickmarkType.zeroLine,\n text: this.showLabels ? '0' : undefined,\n });\n\n for (const angle of [90, 180, 270]) {\n tickmarks.push({\n angle,\n type: TickmarkType.primary,\n text: labelText(angle),\n });\n }\n\n return tickmarks;\n }\n\n private renderSailImage() {\n const entry = sailTypeImages[this.sailType];\n if (!entry) return svg``;\n\n const sailPriority = this.priorityFor(WindPropulsionPriorityElement.sail);\n const arrowColor =\n sailPriority === Priority.enhanced\n ? 'var(--instrument-enhanced-secondary-color)'\n : 'var(--instrument-regular-secondary-color)';\n\n // Center each sail SVG on its visual center (cx/cy), falling back to\n // the geometric viewBox center (width/2, height/2).\n const cx = entry.cx ?? entry.width / 2;\n const cy = entry.cy ?? entry.height / 2;\n\n // Scale sails down so their top edge clears the directional arrow\n // with the same ~5px gap the arrow has from the watch ring.\n const sailScale = 0.95;\n\n // Fixed arrow radius matching compass/heading arrow positioning\n // (just inside RING2_RADIUS = 160).\n const arrowRadius = 155;\n\n return svg`\n <g style=\"transform: rotate(${this.sailAngle}deg)\">\n <g style=\"transform: scale(${sailScale}) translate(${-cx}px, ${-cy}px)\">\n ${entry.svg}\n </g>\n <path transform=\"translate(-15 ${-arrowRadius})\"\n d=\"M0.707007 14.2929L14.9999 0L29.2928 14.2929C29.9228 14.9229 29.4766 16 28.5857 16H1.41412C0.523211 16 0.0770419 14.9229 0.707007 14.2929Z\"\n fill=\"${arrowColor}\" vector-effect=\"non-scaling-stroke\"/>\n </g>\n `;\n }\n\n override render() {\n const tickmarks = this.getTickmarks();\n const padding = this.getPadding();\n const width = (176 + padding) * 2;\n const viewBox = `-${width / 2} -${width / 2} ${width} ${width}`;\n\n return html`\n <div class=\"container\">\n <obc-watch\n .touching=${this.touching}\n .padding=${padding}\n .tickmarks=${tickmarks}\n .state=${this.state}\n .priority=${this.priority}\n .angleSetpoint=${this.sailAngleSetpoint}\n .newAngleSetpoint=${this.newSailAngleSetpoint}\n .atAngleSetpoint=${this._sailAngleSp.computeAtSetpoint(\n this.sailAngle\n )}\n .angleSetpointAtZeroDeadband=${this.sailAngleSetpointAtZeroDeadband}\n .setpointOverride=${this.sailAngleSetpointOverride}\n .animateSetpoint=${this.animateSetpoint}\n .tickmarksInside=${this.tickmarksInside}\n .tickmarkStyle=${this.tickmarkStyle}\n .watchCircleType=${WatchCircleType.single}\n .advices=${this.angleAdviceRaw}\n .windKnots=${this.currentWindSpeedKnots}\n .windFromDirectionDeg=${this.currentWindFromDirection}\n .windColor=${this.colorFor(WindPropulsionPriorityElement.wind)}\n ></obc-watch>\n <svg viewBox=\"${viewBox}\" xmlns=\"http://www.w3.org/2000/svg\">\n ${this.renderSailImage()}\n </svg>\n <svg viewBox=\"${viewBox}\" xmlns=\"http://www.w3.org/2000/svg\">\n <g style=\"transform: rotate(${this.forceAngle}deg) scale(0.965)\">\n <g transform=\"translate(-256, -256)\">\n ${renderForceBar(\n this.force,\n this.maxForce,\n this.state,\n this.priorityFor(WindPropulsionPriorityElement.forceBar),\n this._forceBarMaskId\n )}\n </g>\n </g>\n </svg>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-wind-propulsion': ObcWindPropulsion;\n }\n}\n"],"names":["WindPropulsionPriorityElement"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oicl/openbridge-webcomponents",
3
- "version": "2.0.0-next.45",
3
+ "version": "2.0.0-next.47",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",