@trdrs/quickcharts 4.0.0 → 5.0.0

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 (105) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +325 -79
  3. package/dist/adapters/rest.d.ts +4 -4
  4. package/dist/adapters/rest.js +1 -1
  5. package/dist/adapters/rest.js.map +1 -1
  6. package/dist/ar-TG26ZCCE.js +1322 -0
  7. package/dist/ar-TG26ZCCE.js.map +1 -0
  8. package/dist/{assets-Gg-UquDA.d.ts → assets-DF3nozNV.d.ts} +167 -18
  9. package/dist/ca_ES-WJWH5BXU.js +1322 -0
  10. package/dist/ca_ES-WJWH5BXU.js.map +1 -0
  11. package/dist/{chunk-D3S26ARP.js → chunk-EXJAJZTN.js} +1 -1
  12. package/dist/chunk-EXJAJZTN.js.map +1 -0
  13. package/dist/{chunk-C4MEVUNK.js → chunk-Q3DCXQDW.js} +992 -284
  14. package/dist/chunk-Q3DCXQDW.js.map +1 -0
  15. package/dist/de-SUDTTPQ3.js +1322 -0
  16. package/dist/de-SUDTTPQ3.js.map +1 -0
  17. package/dist/drawings.d.ts +18 -7
  18. package/dist/drawings.js +7 -1
  19. package/dist/es-FOBXUK2X.js +1322 -0
  20. package/dist/es-FOBXUK2X.js.map +1 -0
  21. package/dist/feature-manifest.json +105 -9
  22. package/dist/fr-7KQC4IJH.js +1322 -0
  23. package/dist/fr-7KQC4IJH.js.map +1 -0
  24. package/dist/he_IL-2T6XBA6D.js +1322 -0
  25. package/dist/he_IL-2T6XBA6D.js.map +1 -0
  26. package/dist/id_ID-SI25N57C.js +1322 -0
  27. package/dist/id_ID-SI25N57C.js.map +1 -0
  28. package/dist/index.d.ts +952 -176
  29. package/dist/index.js +11905 -7472
  30. package/dist/index.js.map +1 -1
  31. package/dist/it-PMSTWZDL.js +1322 -0
  32. package/dist/it-PMSTWZDL.js.map +1 -0
  33. package/dist/ja-PABDRAXV.js +1322 -0
  34. package/dist/ja-PABDRAXV.js.map +1 -0
  35. package/dist/ko-JHRYYFCV.js +1322 -0
  36. package/dist/ko-JHRYYFCV.js.map +1 -0
  37. package/dist/ms_MY-U4EE5Q4V.js +1322 -0
  38. package/dist/ms_MY-U4EE5Q4V.js.map +1 -0
  39. package/dist/pl-4HCG3T3J.js +1322 -0
  40. package/dist/pl-4HCG3T3J.js.map +1 -0
  41. package/dist/pt-6LTNN653.js +1322 -0
  42. package/dist/pt-6LTNN653.js.map +1 -0
  43. package/dist/quickcharts.css +627 -208
  44. package/dist/{resources-Le6flcEn.d.ts → resources-XglhzzW0.d.ts} +5 -3
  45. package/dist/rest-openapi.json +16 -11
  46. package/dist/ru-LFHCSDBV.js +1322 -0
  47. package/dist/ru-LFHCSDBV.js.map +1 -0
  48. package/dist/sv-4XVUXYK6.js +1322 -0
  49. package/dist/sv-4XVUXYK6.js.map +1 -0
  50. package/dist/{symbols-6V22WaRX.d.ts → symbols-DdHLHQFC.d.ts} +77 -8
  51. package/dist/symbols.d.ts +1 -1
  52. package/dist/th-WM2PVA24.js +1322 -0
  53. package/dist/th-WM2PVA24.js.map +1 -0
  54. package/dist/theme-manifest.json +105 -21
  55. package/dist/tr-HMAZXSJM.js +1322 -0
  56. package/dist/tr-HMAZXSJM.js.map +1 -0
  57. package/dist/vi-ITFBV5B7.js +1322 -0
  58. package/dist/vi-ITFBV5B7.js.map +1 -0
  59. package/dist/zh-ZGU2RI7K.js +1322 -0
  60. package/dist/zh-ZGU2RI7K.js.map +1 -0
  61. package/dist/zh_TW-PNINSQ6F.js +1322 -0
  62. package/dist/zh_TW-PNINSQ6F.js.map +1 -0
  63. package/package.json +1 -1
  64. package/dist/ar-FXZ5QJUR.js +0 -1178
  65. package/dist/ar-FXZ5QJUR.js.map +0 -1
  66. package/dist/ca_ES-3WVKFBIF.js +0 -1178
  67. package/dist/ca_ES-3WVKFBIF.js.map +0 -1
  68. package/dist/chunk-C4MEVUNK.js.map +0 -1
  69. package/dist/chunk-D3S26ARP.js.map +0 -1
  70. package/dist/de-V72Q3OI7.js +0 -1178
  71. package/dist/de-V72Q3OI7.js.map +0 -1
  72. package/dist/es-CNQ3OJ6E.js +0 -1178
  73. package/dist/es-CNQ3OJ6E.js.map +0 -1
  74. package/dist/fr-5WQBCGR4.js +0 -1178
  75. package/dist/fr-5WQBCGR4.js.map +0 -1
  76. package/dist/he_IL-WXKA77UE.js +0 -1178
  77. package/dist/he_IL-WXKA77UE.js.map +0 -1
  78. package/dist/id_ID-XPBAYSWK.js +0 -1178
  79. package/dist/id_ID-XPBAYSWK.js.map +0 -1
  80. package/dist/it-DR2EBNWX.js +0 -1178
  81. package/dist/it-DR2EBNWX.js.map +0 -1
  82. package/dist/ja-URB2CPXO.js +0 -1178
  83. package/dist/ja-URB2CPXO.js.map +0 -1
  84. package/dist/ko-OE47NYVP.js +0 -1178
  85. package/dist/ko-OE47NYVP.js.map +0 -1
  86. package/dist/ms_MY-BKCFRK2K.js +0 -1178
  87. package/dist/ms_MY-BKCFRK2K.js.map +0 -1
  88. package/dist/pl-3IKQRG3Y.js +0 -1178
  89. package/dist/pl-3IKQRG3Y.js.map +0 -1
  90. package/dist/pt-PZHV5EZE.js +0 -1178
  91. package/dist/pt-PZHV5EZE.js.map +0 -1
  92. package/dist/ru-BAL6RQUV.js +0 -1178
  93. package/dist/ru-BAL6RQUV.js.map +0 -1
  94. package/dist/sv-Y6GBGDHM.js +0 -1178
  95. package/dist/sv-Y6GBGDHM.js.map +0 -1
  96. package/dist/th-MAMLMZKU.js +0 -1178
  97. package/dist/th-MAMLMZKU.js.map +0 -1
  98. package/dist/tr-3LQHINUZ.js +0 -1178
  99. package/dist/tr-3LQHINUZ.js.map +0 -1
  100. package/dist/vi-GR4PSDKP.js +0 -1178
  101. package/dist/vi-GR4PSDKP.js.map +0 -1
  102. package/dist/zh-2RJ5VNAI.js +0 -1178
  103. package/dist/zh-2RJ5VNAI.js.map +0 -1
  104. package/dist/zh_TW-XEBSACHU.js +0 -1178
  105. package/dist/zh_TW-XEBSACHU.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/ca_ES/legend.ts","../src/i18n/ca_ES/tools.ts","../src/i18n/ca_ES/menu.ts","../src/i18n/ca_ES/replay.ts","../src/i18n/ca_ES/inputs.ts","../src/i18n/ca_ES/session.ts","../src/i18n/ca_ES/layouts.ts","../src/i18n/ca_ES/host.ts","../src/i18n/ca_ES/indicators.ts","../src/i18n/ca_ES/timeframe.ts","../src/i18n/ca_ES/timezone.ts","../src/i18n/ca_ES/range.ts","../src/i18n/ca_ES/status.ts","../src/i18n/ca_ES/search.ts","../src/i18n/ca_ES/drawing.ts","../src/i18n/ca_ES/command.ts","../src/i18n/ca_ES/chrome.ts","../src/i18n/ca_ES/history.ts","../src/i18n/ca_ES/picker.ts","../src/i18n/ca_ES/settings.ts","../src/i18n/ca_ES/toast.ts","../src/i18n/ca_ES/index.ts"],"sourcesContent":["import type { Translation } from '../runtime'\nimport type { legend as source } from '../en/legend'\n\nexport const legend: Translation<typeof source> = {\n 'legend.open': 'O',\n 'legend.high': 'Màx',\n 'legend.low': 'Mín',\n 'legend.close': 'T',\n 'legend.change': '{change} ({percent}%)',\n 'legend.volume': 'Vol',\n 'legend.indicatorSettings': 'Configuració de l’indicador',\n 'legend.showRows': 'Mostra les files d’indicadors',\n 'legend.hideRows': 'Amaga les files d’indicadors',\n 'legend.restorePane': 'Restaura el panell',\n 'legend.collapsePane': 'Redueix el panell',\n 'legend.maximizePane': 'Maximitza el panell',\n 'legend.movePaneUp': 'Mou el panell amunt',\n 'legend.movePaneDown': 'Mou el panell avall',\n 'legend.showIndicator': 'Mostra l’indicador',\n 'legend.hideIndicator': 'Amaga l’indicador',\n 'legend.scaleNormal': 'Reg',\n 'legend.scaleLog': 'Log',\n 'legend.scalePercent': '%',\n 'legend.scaleIndexed': '100',\n 'legend.changeSymbol': 'Canvia el símbol',\n 'legend.removeCompare': 'Elimina la comparació',\n 'legend.removeIndicator': 'Elimina l’indicador',\n}\n","import type { Translation } from '../runtime'\nimport type { tools as source } from '../en/tools'\n\nexport const tools: Translation<typeof source> = {\n 'tool.trend_line': 'Línia de tendència',\n 'tool.ray': 'Raig',\n 'tool.info_line': 'Línia informativa',\n 'tool.extended': 'Línia estesa',\n 'tool.trend_angle': 'Angle de tendència',\n 'tool.horizontal_line': 'Línia horitzontal',\n 'tool.horizontal_ray': 'Raig horitzontal',\n 'tool.vertical_line': 'Línia vertical',\n 'tool.cross_line': 'Línia creuada',\n 'tool.arrow': 'Fletxa',\n 'tool.rectangle': 'Rectangle',\n 'tool.rotated_rectangle': 'Rectangle girat',\n 'tool.ellipse': 'El·lipse',\n 'tool.circle': 'Cercle',\n 'tool.triangle': 'Triangle',\n 'tool.arc': 'Arc',\n 'tool.curve': 'Corba',\n 'tool.double_curve': 'Corba doble',\n 'tool.regression_trend': 'Tendència de regressió',\n 'tool.parallel_channel': 'Canal paral·lel',\n 'tool.flat_top_bottom': 'Màxim/mínim plans',\n 'tool.disjoint_channel': 'Canal disjunt',\n 'tool.fib_retracement': 'Retrocés de Fibonacci',\n 'tool.fib_trend_ext': 'Extensió de Fibonacci per tendència',\n 'tool.fib_channel': 'Canal de Fibonacci',\n 'tool.fib_timezone': 'Zona temporal de Fibonacci',\n 'tool.fib_speed_resist_fan': 'Ventall de velocitat i resistència de Fibonacci',\n 'tool.fib_trend_time': 'Temps de Fibonacci per tendència',\n 'tool.fib_circles': 'Cercles de Fibonacci',\n 'tool.fib_spiral': 'Espiral de Fibonacci',\n 'tool.fib_speed_resist_arcs': 'Arcs de velocitat i resistència de Fibonacci',\n 'tool.fib_wedge': 'Falca de Fibonacci',\n 'tool.pitchfan': 'Ventall de forca',\n 'tool.pitchfork': 'Forca',\n 'tool.schiff_pitchfork': 'Forca de Schiff',\n 'tool.schiff_pitchfork_modified': 'Forca de Schiff modificada',\n 'tool.inside_pitchfork': 'Forca interna',\n 'tool.gannbox': 'Caixa de Gann',\n 'tool.gannbox_square': 'Quadrat de Gann',\n 'tool.gannbox_fixed': 'Quadrat de Gann fix',\n 'tool.gannbox_fan': 'Ventall de Gann',\n 'tool.xabcd_pattern': 'Patró XABCD',\n 'tool.cypher_pattern': 'Patró Cypher',\n 'tool.abcd_pattern': 'Patró ABCD',\n 'tool.three_drives': 'Patró de tres impulsos',\n 'tool.triangle_pattern': 'Patró de triangle',\n 'tool.head_and_shoulders': 'Cap i espatlles',\n 'tool.elliott_impulse_wave': 'Impuls d’Elliott (12345)',\n 'tool.elliott_correction': 'Correcció d’Elliott (ABC)',\n 'tool.elliott_triangle_wave': 'Triangle d’Elliott (ABCDE)',\n 'tool.elliott_double_combo': 'Combinació doble d’Elliott (WXY)',\n 'tool.elliott_triple_combo': 'Combinació triple d’Elliott (WXYXZ)',\n 'tool.cyclic_lines': 'Línies cícliques',\n 'tool.time_cycles': 'Cicles temporals',\n 'tool.sine_line': 'Línia sinusoidal',\n 'tool.long_position': 'Posició llarga',\n 'tool.short_position': 'Posició curta',\n 'tool.forecast': 'Previsió de posició',\n 'tool.sector': 'Sector',\n 'tool.bars_pattern': 'Patró de barres',\n 'tool.ghost_feed': 'Feed fantasma',\n 'tool.anchored_vwap': 'VWAP ancorat',\n 'tool.fixed_range_volume_profile': 'Perfil de volum de rang fix',\n 'tool.anchored_volume_profile': 'Perfil de volum ancorat',\n 'tool.image': 'Imatge',\n 'tool.emoji': 'Emoji',\n 'tool.sticker': 'Adhesiu',\n 'tool.icon': 'Icona',\n 'tool.text': 'Text',\n 'tool.note': 'Nota',\n 'tool.comment': 'Comentari',\n 'tool.callout': 'Globus',\n 'tool.price_label': 'Etiqueta de preu',\n 'tool.arrow_up': 'Marca de fletxa amunt',\n 'tool.arrow_down': 'Marca de fletxa avall',\n 'tool.arrow_marker': 'Marcador de fletxa',\n 'tool.flag': 'Marca de bandera',\n 'tool.price_note': 'Nota de preu',\n 'tool.pin': 'Xinxeta',\n 'tool.signpost': 'Senyal',\n 'tool.table': 'Taula',\n 'tool.brush': 'Pinzell',\n 'tool.highlighter': 'Marcador fluorescent',\n 'tool.path': 'Camí',\n 'tool.polyline': 'Polilínia',\n 'tool.price_range': 'Rang de preus',\n 'tool.date_range': 'Rang de dates',\n 'tool.date_and_price_range': 'Rang de dates i preus',\n 'tool.measure': 'Mesura',\n}\n","import type { Translation } from '../runtime'\nimport type { menu as source } from '../en/menu'\n\nexport const menu: Translation<typeof source> = {\n 'menu.resetView': 'Restableix la vista del gràfic',\n 'menu.copyPrice': 'Copia el preu {price}',\n 'menu.paste': 'Enganxa',\n 'menu.removeIndicators': { one: 'Elimina {count} indicador', many: 'Elimina {count} indicadors', other: 'Elimina {count} indicadors' },\n 'menu.removeDrawings': { one: 'Elimina {count} dibuix', many: 'Elimina {count} dibuixos', other: 'Elimina {count} dibuixos' },\n 'menu.settings': 'Configuració…',\n 'menu.drawHorizontalLine': 'Dibuixa una línia horitzontal a {price}',\n}\n","import type { Translation } from '../runtime'\nimport type { replay as source } from '../en/replay'\n\nexport const replay: Translation<typeof source> = {\n 'replay.watermark': 'Repetició',\n 'replay.selectBar': 'Selecciona una barra',\n 'replay.selectDate': 'Selecciona una data',\n 'replay.selectStartingPoint': 'Selecciona el punt de partida',\n 'replay.startBar': 'Barra',\n 'replay.startDate': 'Data…',\n 'replay.startFirst': 'Primera data disponible',\n 'replay.startRandom': 'Barra aleatòria',\n 'replay.close': 'Tanca',\n 'replay.startDateField': 'Data d’inici de la repetició',\n 'replay.startTimeField': 'Hora d’inici de la repetició (UTC, opcional)',\n 'replay.dateMask': 'YYYY-MM-DD',\n 'replay.timeMask': 'HH:MM',\n 'replay.chooseTime': 'Tria una hora',\n 'replay.previousMonth': 'Mes anterior, {month}',\n 'replay.nextMonth': 'Mes següent, {month}',\n 'replay.previousYear': 'Any anterior, {year}',\n 'replay.nextYear': 'Any següent, {year}',\n 'replay.previousYears': 'Anys anteriors, {years}',\n 'replay.nextYears': 'Anys següents, {years}',\n 'replay.showMonths': 'Canvia als mesos, {year}',\n 'replay.showYears': 'Canvia als anys, {years}',\n 'replay.showDates': 'Canvia als dies, {month}',\n 'replay.yearRange': '{from} - {to}',\n 'replay.months': 'Mesos',\n 'replay.years': 'Anys',\n 'replay.firstAvailableDay': 'Selecciona el primer dia disponible',\n 'replay.cancel': 'Cancel·la',\n 'replay.select': 'Selecciona',\n 'replay.weekdayMon': 'Dl',\n 'replay.weekdayTue': 'Dt',\n 'replay.weekdayWed': 'Dc',\n 'replay.weekdayThu': 'Dj',\n 'replay.weekdayFri': 'Dv',\n 'replay.weekdaySat': 'Ds',\n 'replay.weekdaySun': 'Dg',\n 'replay.stepBack': 'Retrocedeix una barra',\n 'replay.play': 'Reprodueix',\n 'replay.pause': 'Pausa',\n 'replay.stepForward': 'Avança una barra',\n 'replay.goLiveTitle': 'Salta a l’extrem en directe',\n 'replay.exit': 'Surt de la repetició',\n 'replay.speed': 'Velocitat de repetició',\n 'replay.updatesPerSecond': { one: '{count} actualització per segon', many: '{count} actualitzacions per segon', other: '{count} actualitzacions per segon' },\n 'replay.oneUpdatePerSeconds': { one: '1 actualització cada {count} segon', many: '1 actualització cada {count} segons', other: '1 actualització cada {count} segons' },\n 'replay.timeframe': 'Interval d’actualització',\n 'replay.timeframeHelp': 'Quant de temps avança cada actualització de la repetició. Si és més fi que l’interval del gràfic, cada barra es forma amb barres reals més fines.',\n 'replay.timeframeNone': 'No hi ha cap interval més fi per a aquest interval del gràfic',\n 'replay.auto': 'Automàtic',\n 'replay.autoSelectTimeframe': 'Selecciona l’interval automàticament',\n}\n","import type { Translation } from '../runtime'\nimport type { inputs as source } from '../en/inputs'\n\nexport const inputs: Translation<typeof source> = {\n 'inputs.cancel': 'Cancel·la',\n 'inputs.apply': 'Aplica',\n}\n","import type { Translation } from '../runtime'\nimport type { session as source } from '../en/session'\n\nexport const session: Translation<typeof source> = {\n 'session.pre': 'Preobertura',\n 'session.open': 'Mercat obert',\n 'session.extended': 'Horari ampliat',\n 'session.after': 'Postmercat',\n 'session.closed': 'Mercat tancat',\n}\n","import type { Translation } from '../runtime'\nimport type { layouts as source } from '../en/layouts'\n\nexport const layouts: Translation<typeof source> = {\n 'layout.s': 'Un sol gràfic',\n 'layout.2h': '2 columnes',\n 'layout.2v': '2 files',\n 'layout.3h': '3 columnes',\n 'layout.3v': '3 files',\n 'layout.3s': 'Gran a l’esquerra, 2 apilats a la dreta',\n 'layout.3r': '2 apilats a l’esquerra, gran a la dreta',\n 'layout.2_1': '2 a dalt, 1 a baix',\n 'layout.1_2': '1 a dalt, 2 a baix',\n 'layout.4': 'Quadrícula 2 × 2',\n 'layout.4v': '4 files',\n 'layout.4h': '4 columnes',\n 'layout.4s': 'Gran a l’esquerra, 3 apilats a la dreta',\n 'layout.4s_l': '3 apilats a l’esquerra, gran a la dreta',\n 'layout.1_3': '1 a dalt, 3 a baix',\n 'layout.3_1': '3 a dalt, 1 a baix',\n 'layout.2_2_l': '2 columnes, 2 apilats a la dreta',\n 'layout.2_2_r': '2 apilats a l’esquerra, 2 columnes',\n 'layout.2_2': '2 a dalt, 2 files d’amplada completa a baix',\n 'layout.1_4': '1 a dalt, 4 a baix',\n 'layout.5h': '5 columnes',\n 'layout.5v': '5 files',\n 'layout.5s': 'Gran a l’esquerra, 4 apilats a la dreta',\n 'layout.5s_l': '4 apilats a l’esquerra, gran a la dreta',\n 'layout.2_3': '2 a dalt, 3 a baix',\n 'layout.3_2': '3 a dalt, 2 a baix',\n 'layout.4_1': '4 a dalt, 1 a baix',\n 'layout.2_3_l': '2 columnes, 3 apilats a la dreta',\n 'layout.2_3_r': '3 apilats a l’esquerra, 2 columnes',\n 'layout.6': 'Quadrícula 3 × 2',\n 'layout.6h': '6 columnes',\n 'layout.6v': '6 files',\n 'layout.6c': 'Quadrícula 2 × 3',\n 'layout.2_4': '2 a dalt, 4 a baix',\n 'layout.4_2': '4 a dalt, 2 a baix',\n 'layout.4_3': '4 a dalt, 3 a baix',\n 'layout.7h': '7 columnes',\n 'layout.7s': 'Gran a l’esquerra, 6 apilats a la dreta',\n 'layout.8': 'Quadrícula 4 × 2',\n 'layout.8c': 'Quadrícula 2 × 4',\n 'layout.8h': '8 columnes',\n 'layout.8v': '8 files',\n 'layout.9s': 'Quadrícula 3 × 3',\n 'layout.5_4': '5 a dalt, 4 a baix',\n 'layout.9h': '9 columnes',\n 'layout.9v': '9 files',\n 'layout.10c5': 'Quadrícula 5 × 2',\n 'layout.10h': '10 columnes',\n 'layout.10v': '10 files',\n 'layout.12c6': 'Quadrícula 6 × 2',\n 'layout.12c4': 'Quadrícula 4 × 3',\n 'layout.12h': '12 columnes',\n 'layout.14c7': 'Quadrícula 7 × 2',\n 'layout.16c8': 'Quadrícula 8 × 2',\n 'layout.16c4': 'Quadrícula 4 × 4',\n 'layouts.setup': 'Configuració del disseny',\n 'layouts.arrangement': 'Disposició dels gràfics',\n 'layouts.syncInLayout': 'Sincronitza al disseny',\n 'layouts.syncSymbol': 'Símbol',\n 'layouts.syncTimeframe': 'Interval',\n 'layouts.syncCrosshair': 'Creu',\n 'layouts.syncTime': 'Hora',\n 'layouts.syncDateRange': 'Rang de dates',\n 'layouts.syncSymbolTip': 'El símbol canvia a tots els gràfics del disseny',\n 'layouts.syncTimeframeTip': 'L’interval canvia a tots els gràfics del disseny',\n 'layouts.syncCrosshairTip': 'La creu se sincronitza a tots els gràfics del disseny',\n 'layouts.syncTimeTip': 'En fer clic en un gràfic, tots els gràfics del disseny mostren el mateix moment',\n 'layouts.syncDateRangeTip': 'El rang de dates canvia a tots els gràfics del disseny',\n 'layouts.syncSymbolToggle': 'Sincronitza el símbol',\n 'layouts.syncTimeframeToggle': 'Sincronitza l’interval',\n 'layouts.syncCrosshairToggle': 'Sincronitza la creu',\n 'layouts.syncTimeToggle': 'Sincronitza l’hora',\n 'layouts.syncDateRangeToggle': 'Sincronitza el rang de dates',\n 'layouts.unnamed': 'Sense nom',\n 'layouts.unsavedChanges': 'Canvis sense desar',\n 'layouts.allSaved': 'S’han desat tots els canvis',\n 'layouts.notSaving': 'No es desa fins que es restableixi',\n 'layouts.manage': 'Gestiona els dissenys',\n 'layouts.saveLayout': 'Desa el disseny',\n 'layouts.hintSave': '{modifier} + S',\n 'layouts.hintOpen': 'Punt',\n 'layouts.save': 'Desa',\n 'layouts.autosave': 'Desament automàtic',\n 'layouts.rename': 'Canvia el nom',\n 'layouts.copyOfName': '{name} (còpia)',\n 'layouts.saveNewTitle': 'Desa un disseny de gràfic nou',\n 'layouts.saveNewLabel': 'Introdueix un nom per al disseny de gràfic nou:',\n 'layouts.copyTitle': 'Fes una còpia del disseny de gràfic',\n 'layouts.renameTitle': 'Canvia el nom del disseny de gràfic',\n 'layouts.createTitle': 'Crea un disseny',\n 'layouts.newLayoutName': 'Nom del disseny nou',\n 'layouts.createPlaceholder': 'El meu disseny',\n 'layouts.create': 'Crea',\n 'layouts.makeCopyRow': 'Fes una còpia…',\n 'layouts.renameRow': 'Canvia el nom…',\n 'layouts.downloadDataRow': 'Baixa les dades del gràfic',\n 'layouts.createNewRow': 'Crea un disseny nou…',\n 'layouts.recentlyUsed': 'Utilitzats recentment',\n 'layouts.loading': 'S’està carregant',\n 'layouts.emptyNone': 'Encara no hi ha cap disseny desat.',\n 'layouts.openLayoutRow': 'Obre un disseny…',\n 'layouts.listingFacts': '{symbol}, {timeframe}',\n 'layouts.listingDated': '{facts} ({date})',\n 'layouts.dialogTitle': 'Dissenys',\n 'layouts.search': 'Cerca',\n 'layouts.columnName': 'Nom del disseny',\n 'layouts.sortBy': 'Ordena per nom del disseny o data de canvi',\n 'layouts.sortNameAsc': 'Nom del disseny (de la A a la Z)',\n 'layouts.sortNameDesc': 'Nom del disseny (de la Z a la A)',\n 'layouts.sortModifiedAsc': 'Data de modificació (primer el més antic)',\n 'layouts.sortModifiedDesc': 'Data de modificació (primer el més recent)',\n 'layouts.favorite': 'Afegeix als preferits',\n 'layouts.unfavorite': 'Treu dels preferits',\n 'layouts.noMatches': 'No hi ha coincidències.',\n 'layouts.delete': 'Suprimeix',\n 'layouts.deleteNamed': 'Suprimeix {name}',\n 'layouts.deleteConfirm': 'Vols suprimir aquest disseny de gràfic?',\n 'layouts.deleteConfirmBody': 'El disseny «{name}» se suprimirà permanentment.',\n 'layouts.cancel': 'Cancel·la',\n 'layouts.close': 'Tanca',\n 'layouts.errList': 'No s’han pogut carregar els dissenys desats.',\n}\n","import type { Translation } from '../runtime'\nimport type { host as source } from '../en/host'\n\nexport const host: Translation<typeof source> = {\n 'host.noVolume': 'Aquest feed no proporciona volum',\n 'host.saveConflict': 'S’ha desat en un altre lloc després d’obrir-lo. Carrega la versió més nova abans de desar.',\n 'host.saveNotFound': 'S’ha suprimit en un altre lloc. Torna a desar-lo com a nou.',\n 'host.loadInvalid': 'No s’ha pogut obrir. No ha canviat res a la pantalla.',\n 'host.loadUnavailable': 'No s’ha pogut accedir a la feina desada. No ha canviat res a la pantalla.',\n 'host.loadNotRestored': 'No s’ha pogut obrir, i tampoc no s’ha pogut restablir el que hi havia a la pantalla. El gràfic no desarà fins que obris un gràfic o un disseny desat. Desa primer una còpia per conservar el que hi ha a la pantalla.',\n 'host.notSaving': 'El gràfic no està desant. Obre un gràfic o un disseny desat per començar des d’un estat conegut. Desar una còpia conserva el que hi ha a la pantalla, però el gràfic continuarà sense desar.',\n}\n","import type { Translation } from '../runtime'\nimport type { indicators as source } from '../en/indicators'\n\nexport const indicators: Translation<typeof source> = {\n 'indicator.smaName': 'Mitjana mòbil simple',\n 'indicator.smaDescription': 'Mitjana suavitzada sobre una finestra fixa',\n 'indicator.emaName': 'Mitjana mòbil exponencial',\n 'indicator.emaDescription': 'Mitjana mòbil que pondera més les dades recents',\n 'indicator.hmaName': 'Mitjana mòbil de Hull',\n 'indicator.hmaDescription': 'Mitjana mòbil ponderada de retard baix',\n 'indicator.vwmaName': 'MM ponderada pel volum',\n 'indicator.vwmaDescription': 'Mitjana mòbil ponderada pel volum',\n 'indicator.bollingerName': 'Bandes de Bollinger',\n 'indicator.bollingerDescription': 'Envolupant de la SMA a dues desviacions estàndard',\n 'indicator.donchianName': 'Canals de Donchian',\n 'indicator.donchianDescription': 'Canal mòbil del màxim més alt i el mínim més baix',\n 'indicator.keltnerName': 'Canals de Keltner',\n 'indicator.keltnerDescription': 'Línia mitjana EMA amb bandes escalades per l’ATR',\n 'indicator.supertrendName': 'Supertrend',\n 'indicator.supertrendDescription': 'Banda de tendència ATR que canvia amb la direcció',\n 'indicator.psarName': 'SAR parabòlic',\n 'indicator.psarDescription': 'Punts de seguiment stop-and-reverse',\n 'indicator.rsiName': 'Índex de força relativa',\n 'indicator.rsiDescription': 'Oscil·lador de moment de 0 a 100',\n 'indicator.macdName': 'MACD',\n 'indicator.macdDescription': 'Convergència/divergència de mitjanes mòbils',\n 'indicator.stochasticName': 'Oscil·lador estocàstic',\n 'indicator.stochasticDescription': 'Moment %K i %D de 0 a 100',\n 'indicator.stochrsiName': 'RSI estocàstic',\n 'indicator.stochrsiDescription': 'Estocàstic aplicat a la sèrie de l’RSI',\n 'indicator.adxName': 'Índex direccional mitjà',\n 'indicator.adxDescription': 'Força de la tendència amb +DI i -DI',\n 'indicator.atrName': 'Rang veritable mitjà',\n 'indicator.atrDescription': 'Volatilitat: mitjana del rang veritable de Wilder',\n 'indicator.cciName': 'Índex de canal de matèries primeres',\n 'indicator.cciDescription': 'Desviació respecte a la mitjana del preu típic',\n 'indicator.williamsName': 'Williams %R',\n 'indicator.williamsDescription': 'Moment de sobrecompra i sobrevenda de -100 a 0',\n 'indicator.rocName': 'Taxa de canvi',\n 'indicator.rocDescription': 'Variació percentual en el període',\n 'indicator.momentumName': 'Moment',\n 'indicator.momentumDescription': 'Diferència de preu en el període',\n 'indicator.volumeName': 'Volum',\n 'indicator.volumeDescription': 'Histograma del volum negociat per barra',\n 'indicator.vwapName': 'Preu mitjà ponderat pel volum',\n 'indicator.vwapDescription': 'Preu mitjà acumulat ponderat pel volum',\n 'indicator.obvName': 'Volum en balanç',\n 'indicator.obvDescription': 'Volum acumulat segons la direcció del tancament',\n 'indicator.mfiName': 'Índex de flux de diners',\n 'indicator.mfiDescription': 'RSI ponderat pel volum de 0 a 100',\n}\n","import type { Translation } from '../runtime'\nimport type { timeframe as source } from '../en/timeframe'\n\nexport const timeframe: Translation<typeof source> = {\n 'timeframe.title': 'Interval',\n 'timeframe.all': 'Tots els intervals',\n 'timeframe.unitTicks': 'Ticks',\n 'timeframe.unitSeconds': 'Segons',\n 'timeframe.unitMinutes': 'Minuts',\n 'timeframe.unitHours': 'Hores',\n 'timeframe.unitDays': 'Dies',\n 'timeframe.unitWeeks': 'Setmanes',\n 'timeframe.unitMonths': 'Mesos',\n 'timeframe.countTicks': { one: '{count} tick', many: '{count} ticks', other: '{count} ticks' },\n 'timeframe.countSeconds': { one: '{count} segon', many: '{count} segons', other: '{count} segons' },\n 'timeframe.countMinutes': { one: '{count} minut', many: '{count} minuts', other: '{count} minuts' },\n 'timeframe.countHours': { one: '{count} hora', many: '{count} hores', other: '{count} hores' },\n 'timeframe.countDays': { one: '{count} dia', many: '{count} dies', other: '{count} dies' },\n 'timeframe.countWeeks': { one: '{count} setmana', many: '{count} setmanes', other: '{count} setmanes' },\n 'timeframe.countMonths': { one: '{count} mes', many: '{count} mesos', other: '{count} mesos' },\n 'timeframe.delete': 'Elimina {timeframe}',\n 'timeframe.save': 'Desa {timeframe}',\n 'timeframe.exists': '{timeframe} ja existeix',\n 'timeframe.custom': 'Interval personalitzat',\n 'timeframe.customCount': 'Nombre de l’interval personalitzat',\n 'timeframe.customUnit': 'Unitat de l’interval personalitzat',\n 'timeframe.addCustom': 'Afegeix un interval personalitzat',\n 'timeframe.increment': 'Incrementa',\n 'timeframe.decrement': 'Decrementa',\n}\n","import type { Translation } from '../runtime'\nimport type { timezone as source } from '../en/timezone'\n\nexport const timezone: Translation<typeof source> = {\n 'timezone.title': 'Fus horari del gràfic',\n 'timezone.exchange': 'Borsa',\n 'timezone.quarter': 'T{quarter}',\n}\n","import type { Translation } from '../runtime'\nimport type { range as source } from '../en/range'\n\nexport const range: Translation<typeof source> = {\n 'range.oneDay': '1 dia',\n 'range.fiveDays': '5 dies',\n 'range.oneMonth': '1 mes',\n 'range.threeMonths': '3 mesos',\n 'range.sixMonths': '6 mesos',\n 'range.yearToDate': 'Any en curs',\n 'range.oneYear': '1 any',\n 'range.fiveYears': '5 anys',\n 'range.all': 'Totes les dades',\n 'range.tip': '{range} · barres de {timeframe}',\n 'range.zoomIn': 'Amplia',\n 'range.zoomOut': 'Redueix',\n 'range.scrollLeft': 'Desplaça a l’esquerra',\n 'range.scrollRight': 'Desplaça a la dreta',\n 'range.reset': 'Restableix la vista del gràfic',\n 'range.maximizeChart': 'Maximitza el gràfic',\n 'range.restoreChart': 'Restaura el gràfic',\n}\n","import type { Translation } from '../runtime'\nimport type { status as source } from '../en/status'\n\nexport const status: Translation<typeof source> = {\n 'status.title': 'Estat del mercat',\n 'status.unknownTitle': 'Sessió desconeguda',\n 'status.unknown': 'Encara no s’ha resolt la sessió de negociació d’aquest símbol.',\n 'status.endOfDayTitle': 'Final del dia',\n 'status.endOfDay': 'Els preus s’actualitzen un cop al dia, després del tancament de la sessió.',\n 'status.delayed': 'Els preus tenen retard.',\n 'status.delayedPair': '{status} {delay}',\n 'status.continuousTitle': 'Obert 24/7',\n 'status.continuous': 'Aquest mercat cotitza les 24 hores i no tanca mai.',\n 'status.open': 'El mercat és obert per a la negociació regular.',\n 'status.openCloses': 'El mercat és obert per a la negociació regular. Tanca d’aquí a {until}.',\n 'status.extended': 'El mercat està obert en horari ampliat.',\n 'status.extendedRegular': 'El mercat està obert en horari ampliat. L’horari regular comença d’aquí a {until}.',\n 'status.extendedCloses': 'El mercat està obert en horari ampliat. Tanca d’aquí a {until}.',\n 'status.pre': 'El mercat és obert per a la negociació de preobertura.',\n 'status.preRegular': 'El mercat és obert per a la negociació de preobertura. L’horari regular comença d’aquí a {until}.',\n 'status.after': 'El mercat és obert per a la negociació posterior al tancament.',\n 'status.afterEnds': 'El mercat és obert per a la negociació posterior al tancament. Acaba d’aquí a {until}.',\n 'status.closed': 'El mercat és tancat.',\n 'status.closedPre': 'El mercat és tancat. La preobertura comença d’aquí a {until}.',\n 'status.closedOpens': 'El mercat és tancat. Obre d’aquí a {until}.',\n 'status.exchangeTimezone': 'Fus horari de la borsa: {zone}',\n 'status.durationDays': { one: '{count} dia', many: '{count} dies', other: '{count} dies' },\n 'status.durationHours': { one: '{count} hora', many: '{count} hores', other: '{count} hores' },\n 'status.durationMinutes': { one: '{count} minut', many: '{count} minuts', other: '{count} minuts' },\n 'status.durationPair': '{major} {minor}',\n}\n","import type { Translation } from '../runtime'\nimport type { search as source } from '../en/search'\n\nexport const search: Translation<typeof source> = {\n 'search.title': 'Cerca de símbols',\n 'search.compareTitle': 'Compara símbols',\n 'search.changeSymbolTitle': 'Canvia el símbol',\n 'search.placeholder': 'Cerca un símbol',\n 'search.clear': 'Esborra',\n 'search.close': 'Tanca',\n 'search.noMatches': 'Cap símbol no coincideix amb els criteris',\n 'search.loadingMore': 'S’estan carregant més resultats',\n 'search.failed': 'La cerca ha fallat.',\n 'search.results': 'Símbols',\n 'search.samePercent': 'Mateixa escala %',\n 'search.newScale': 'Nova escala de preus',\n 'search.newPane': 'Nou panell',\n 'search.added': 'Símbols afegits',\n 'search.recent': 'Símbols recents',\n 'search.addedMark': '{symbol} és al gràfic. Fes clic per eliminar-lo.',\n 'search.compareEmpty': 'Encara no hi ha símbols. Per què no n’afegeixes alguns?',\n 'search.allClasses': 'Tots',\n 'search.classFilter': 'Classe d’actiu',\n 'search.limitToScope': 'Limita la cerca a {scope}',\n 'search.opDivision': 'Divisió',\n 'search.opSubtraction': 'Resta',\n 'search.opAddition': 'Suma',\n 'search.opMultiplication': 'Multiplicació',\n 'search.opExponentiation': 'Exponenciació',\n 'search.opReciprocal': 'Recíproc',\n 'search.opsHide': 'Amaga els operadors de spread',\n 'search.opsShow': 'Mostra els operadors de spread',\n 'search.ops': 'Operadors de diferencial',\n}\n","import type { Translation } from '../runtime'\nimport type { drawing as source } from '../en/drawing'\n\nexport const drawing: Translation<typeof source> = {\n 'drawing.toolbar': 'Eines de dibuix',\n 'drawing.groupTrend': 'Eines de tendència',\n 'drawing.groupFibGann': 'Fibonacci i Gann',\n 'drawing.groupPatterns': 'Patrons',\n 'drawing.groupForecast': 'Previsió i mesura',\n 'drawing.groupGlyphs': 'Emojis i adhesius',\n 'drawing.shapes': 'Formes',\n 'drawing.textNotes': 'Text i notes',\n 'drawing.groupMenu': 'Menú {group}',\n 'drawing.sectionLines': 'Línies',\n 'drawing.sectionChannels': 'Canals',\n 'drawing.sectionPitchforks': 'Forques',\n 'drawing.sectionFibonacci': 'Fibonacci',\n 'drawing.sectionGann': 'Gann',\n 'drawing.sectionChartPatterns': 'Patrons gràfics',\n 'drawing.sectionElliott': 'Ones d’Elliott',\n 'drawing.sectionCycles': 'Cicles',\n 'drawing.sectionForecasting': 'Previsió',\n 'drawing.sectionVolumeBased': 'Basades en el volum',\n 'drawing.sectionMeasures': 'Mesures',\n 'drawing.sectionBrushes': 'Pinzells',\n 'drawing.sectionArrows': 'Fletxes',\n 'drawing.sectionContent': 'Contingut',\n 'drawing.sectionGlyphs': 'Emojis, adhesius, icones',\n 'drawing.cursor': 'Cursor',\n 'drawing.cursorMenu': 'Menú del cursor',\n 'drawing.cursorCross': 'Creu',\n 'drawing.cursorDot': 'Punt',\n 'drawing.cursorArrow': 'Fletxa',\n 'drawing.cursorEraser': 'Goma',\n 'drawing.measure': 'Mesura',\n 'drawing.zoomIn': 'Amplia',\n 'drawing.magnet': 'Imant',\n 'drawing.magnetMenu': 'Menú de l’imant',\n 'drawing.magnetWeak': 'Imant feble',\n 'drawing.magnetStrong': 'Imant fort',\n 'drawing.stayInDrawingMode': 'Continua en mode de dibuix',\n 'drawing.lockAll': 'Bloqueja tots els dibuixos',\n 'drawing.unlockAll': 'Desbloqueja tots els dibuixos',\n 'drawing.hideMenu': 'Menú d’amagar',\n 'drawing.hideDrawings': 'Amaga els dibuixos',\n 'drawing.showDrawings': 'Mostra els dibuixos',\n 'drawing.hideIndicators': 'Amaga els indicadors',\n 'drawing.showIndicators': 'Mostra els indicadors',\n 'drawing.hideAll': 'Amaga-ho tot',\n 'drawing.showAll': 'Mostra-ho tot',\n 'drawing.syncLabel': 'Sincronitza els dibuixos al disseny',\n 'drawing.syncOnHelp': 'Els dibuixos nous es repliquen a tots els gràfics del disseny i es mostren quan se selecciona el mateix símbol',\n 'drawing.syncOffHelp': 'Els dibuixos nous es queden al gràfic on s’han dibuixat',\n 'drawing.removeMenu': 'Menú d’eliminar',\n 'drawing.removeDrawings': 'Elimina els dibuixos',\n 'drawing.countDrawings': { one: '{count} dibuix', many: '{count} dibuixos', other: '{count} dibuixos' },\n 'drawing.countIndicators': { one: '{count} indicador', many: '{count} indicadors', other: '{count} indicadors' },\n 'drawing.removeItems': 'Elimina {items}',\n 'drawing.removeBoth': 'Elimina {drawings} i {indicators}',\n 'drawing.nothingToRemove': 'No hi ha res per eliminar',\n 'drawing.alwaysRemoveLocked': 'Elimina sempre els dibuixos bloquejats',\n 'drawing.favTools': 'Eines de dibuix preferides',\n 'drawing.favToolsBar': 'Barra d’eines de dibuix preferides',\n 'drawing.favAdd': 'Afegeix {tool} als preferits',\n 'drawing.favRemove': 'Treu {tool} dels preferits',\n 'drawing.moveToolbar': 'Mou la barra d’eines',\n 'drawing.moveFavoritesToolbar': 'Mou la barra de preferits',\n 'drawing.settingsBar': 'Dibuix seleccionat',\n 'drawing.templates': 'Plantilles',\n 'drawing.drawingTemplates': 'Plantilles de dibuix',\n 'drawing.saveTemplateAs': 'Desa la plantilla de dibuix com a...',\n 'drawing.applyDefaultTemplate': 'Aplica la plantilla de dibuix per defecte',\n 'drawing.removeTemplateNamed': 'Elimina la plantilla {name}',\n 'drawing.remove': 'Elimina',\n 'drawing.drawingColor': 'Color del dibuix',\n 'drawing.backgroundColor': 'Color de fons',\n 'drawing.thickness': 'Gruix',\n 'drawing.lineThickness': 'Gruix de línia',\n 'drawing.thicknessValue': 'Gruix {n}px',\n 'drawing.lineStyle': 'Estil de línia',\n 'drawing.lineStyleValue': 'Estil de línia {name}',\n 'drawing.lineSolid': 'Línia contínua',\n 'drawing.lineDashed': 'Línia discontínua',\n 'drawing.lineDotted': 'Línia puntejada',\n 'drawing.settings': 'Configuració',\n 'drawing.drawingSettings': 'Configuració del dibuix',\n 'drawing.lock': 'Bloqueja',\n 'drawing.unlock': 'Desbloqueja',\n 'drawing.lockDrawing': 'Bloqueja el dibuix',\n 'drawing.unlockDrawing': 'Desbloqueja el dibuix',\n 'drawing.deleteDrawing': 'Suprimeix el dibuix',\n 'drawing.more': 'Més',\n 'drawing.moreActions': 'Més accions del dibuix',\n 'drawing.visualOrder': 'Ordre visual',\n 'drawing.visibilityOnTimeframes': 'Visibilitat als intervals',\n 'drawing.clone': 'Clona',\n 'drawing.copy': 'Copia',\n 'drawing.modifierControl': 'Ctrl',\n 'drawing.modifierCommand': 'Cmd',\n 'drawing.hintClone': '{modifier} + Arrossega',\n 'drawing.hintCopy': '{modifier} + C',\n 'drawing.hintRemove': 'Del',\n 'drawing.drawingMenu': 'Menú del dibuix',\n 'drawing.hintPaste': '{modifier} + V',\n 'drawing.deleteWithKey': 'Suprimeix (Del)',\n 'drawing.statusDrawingsHidden': 'Dibuixos amagats',\n 'drawing.statusDrawingsShown': 'Dibuixos visibles',\n 'drawing.statusIndicatorsHidden': 'Indicadors amagats',\n 'drawing.statusIndicatorsShown': 'Indicadors visibles',\n 'drawing.statusAllHidden': 'Dibuixos i indicadors amagats',\n 'drawing.statusAllShown': 'Dibuixos i indicadors visibles',\n 'drawing.statusAllLocked': 'Tots els dibuixos bloquejats',\n 'drawing.statusAllUnlocked': 'Tots els dibuixos desbloquejats',\n 'drawing.hide': 'Amaga',\n 'drawing.bringToFront': 'Porta al davant',\n 'drawing.sendToBack': 'Envia al fons',\n 'drawing.bringForward': 'Porta endavant',\n 'drawing.sendBackward': 'Envia enrere',\n 'drawing.visCurrentAndAbove': 'Interval actual i superiors',\n 'drawing.visCurrentAndBelow': 'Interval actual i inferiors',\n 'drawing.visCurrentOnly': 'Només l’interval actual',\n 'drawing.visAll': 'Tots els intervals',\n 'drawing.saveTemplate': 'Desa la plantilla de dibuix',\n 'drawing.templateName': 'Nom de la plantilla',\n 'drawing.save': 'Desa',\n 'drawing.deleteTemplateTitle': 'Vols suprimir aquesta plantilla?',\n 'drawing.deleteTemplateBody': 'La plantilla de dibuix «{name}» s’eliminarà permanentment.',\n 'drawing.settingsTitle': 'Configuració de {tool}',\n 'drawing.rename': 'Canvia el nom',\n 'drawing.name': 'Nom',\n 'drawing.tabInputs': 'Entrades',\n 'drawing.tabStyle': 'Estil',\n 'drawing.tabText': 'Text',\n 'drawing.tabCoordinates': 'Coordenades',\n 'drawing.tabVisibility': 'Visibilitat',\n 'drawing.template': 'Plantilla',\n 'drawing.saveAs': 'Desa com a…',\n 'drawing.applyDefaults': 'Aplica els valors per defecte',\n 'drawing.cancel': 'Cancel·la',\n 'drawing.ok': 'D’acord',\n 'drawing.delete': 'Suprimeix',\n 'drawing.close': 'Tanca',\n 'drawing.color': 'Color',\n 'drawing.rowLine': 'Línia',\n 'drawing.background': 'Fons',\n 'drawing.border': 'Vora',\n 'drawing.profitColor': 'Color de l’objectiu',\n 'drawing.stopColor': 'Color de l’stop',\n 'drawing.textColor': 'Color del text',\n 'drawing.fontSize': 'Mida de la lletra',\n 'drawing.opacity': 'Opacitat',\n 'drawing.transparency': 'Transparència',\n 'drawing.label': 'Etiqueta',\n 'drawing.labelColor': 'Color de l’etiqueta',\n 'drawing.labels': 'Etiquetes',\n 'drawing.left': 'Esquerra',\n 'drawing.center': 'Centre',\n 'drawing.right': 'Dreta',\n 'drawing.up': 'Amunt',\n 'drawing.down': 'Avall',\n 'drawing.rowVisible': '{name} visible',\n 'drawing.leftEnd': 'Extrem esquerre',\n 'drawing.rightEnd': 'Extrem dret',\n 'drawing.lineEndNormal': 'Normal',\n 'drawing.lineEndArrow': 'Fletxa',\n 'drawing.increase': 'Augmenta',\n 'drawing.decrease': 'Redueix',\n 'drawing.rangeFrom': 'Des de',\n 'drawing.rangeTo': 'Fins a',\n 'drawing.pickColor': 'Tria un color',\n 'drawing.extend': 'Allarga',\n 'drawing.extendNone': 'No allarguis',\n 'drawing.extendLeft': 'Allarga a l’esquerra',\n 'drawing.extendRight': 'Allarga a la dreta',\n 'drawing.extendBoth': 'Allarga pels dos costats',\n 'drawing.extendLines': 'Allarga les línies',\n 'drawing.middlePoint': 'Punt mitjà',\n 'drawing.middleLine': 'Línia mitjana',\n 'drawing.priceLabel': 'Etiqueta de preu',\n 'drawing.priceLabels': 'Etiquetes de preu',\n 'drawing.timeLabel': 'Etiqueta de temps',\n 'drawing.rowStyle': 'Estil',\n 'drawing.variantOriginal': 'Original',\n 'drawing.variantSchiff': 'Schiff',\n 'drawing.variantModifiedSchiff': 'Schiff modificada',\n 'drawing.variantInside': 'Interna',\n 'drawing.sectionStats': 'Estadístiques',\n 'drawing.percentChange': 'Variació percentual',\n 'drawing.dateTimeRange': 'Rang de data/hora',\n 'drawing.volume': 'Volum',\n 'drawing.sectionInfo': 'Informació',\n 'drawing.priceRange': 'Rang de preus',\n 'drawing.barsRange': 'Rang de barres',\n 'drawing.distance': 'Distància',\n 'drawing.angle': 'Angle',\n 'drawing.statsPosition': 'Posició de les estadístiques',\n 'drawing.statsHidden': 'Amagades',\n 'drawing.changeInPips': 'Variació en pips',\n 'drawing.alwaysShowStats': 'Mostra sempre les estadístiques',\n 'drawing.auto': 'Automàtica',\n 'drawing.extendLeftLine': 'Allarga la línia esquerra',\n 'drawing.extendRightLine': 'Allarga la línia dreta',\n 'drawing.direction': 'Direcció',\n 'drawing.prices': 'Preus',\n 'drawing.levels': 'Nivells',\n 'drawing.reverse': 'Inverteix',\n 'drawing.fullCircles': 'Cercles complets',\n 'drawing.coeffsAsPercents': 'Coeficients en percentatge',\n 'drawing.image': 'Imatge',\n 'drawing.rowsLayout': 'Disposició de les files',\n 'drawing.rowsByNumber': 'Nombre de files',\n 'drawing.ticksPerRow': 'Ticks per fila',\n 'drawing.rowSize': 'Mida de la fila',\n 'drawing.upDown': 'Alcista/Baixista',\n 'drawing.total': 'Total',\n 'drawing.delta': 'Delta',\n 'drawing.valueAreaVolume': 'Volum de l’àrea de valor',\n 'drawing.widthPercent': 'Amplada (% del quadre)',\n 'drawing.placement': 'Ubicació',\n 'drawing.developingPoc': 'POC en desenvolupament',\n 'drawing.developingVa': 'VA en desenvolupament',\n 'drawing.source': 'Font',\n 'drawing.mode': 'Mode',\n 'drawing.modeHlBars': 'Barres HL',\n 'drawing.modeOcBars': 'Barres OC',\n 'drawing.modeLineOpen': 'Línia - obertura',\n 'drawing.modeLineHigh': 'Línia - màxim',\n 'drawing.modeLineLow': 'Línia - mínim',\n 'drawing.modeLineClose': 'Línia - tancament',\n 'drawing.modeLineHl2': 'Línia - HL/2',\n 'drawing.mirrored': 'En mirall',\n 'drawing.flipped': 'Invertit',\n 'drawing.avgHlMinticks': 'HL mitjà en minticks',\n 'drawing.variance': 'Variància',\n 'drawing.candles': 'Espelmes',\n 'drawing.borders': 'Vores',\n 'drawing.wick': 'Metxa',\n 'drawing.useUpperDeviation': 'Utilitza la desviació superior',\n 'drawing.useLowerDeviation': 'Utilitza la desviació inferior',\n 'drawing.risk': 'Risc',\n 'drawing.accountSize': 'Mida del compte',\n 'drawing.lotSize': 'Mida del lot',\n 'drawing.leverage': 'Palanquejament',\n 'drawing.compactStatsMode': 'Mode d’estadístiques compacte',\n 'drawing.levelVisible': 'Nivell {value} visible',\n 'drawing.levelText': 'Text del nivell {value}',\n 'drawing.removeLevel': 'Elimina el nivell {value}',\n 'drawing.addLevel': 'Afegeix un nivell',\n 'drawing.trendLine': 'Línia de tendència',\n 'drawing.levelsLine': 'Línia dels nivells',\n 'drawing.extendLinesLeft': 'Allarga les línies a l’esquerra',\n 'drawing.extendLinesRight': 'Allarga les línies a la dreta',\n 'drawing.levelOn': 'Nivell {n}',\n 'drawing.levelValue': 'Valor del nivell {n}',\n 'drawing.levelColor': 'Color del nivell {n}',\n 'drawing.useOneColor': 'Utilitza un sol color',\n 'drawing.backgroundOpacity': 'Opacitat del fons',\n 'drawing.values': 'Valors',\n 'drawing.percents': 'Percentatges',\n 'drawing.levelWords': 'Text',\n 'drawing.levelsOnLogScale': 'Nivells de Fibonacci en escala logarítmica',\n 'drawing.median': 'Mediana',\n 'drawing.counterclockwise': 'Sentit antihorari',\n 'drawing.fans': 'Ventalls',\n 'drawing.arcs': 'Arcs',\n 'drawing.fanOn': 'Ventall {n}',\n 'drawing.fanColor': 'Color del ventall {n}',\n 'drawing.arcOn': 'Arc {n}',\n 'drawing.arcColor': 'Color de l’arc {n}',\n 'drawing.priceBarRatio': 'Relació preu/barra',\n 'drawing.rangesAndRatio': 'Rangs i relació',\n 'drawing.wave': 'Ona',\n 'drawing.lines': 'Línies',\n 'drawing.degree': 'Grau',\n 'drawing.degreeSupermillennium': 'Supermil·lenni',\n 'drawing.degreeMillennium': 'Mil·lenni',\n 'drawing.degreeSubmillennium': 'Submil·lenni',\n 'drawing.degreeGrandSupercycle': 'Gran supercicle',\n 'drawing.degreeSupercycle': 'Supercicle',\n 'drawing.degreeCycle': 'Cicle',\n 'drawing.degreePrimary': 'Primari',\n 'drawing.degreeIntermediate': 'Intermedi',\n 'drawing.degreeMinor': 'Menor',\n 'drawing.degreeMinute': 'Minut',\n 'drawing.degreeMinuette': 'Minuet',\n 'drawing.degreeSubminuette': 'Subminuet',\n 'drawing.degreeMicro': 'Micro',\n 'drawing.degreeSubmicro': 'Submicro',\n 'drawing.degreeMinuscule': 'Minúscul',\n 'drawing.upperDeviation': 'Desviació superior',\n 'drawing.lowerDeviation': 'Desviació inferior',\n 'drawing.base': 'Base',\n 'drawing.pearsonsR': 'R de Pearson',\n 'drawing.sourceOpen': 'Obertura',\n 'drawing.sourceHigh': 'Màxim',\n 'drawing.sourceLow': 'Mínim',\n 'drawing.sourceClose': 'Tancament',\n 'drawing.sourceVolume': 'Volum',\n 'drawing.sourceHl2': '(Màx + Mín)/2',\n 'drawing.sourceHlc3': '(Màx + Mín + T)/3',\n 'drawing.sourceOhlc4': '(O + Màx + Mín + T)/4',\n 'drawing.sourceHlcc4': '(Màx + Mín + T + T)/4',\n 'drawing.pricesColor': 'Color dels preus',\n 'drawing.priceOffset': 'Desplaçament del preu',\n 'drawing.textWrap': 'Ajust del text',\n 'drawing.labelBorder': 'Vora de l’etiqueta',\n 'drawing.labelText': 'Text de l’etiqueta',\n 'drawing.lineColor': 'Color de la línia',\n 'drawing.emojiPin': 'Xinxeta amb emoji',\n 'drawing.emoji': 'Emoji',\n 'drawing.plateColor': 'Color del senyal',\n 'drawing.arrowMark': 'Fletxa',\n 'drawing.flag': 'Bandera',\n 'drawing.coordPositionBar': '#{n} (posició vertical %, barra)',\n 'drawing.verticalPosition': 'Posició vertical %',\n 'drawing.riskUnit': 'Unitat de risc',\n 'drawing.riskAmount': 'Import',\n 'drawing.entryPrice': 'Preu d’entrada',\n 'drawing.profitLevel': 'Nivell de benefici',\n 'drawing.stopLevel': 'Nivell de stop',\n 'drawing.ticks': 'Ticks',\n 'drawing.price': 'Preu',\n 'drawing.qtyPrecision': 'Precisió de la quantitat',\n 'drawing.qtyDefault': 'Per defecte',\n 'drawing.qtyInteger': 'Enter',\n 'drawing.qtyOneDecimal': '1 decimal',\n 'drawing.qtyDecimals': '{n} decimals',\n 'drawing.text': 'Text',\n 'drawing.statTpPriceOffset': 'Desplaçament de preu TP',\n 'drawing.statTpPercentOffset': 'Desplaçament percentual TP',\n 'drawing.statTpTickOffset': 'Desplaçament en ticks TP',\n 'drawing.statTpAmount': 'Import TP',\n 'drawing.statTpPl': 'P/G TP',\n 'drawing.statOpenClosePl': 'P/G oberta/tancada',\n 'drawing.statQty': 'Quant.',\n 'drawing.statRiskRewardRatio': 'Relació risc/benefici',\n 'drawing.statSlPriceOffset': 'Desplaçament de preu SL',\n 'drawing.statSlPercentOffset': 'Desplaçament percentual SL',\n 'drawing.statSlTickOffset': 'Desplaçament en ticks SL',\n 'drawing.statSlAmount': 'Import SL',\n 'drawing.statSlPl': 'P/G SL',\n 'drawing.profileExtendRight': 'Allarga a la dreta',\n 'drawing.volumeProfile': 'Perfil de volum',\n 'drawing.valuesColor': 'Color dels valors',\n 'drawing.upVolume': 'Volum alcista',\n 'drawing.downVolume': 'Volum baixista',\n 'drawing.valueAreaUp': 'Àrea de valor alcista',\n 'drawing.valueAreaDown': 'Àrea de valor baixista',\n 'drawing.vah': 'VAH',\n 'drawing.val': 'VAL',\n 'drawing.poc': 'POC',\n 'drawing.histogramBox': 'Quadre de l’histograma',\n 'drawing.labelsOnPriceScale': 'Etiquetes a l’escala de preus',\n 'drawing.bandsSettings': 'Configuració de les bandes',\n 'drawing.bandsMode': 'Mode de càlcul de les bandes',\n 'drawing.bandsStdev': 'Desviació estàndard',\n 'drawing.bandsPercent': 'Percentatge',\n 'drawing.bandsMultiplier': 'Multiplicador de bandes #{n}',\n 'drawing.vwap': 'VWAP',\n 'drawing.upperBand': 'Banda superior #{n}',\n 'drawing.lowerBand': 'Banda inferior #{n}',\n 'drawing.bandBackground': 'Fons #{n}',\n 'drawing.extendTop': 'Allarga cap amunt',\n 'drawing.extendBottom': 'Allarga cap avall',\n 'drawing.labelBackground': 'Fons de l’etiqueta',\n 'drawing.sourceText': 'Text de l’origen',\n 'drawing.sourceBackground': 'Fons de l’origen',\n 'drawing.sourceBorder': 'Vora de l’origen',\n 'drawing.targetText': 'Text de l’objectiu',\n 'drawing.targetBackground': 'Fons de l’objectiu',\n 'drawing.targetBorder': 'Vora de l’objectiu',\n 'drawing.successText': 'Text d’encert',\n 'drawing.successBackground': 'Fons d’encert',\n 'drawing.failureText': 'Text d’error',\n 'drawing.failureBackground': 'Fons d’error',\n 'drawing.backgroundFirst': 'Primer fons',\n 'drawing.backgroundSecond': 'Segon fons',\n 'drawing.priceLevels': 'Nivells de preu',\n 'drawing.timeLevels': 'Nivells de temps',\n 'drawing.priceLevelOn': 'Nivell de preu {n}',\n 'drawing.priceLevelValue': 'Valor del nivell de preu {n}',\n 'drawing.priceLevelColor': 'Color del nivell de preu {n}',\n 'drawing.timeLevelOn': 'Nivell de temps {n}',\n 'drawing.timeLevelValue': 'Valor del nivell de temps {n}',\n 'drawing.timeLevelColor': 'Color del nivell de temps {n}',\n 'drawing.leftLabels': 'Etiquetes a l’esquerra',\n 'drawing.rightLabels': 'Etiquetes a la dreta',\n 'drawing.topLabels': 'Etiquetes a dalt',\n 'drawing.bottomLabels': 'Etiquetes a baix',\n 'drawing.grid': 'Quadrícula',\n 'drawing.angles': 'Angles',\n 'drawing.bold': 'Negreta',\n 'drawing.italic': 'Cursiva',\n 'drawing.addText': 'Afegeix text',\n 'drawing.textAlignment': 'Alineació del text',\n 'drawing.top': 'A dalt',\n 'drawing.middle': 'Al mig',\n 'drawing.bottom': 'A baix',\n 'drawing.inside': 'A dins',\n 'drawing.textOrientation': 'Orientació del text',\n 'drawing.horizontal': 'Horitzontal',\n 'drawing.vertical': 'Vertical',\n 'drawing.textPlaceholder': 'Text',\n 'drawing.textEditor': 'Text del dibuix',\n 'drawing.addColumnRight': 'Afegeix una columna a la dreta',\n 'drawing.addRowBelow': 'Afegeix una fila a sota',\n 'drawing.removeRow': 'Elimina la fila',\n 'drawing.removeColumn': 'Elimina la columna',\n 'drawing.coordBar': '#{n} (barra)',\n 'drawing.coordPrice': '#{n} (preu)',\n 'drawing.coordPriceBar': '#{n} (preu, barra)',\n 'drawing.unitTicks': 'Ticks',\n 'drawing.unitSeconds': 'Segons',\n 'drawing.unitMinutes': 'Minuts',\n 'drawing.unitHours': 'Hores',\n 'drawing.unitDays': 'Dies',\n 'drawing.unitWeeks': 'Setmanes',\n 'drawing.unitMonths': 'Mesos',\n 'drawing.timeframePinnedNote': 'Un dibuix es manté visible com a mínim en un interval, perquè sempre s’hi pugui tornar.',\n 'drawing.colorSwatch': 'Color {hex}',\n 'drawing.addCustomColor': 'Afegeix un color personalitzat',\n 'drawing.saturationValue': 'Saturació i brillantor',\n 'drawing.hue': 'To',\n 'drawing.hexColor': 'Color hexadecimal',\n 'drawing.add': 'Afegeix',\n 'drawing.glyphPicker': 'Selector de símbols',\n 'drawing.kindEmojis': 'Emojis',\n 'drawing.kindStickers': 'Adhesius',\n 'drawing.kindIcons': 'Icones',\n 'drawing.recentlyUsed': 'Utilitzats recentment',\n 'drawing.recentGlyph': 'Recent: {glyph}',\n 'drawing.stickersSoon': 'No hi ha cap joc d’adhesius instal·lat.',\n 'drawing.glyphCatSmileys': 'Cares i persones',\n 'drawing.glyphCatNature': 'Animals i natura',\n 'drawing.glyphCatFood': 'Menjar i beure',\n 'drawing.glyphCatActivity': 'Activitats',\n 'drawing.glyphCatTravel': 'Viatges i llocs',\n 'drawing.glyphCatObjects': 'Objectes',\n 'drawing.glyphCatSymbols': 'Símbols',\n 'drawing.glyphCatFlags': 'Banderes',\n 'drawing.glyphCatIconArrows': 'Fletxes',\n 'drawing.glyphCatIconCurrency': 'Divises',\n 'drawing.glyphCatIconGestures': 'Gestos i cares',\n 'drawing.glyphCatIconNature': 'Natura',\n 'drawing.glyphCatIconSpecial': 'Especial',\n 'drawing.glyphCatIconSymbols': 'Símbols i banderes',\n 'drawing.imageReading': 'S’està llegint...',\n 'drawing.chooseImage': 'Tria una imatge',\n 'drawing.imageFormats': 'JPG, PNG o WEBP',\n 'drawing.imageMaxSize': 'Mida màx. 2MB',\n 'drawing.imageDimensions': '{width} x {height}',\n 'drawing.imageErrorType': 'Aquest fitxer no és JPG, PNG ni WEBP. Tria un d’aquests tres formats.',\n 'drawing.imageErrorSize': 'Aquesta imatge ocupa {size}. El límit és 2MB.',\n 'drawing.imageErrorRead': 'No s’ha pogut llegir el fitxer. Torna a triar-lo.',\n 'drawing.imageErrorDecode': 'No s’ha pogut obrir la imatge. Pot estar malmesa.',\n}\n","import type { Translation } from '../runtime'\nimport type { command as source } from '../en/command'\n\nexport const command: Translation<typeof source> = {\n 'command.extension': 'Ordre de l’amfitrió',\n 'command.viewReset': 'Restableix la vista',\n 'command.viewGoLive': 'Ves a l’extrem en directe',\n 'command.viewZoomIn': 'Amplia',\n 'command.viewZoomOut': 'Redueix',\n 'command.viewScrollLeft': 'Desplaça enrere',\n 'command.viewScrollRight': 'Desplaça endavant',\n 'command.priceCopy': 'Copia el preu',\n 'command.marksRefresh': 'Actualitza les marques',\n 'command.symbolSet': 'Canvia el símbol',\n 'command.styleCandles': 'Espelmes',\n 'command.styleHollow': 'Espelmes buides',\n 'command.styleBars': 'Barres',\n 'command.styleLine': 'Línia',\n 'command.styleArea': 'Àrea',\n 'command.styleBaseline': 'Línia de base',\n 'command.styleStepline': 'Línia esglaonada',\n 'command.settingsApply': 'Aplica la configuració del gràfic',\n 'command.settingsReset': 'Aplica els valors per defecte',\n 'command.scaleNormal': 'Escala de preus normal',\n 'command.scaleLog': 'Escala de preus logarítmica',\n 'command.scalePercent': 'Escala de preus percentual',\n 'command.scaleIndexed': 'Escala de preus indexada',\n 'command.historyUndo': 'Desfés',\n 'command.historyRedo': 'Refés',\n 'command.indicatorAdd': 'Afegeix un indicador',\n 'command.indicatorUpdate': 'Actualitza l’indicador',\n 'command.indicatorsRemoveAll': 'Elimina els indicadors',\n 'command.indicatorRemove': 'Elimina l’indicador',\n 'command.indicatorHide': 'Amaga l’indicador',\n 'command.indicatorShow': 'Mostra l’indicador',\n 'command.drawingsRemoveAll': 'Elimina els dibuixos',\n 'command.drawingDeleteSelected': 'Suprimeix el dibuix seleccionat',\n 'command.drawingArm': 'Eina de dibuix',\n 'command.drawingCursor': 'Mode del cursor',\n 'command.drawingMagnet': 'Imant',\n 'command.drawingStayInMode': 'Continua en mode de dibuix',\n 'command.drawingLockAll': 'Bloqueja tots els dibuixos',\n 'command.drawingHide': 'Amaga els dibuixos o els indicadors',\n 'command.drawingSync': 'Sincronitza els dibuixos al disseny',\n 'command.drawingRemoveLockedPolicy': 'Elimina sempre els dibuixos bloquejats',\n 'command.drawingFavorite': 'Eina de dibuix preferida',\n 'command.drawingFavoritesBar': 'Barra d’eines de dibuix preferides',\n 'command.drawingStyle': 'Estil del dibuix',\n 'command.drawingProps': 'Propietats del dibuix',\n 'command.drawingLock': 'Bloqueja el dibuix',\n 'command.drawingClone': 'Clona el dibuix',\n 'command.drawingCopy': 'Copia el dibuix',\n 'command.drawingPaste': 'Enganxa el dibuix',\n 'command.drawingBringToFront': 'Porta el dibuix al davant',\n 'command.drawingSendToBack': 'Envia el dibuix al fons',\n 'command.drawingBringForward': 'Porta el dibuix endavant',\n 'command.drawingSendBackward': 'Envia el dibuix enrere',\n 'command.drawingHideSelected': 'Amaga el dibuix',\n 'command.drawingVisibility': 'Visibilitat del dibuix als intervals',\n 'command.drawingSettings': 'Configuració del dibuix',\n 'command.drawingCommitEdit': 'Aplica la configuració del dibuix',\n 'command.drawingPlaceImage': 'Col·loca una imatge',\n 'command.drawingPlaceHorizontalLine': 'Col·loca una línia horitzontal',\n 'command.drawingTemplateApply': 'Aplica una plantilla de dibuix',\n 'command.drawingTemplateSave': 'Desa la plantilla de dibuix',\n 'command.drawingTemplateRemove': 'Elimina la plantilla de dibuix',\n 'command.drawingTableAddRow': 'Afegeix una fila a la taula',\n 'command.drawingTableAddColumn': 'Afegeix una columna a la taula',\n 'command.drawingTableRemoveRow': 'Elimina una fila de la taula',\n 'command.drawingTableRemoveColumn': 'Elimina una columna de la taula',\n 'command.drawingCancel': 'Cancel·la el dibuix',\n 'command.compareOpen': 'Compara o afegeix un símbol',\n 'command.compareAdd': 'Afegeix una comparació',\n 'command.compareRemove': 'Elimina la comparació',\n 'command.compareVisible': 'Mostra o amaga una comparació',\n 'command.compareChangeSymbol': 'Canvia el símbol comparat',\n 'command.replayStart': 'Inicia la repetició de barres',\n 'command.replayStartFirst': 'Inicia la repetició de barres a la primera data disponible',\n 'command.replayExit': 'Surt de la repetició de barres',\n 'command.replayPlay': 'Reprodueix la repetició',\n 'command.replayPause': 'Posa en pausa la repetició',\n 'command.replayStepForward': 'Avança un pas',\n 'command.replayStepBack': 'Retrocedeix un pas',\n 'command.replayGoLive': 'Repeteix fins a l’extrem en directe',\n 'command.replaySpeed': 'Velocitat de repetició',\n 'command.replayTimeframe': 'Interval d’actualització de la repetició',\n 'command.timeframeSet': 'Interval',\n 'command.subsessionRegular': 'Horari regular',\n 'command.subsessionExtended': 'Horari ampliat',\n 'command.rangeSet': 'Rang de dates',\n 'command.timezoneSet': 'Fus horari',\n 'command.themeLight': 'Tema clar',\n 'command.themeDark': 'Tema fosc',\n 'command.themeToggle': 'Canvia el tema',\n 'command.themeSet': 'Estableix el tema',\n 'command.settingsOpen': 'Configuració del gràfic',\n 'command.localeSet': 'Idioma',\n 'command.fullscreenEnter': 'Pantalla completa',\n 'command.fullscreenExit': 'Surt de la pantalla completa',\n 'command.fullscreenToggle': 'Commuta la pantalla completa',\n 'command.imageCapture': 'Captura una imatge',\n 'command.imageDownload': 'Baixa la imatge',\n 'command.dataDownload': 'Baixa les dades del gràfic',\n 'command.imageCopy': 'Copia la imatge',\n 'command.layoutArrangement': 'Disseny',\n 'command.layoutActive': 'Gràfic actiu',\n 'command.layoutSync': 'Sincronització de gràfics',\n 'command.layoutActivateNext': 'Gràfic següent del disseny',\n 'command.layoutActivatePrevious': 'Gràfic anterior del disseny',\n 'command.layoutMaximize': 'Maximitza o restaura el gràfic actiu',\n 'command.layoutSave': 'Desa el disseny',\n 'command.layoutRename': 'Canvia el nom del disseny',\n 'command.layoutLoad': 'Obre un disseny',\n 'command.layoutOpen': 'Obre un disseny…',\n 'command.layoutDelete': 'Suprimeix el disseny',\n 'command.layoutCreate': 'Crea un disseny nou',\n 'command.layoutAutosave': 'Desa el disseny automàticament',\n}\n","import type { Translation } from '../runtime'\nimport type { chrome as source } from '../en/chrome'\n\nexport const chrome: Translation<typeof source> = {\n 'chrome.topBar': 'Barra d’eines del gràfic',\n 'chrome.bottomBar': 'Peu del gràfic',\n 'chrome.symbolSearch': 'Cerca un símbol',\n 'chrome.compare': 'Compara o afegeix un símbol',\n 'chrome.chartStyle': 'Estil del gràfic',\n 'chrome.indicators': 'Indicadors',\n 'chrome.replay': 'Repetició de barres',\n 'chrome.replayChip': 'Repetició',\n 'chrome.image': 'Imatge del gràfic',\n 'chrome.session': 'Sessió de negociació',\n 'chrome.sessionsHeading': 'Sessions',\n 'chrome.navigation': 'Navegació del gràfic',\n 'chrome.activeChart': '{symbol}, {timeframe}',\n 'chrome.scaleHigh': 'Màxim',\n 'chrome.scaleLow': 'Mínim',\n 'chrome.scaleBid': 'Compra',\n 'chrome.scaleAsk': 'Venda',\n 'chrome.scaleModes': 'Modes d’escala',\n 'chrome.autoScale': 'Escala automàtica',\n 'chrome.autoScaleMark': 'A',\n 'chrome.logScale': 'Escala logarítmica',\n 'chrome.logScaleMark': 'L',\n 'chrome.currencyAndUnit': '{currency} · {unit}',\n 'chrome.priceLevelMenu': 'Accions del preu',\n 'chrome.paneButtons': 'Panell',\n 'chrome.deletePane': 'Suprimeix el panell',\n}\n","import type { Translation } from '../runtime'\nimport type { history as source } from '../en/history'\n\nexport const history: Translation<typeof source> = {\n 'history.undoNamed': 'Desfés: {change}',\n 'history.redoNamed': 'Refés: {change}',\n 'history.changeSymbol': 'canvi de símbol',\n 'history.changeTimeframe': 'canvi d’interval',\n 'history.changeChartStyle': 'canvi d’estil del gràfic',\n 'history.changePriceScale': 'canvi d’escala de preus',\n 'history.changeSettings': 'canvi de configuració',\n 'history.changeAddCompare': 'addició d’una comparació',\n 'history.changeRemoveCompare': 'eliminació d’una comparació',\n 'history.changeCompare': 'canvi d’una comparació',\n 'history.changeAddIndicator': 'addició d’un indicador',\n 'history.changeRemoveIndicator': 'eliminació d’un indicador',\n 'history.changeIndicator': 'canvi d’un indicador',\n 'history.changeMovePane': 'desplaçament d’un panell',\n 'history.changeAddDrawing': 'addició d’un dibuix',\n 'history.changeRemoveDrawing': 'eliminació d’un dibuix',\n 'history.changeDrawing': 'canvi d’un dibuix',\n}\n","import type { Translation } from '../runtime'\nimport type { picker as source } from '../en/picker'\n\nexport const picker: Translation<typeof source> = {\n 'picker.title': 'Indicadors',\n 'picker.search': 'Cerca indicadors',\n 'picker.noMatches': 'No hi ha indicadors que coincideixin.',\n 'picker.collections': 'Col·leccions d’indicadors',\n 'picker.personal': 'Personals',\n 'picker.builtin': 'Integrats',\n 'picker.favorites': 'Preferits',\n 'picker.thousands': ' K',\n 'picker.name': 'Nom',\n 'picker.author': 'Autor',\n 'picker.favorite': 'Afegeix {name} als preferits',\n 'picker.unfavorite': 'Treu {name} dels preferits',\n 'picker.loading': 'S’estan carregant els indicadors…',\n 'picker.unavailable': 'El contingut dels indicadors no està disponible. Torna-ho a provar.',\n 'picker.actionFailed': 'No s’ha pogut completar l’acció. Torna-ho a provar.',\n 'picker.add': 'Afegeix {name}',\n 'picker.notPermitted': '{name} no està disponible aquí',\n}\n","import type { Translation } from '../runtime'\nimport type { settings as source } from '../en/settings'\n\nexport const settings: Translation<typeof source> = {\n 'settings.menu': 'Configuració del gràfic',\n 'settings.pageSymbol': 'Símbol',\n 'settings.pageStatusLine': 'Línia d’estat',\n 'settings.pageScales': 'Escales i línies',\n 'settings.pageCanvas': 'Llenç',\n 'settings.pageEvents': 'Esdeveniments',\n 'settings.headingCandles': 'Espelmes',\n 'settings.headingHollowCandles': 'Espelmes buides',\n 'settings.headingBars': 'Barres',\n 'settings.headingLine': 'Línia',\n 'settings.headingStepLine': 'Línia esglaonada',\n 'settings.headingArea': 'Àrea',\n 'settings.headingBaseline': 'Línia de base',\n 'settings.colorOnPreviousClose': 'Acoloreix les barres segons el tancament anterior',\n 'settings.body': 'Cos',\n 'settings.borders': 'Vores',\n 'settings.wick': 'Metxa',\n 'settings.hlcBars': 'Barres HLC',\n 'settings.upColor': 'Color alcista',\n 'settings.downColor': 'Color baixista',\n 'settings.thinBars': 'Barres primes',\n 'settings.priceSource': 'Font del preu',\n 'settings.sourceOpen': 'Obertura',\n 'settings.sourceHigh': 'Màxim',\n 'settings.sourceLow': 'Mínim',\n 'settings.sourceClose': 'Tancament',\n 'settings.sourceHl2': '(Màx + Mín)/2',\n 'settings.sourceHlc3': '(Màx + Mín + T)/3',\n 'settings.sourceOhlc4': '(O + Màx + Mín + T)/4',\n 'settings.sourceHlcc4': '(Màx + Mín + T + T)/4',\n 'settings.lineRow': 'Línia',\n 'settings.colorSolid': 'Sòlid',\n 'settings.colorGradient': 'Degradat',\n 'settings.fill': 'Emplenament',\n 'settings.topLine': 'Línia superior',\n 'settings.bottomLine': 'Línia inferior',\n 'settings.fillTopArea': 'Emplena l’àrea superior',\n 'settings.fillBottomArea': 'Emplena l’àrea inferior',\n 'settings.baseLevel': 'Nivell de base',\n 'settings.headingDataModification': 'Modificació de dades',\n 'settings.session': 'Sessió',\n 'settings.sessionRegular': 'Regular',\n 'settings.sessionExtended': 'Ampliada',\n 'settings.sessionAllHours': '24 hores',\n 'settings.extendedHoursBackground': 'Fons de preobertura/postmercat',\n 'settings.allHoursBackground': 'Fons de preobertura/postmercat/nit',\n 'settings.preMarket': 'Preobertura',\n 'settings.postMarket': 'Postmercat',\n 'settings.night': 'Nit',\n 'settings.precision': 'Precisió',\n 'settings.precisionDefault': 'Per defecte',\n 'settings.precisionInteger': 'Enter',\n 'settings.precisionDecimals': { one: '{count} xifra decimal', many: '{count} xifres decimals', other: '{count} xifres decimals' },\n 'settings.headingInstrument': 'Instrument',\n 'settings.logo': 'Logotip',\n 'settings.title': 'Títol',\n 'settings.titleName': 'Nom',\n 'settings.titleSymbol': 'Símbol',\n 'settings.titleSymbolAndName': 'Símbol i nom',\n 'settings.chartValues': 'Valors del gràfic',\n 'settings.barChangeValues': 'Variació de la barra',\n 'settings.volume': 'Volum',\n 'settings.lastDayChangeValues': 'Variació de l’últim dia',\n 'settings.headingIndicators': 'Indicadors',\n 'settings.indicatorTitles': 'Títols',\n 'settings.indicatorInputs': 'Entrades',\n 'settings.indicatorValues': 'Valors',\n 'settings.background': 'Fons',\n 'settings.sectionScale': 'Escala de preus',\n 'settings.currencyAndUnit': 'Divisa i unitat',\n 'settings.scaleModes': 'Modes d’escala (A i L)',\n 'settings.visibleOnMouseOver': 'Visible en passar el ratolí',\n 'settings.alwaysVisible': 'Sempre visible',\n 'settings.alwaysInvisible': 'Sempre amagat',\n 'settings.lockPriceToBarRatio': 'Bloqueja la relació preu/barra',\n 'settings.scalesPlacement': 'Posició de les escales',\n 'settings.placementLeft': 'Apila a l’esquerra',\n 'settings.placementRight': 'Apila a la dreta',\n 'settings.placementAuto': 'Automàtica',\n 'settings.headingPriceLabels': 'Etiquetes i línies de preu',\n 'settings.noOverlappingLabels': 'Sense etiquetes superposades',\n 'settings.plusButton': 'Botó més',\n 'settings.plusButtonTip': 'Mostra un signe més al costat del preu sota la creu, que obre el menú d’aquest preu',\n 'settings.countdown': 'Compte enrere fins al tancament de la barra',\n 'settings.symbolLabel': 'Símbol',\n 'settings.labelName': 'Nom',\n 'settings.labelValue': 'Valor',\n 'settings.labelLine': 'Línia',\n 'settings.hidden': 'Amagat',\n 'settings.lastValueMode': 'Etiqueta de l’últim valor',\n 'settings.valueByScale': 'Valor segons l’escala',\n 'settings.priceAndPercent': 'Preu i valor percentual',\n 'settings.indicatorsAndFinancials': 'Indicadors i dades financeres',\n 'settings.extendedHoursLabels': 'Preobertura/postmercat/nit',\n 'settings.previousDayClose': 'Tancament del dia anterior',\n 'settings.highAndLow': 'Màxim i mínim',\n 'settings.bidAndAsk': 'Compra i venda',\n 'settings.bid': 'Compra',\n 'settings.ask': 'Venda',\n 'settings.headingTimeScale': 'Escala de temps',\n 'settings.dayOfWeek': 'Dia de la setmana a les etiquetes',\n 'settings.dateFormat': 'Format de data',\n 'settings.timeHoursFormat': 'Format d’hora',\n 'settings.hours24': '24 hores',\n 'settings.hours12': '12 hores',\n 'settings.keepLeftEdge': 'Mantén la vora esquerra del gràfic en canviar d’interval',\n 'settings.headingChartStyles': 'Estils bàsics del gràfic',\n 'settings.verticalGrid': 'Línies de quadrícula verticals',\n 'settings.horizontalGrid': 'Línies de quadrícula horitzontals',\n 'settings.crosshair': 'Creu',\n 'settings.watermark': 'Marca d’aigua',\n 'settings.watermarkTicker': 'Codi',\n 'settings.watermarkInterval': 'Interval',\n 'settings.watermarkDescription': 'Descripció',\n 'settings.watermarkReplay': 'Mode de repetició',\n 'settings.headingScales': 'Escales',\n 'settings.scaleText': 'Text',\n 'settings.scaleLines': 'Línies',\n 'settings.headingButtons': 'Botons',\n 'settings.navigationButtons': 'Navegació',\n 'settings.paneButtons': 'Panell',\n 'settings.headingMargins': 'Marges',\n 'settings.marginTop': 'Superior',\n 'settings.marginBottom': 'Inferior',\n 'settings.marginRight': 'Dret',\n 'settings.unitPercent': '%',\n 'settings.unitBars': 'barres',\n 'settings.sessionBreaks': 'Separadors de sessió',\n 'settings.upColorOf': '{name}: color alcista',\n 'settings.downColorOf': '{name}: color baixista',\n 'settings.topColorOf': '{name}: color superior',\n 'settings.bottomColorOf': '{name}: color inferior',\n 'settings.learnMore': 'Més informació',\n 'settings.saveTemplate': 'Desa la plantilla del gràfic',\n 'settings.deleteTemplateBody': 'La plantilla del gràfic «{name}» s’eliminarà permanentment.',\n 'settings.indicatorTitle': 'Configuració de {name}',\n 'settings.tabInputs': 'Entrades',\n 'settings.tabStyle': 'Estil',\n 'settings.tabVisibility': 'Visibilitat',\n 'settings.plots': 'Traçats',\n 'settings.levels': 'Nivells',\n 'settings.fills': 'Emplenaments',\n 'settings.colorOf': '{name}: color',\n 'settings.lineWidthOf': '{name}: gruix de línia',\n 'settings.lineStyleOf': '{name}: estil de línia',\n 'settings.visibleOf': 'Mostra {name}',\n 'settings.lineStyleSolid': 'Contínua',\n 'settings.lineStyleDashed': 'Discontínua',\n 'settings.lineStyleDotted': 'Puntejada',\n 'settings.labelsOnPriceScale': 'Etiquetes a l’escala de preus',\n 'settings.showIndicator': 'Mostra aquest indicador',\n}\n","import type { Translation } from '../runtime'\nimport type { toast as source } from '../en/toast'\n\nexport const toast: Translation<typeof source> = {\n 'toast.dismiss': 'Descarta',\n 'toast.feedUnavailable': 'No hi ha dades de {symbol} en aquesta font.',\n 'toast.feedNoData': 'Encara no hi ha dades de {symbol}.',\n 'toast.imageCopyFallback': 'No s’ha pogut copiar la imatge. S’ha desat un fitxer.',\n 'toast.imageFailed': 'No s’ha pogut capturar la imatge del gràfic.',\n 'toast.indicatorsNotCarried': { one: '{count} indicador d’aquest gràfic desat no està disponible aquí i s’ha omès.', many: '{count} indicadors d’aquest gràfic desat no estan disponibles aquí i s’han omès.', other: '{count} indicadors d’aquest gràfic desat no estan disponibles aquí i s’han omès.' },\n}\n","import type { Translation } from '../runtime'\nimport type { en } from '../en'\nimport { legend } from './legend'\nimport { tools } from './tools'\nimport { menu } from './menu'\nimport { replay } from './replay'\nimport { inputs } from './inputs'\nimport { session } from './session'\nimport { layouts } from './layouts'\nimport { host } from './host'\nimport { indicators } from './indicators'\nimport { timeframe } from './timeframe'\nimport { timezone } from './timezone'\nimport { range } from './range'\nimport { status } from './status'\nimport { search } from './search'\nimport { drawing } from './drawing'\nimport { command } from './command'\nimport { chrome } from './chrome'\nimport { history } from './history'\nimport { picker } from './picker'\nimport { settings } from './settings'\nimport { toast } from './toast'\n\nconst dict: Translation<typeof en> = { ...legend, ...tools, ...menu, ...replay, ...inputs, ...session, ...layouts, ...host, ...indicators, ...timeframe, ...timezone, ...range, ...status, ...search, ...drawing, ...command, ...chrome, ...history, ...picker, ...settings, ...toast }\nexport default dict\n"],"mappings":"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","names":[]}
@@ -104,4 +104,4 @@ export {
104
104
  ResourceAbortError,
105
105
  memorySaveLoadAdapter
106
106
  };
107
- //# sourceMappingURL=chunk-D3S26ARP.js.map
107
+ //# sourceMappingURL=chunk-EXJAJZTN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources.ts"],"sourcesContent":["// SAVED RESOURCES — the revisioned, async persistence contract for the entities a chart names and\n// a viewer can lose: saved charts, layouts, drawing documents, and templates.\n//\n// The contract exists because a saved chart is shared, mutable, remote state. Two tabs, two\n// devices, or one slow save and one fast one all end at the same question: whose version wins?\n// A store that answers \"the last write\" silently destroys work. So every read hands back a\n// `ResourceRef` (a stable id plus an opaque revision token), every write states the revision it\n// believes it is replacing, and a write against a stale revision comes back as a typed `conflict`\n// carrying the current ref. The chart never resolves that by overwriting; it surfaces it.\n//\n// Three rules the shape enforces:\n// - The revision is OPAQUE. It is a token the host minted and the chart only ever echoes back.\n// No ordering, no arithmetic, no timestamp parsing; a host is free to use an ETag, a counter,\n// or a content hash.\n// - Every call takes an `AbortSignal`. A symbol switch, a closed dialog, or a fast retype must be\n// able to abandon in-flight work, and a late answer to an abandoned ask must never land.\n// - A successful write RETURNS the stored revision, so the caller's next write is conditional on\n// what the store actually holds rather than on what it hoped it wrote.\n//\n// A chart's, a layout's and a template's body is contractually OPAQUE to the store: no parsing, no\n// per-entity logic, so the chart can evolve those formats freely. The drawings family is the one\n// deliberate exception: its body is the structured document in `drawings/document.ts`, because\n// deletion tombstones, ordered groups and per-drawing ownership have to survive a merge between two\n// surfaces, and a merge cannot be performed over a string. Each drawing's own state stays opaque\n// inside its entry.\n//\n// Flat viewer preferences that need no entity identity are NOT here; they stay on `ChartStorage`,\n// the small settings port beside this one.\nimport type { DrawingResourceContext, DrawingsBody } from './drawings/document'\nimport { drawingContextKey } from './drawings/document'\n\n/** A resource's identity plus the exact version this reader saw. A write quotes it back. */\nexport interface ResourceRef {\n id: string\n /** Opaque to the chart: minted by the store, compared only for equality. */\n revision: string\n}\n\n/** What a write did. `ok` carries the ref the store now holds (and, where the store computes one,\n * the resulting metadata); `conflict` carries the ref that beat this write, so a caller can reload\n * and re-decide; `not-found` means the id is gone. */\nexport type WriteOutcome<T = void> =\n | { kind: 'ok'; ref: ResourceRef; value?: T }\n | { kind: 'conflict'; current: ResourceRef }\n | { kind: 'not-found' }\n\n/** One family of resources. `Meta` is the listing row a picker shows without fetching content\n * (it carries the row's ref, so a picker can delete or open a row without a second read); `Body`\n * is the stored document. */\nexport interface ResourceStore<Meta, Body> {\n /** Listing rows, metadata only. */\n list(signal?: AbortSignal): Promise<Meta[]>\n /** The stored document and the revision it was read at, or null when the id is unknown. */\n load(id: string, signal?: AbortSignal): Promise<{ ref: ResourceRef; body: Body } | null>\n /** Store a new document. The store mints the id; a create conflicts only where the store keys a\n * document by identity and one already stands there (a drawings context that holds a document, a\n * name already taken), and then it answers the ref that stands. */\n create(body: Body, signal?: AbortSignal): Promise<WriteOutcome<Meta>>\n /** Replace the document at `ref.id`, but only while it still stands at `ref.revision`. */\n update(ref: ResourceRef, body: Body, signal?: AbortSignal): Promise<WriteOutcome<Meta>>\n /** Delete the document at `ref.id`, but only while it still stands at `ref.revision`. */\n remove(ref: ResourceRef, signal?: AbortSignal): Promise<WriteOutcome<void>>\n}\n\n/** A saved chart's listing row. */\nexport interface ChartMeta extends ResourceRef {\n name: string\n symbol: string\n timeframe: string\n /** Last save, ms since epoch (server-stamped by real backends). */\n updatedAt: number\n}\n\n/** A saved chart. `content` is the chart's own serialized state, opaque to the store. */\nexport interface ChartBody {\n name: string\n symbol: string\n timeframe: string\n content: string\n}\n\n/** A saved multi-chart layout's listing row. `symbol` is the active chart's market as the chart\n * writes it (`symbolNames(...).mark`, such as `BTCUSDC`) and `timeframe` its timeframe token, both\n * as they stood at the last save, so a listing can say what each layout shows without opening it. A\n * store that does not keep them, or a layout saved before they were stated, leaves them out. */\nexport interface LayoutMeta extends ResourceRef {\n name: string\n symbol?: string\n timeframe?: string\n updatedAt: number\n}\n\n/** A saved multi-chart layout. `content` is the arrangement's serialized state, opaque to the store.\n * The widget states the listing's `symbol` and `timeframe` on every save; they are display text and\n * play no part in restoring the layout. */\nexport interface LayoutBody {\n name: string\n symbol?: string\n timeframe?: string\n content: string\n}\n\n/** A drawings document's listing row. A context holds at most one, so `list` returns zero rows or\n * one, and the ref is the store's handle on it. */\nexport interface DrawingsMeta extends ResourceRef {\n updatedAt: number\n}\n\n/** A template family: an indicator's settings, a drawing tool's look, a palette, or the chart\n * settings dialog's settings of a whole chart. */\nexport type TemplateKind = 'indicator' | 'drawing' | 'palette' | 'chart'\n\n/** A named template's listing row. `tool` scopes DRAWING templates to their tool (a trend-line\n * template is meaningless on a rectangle); indicator, palette and chart templates carry no tool. */\nexport interface TemplateMeta extends ResourceRef {\n name: string\n tool?: string\n updatedAt: number\n}\n\nexport interface TemplateBody {\n name: string\n tool?: string\n content: string\n}\n\n/** The adapter a host implements: four resource families over one revisioned contract. Viewer\n * settings are deliberately absent; they belong to `ChartStorage`. */\nexport interface ChartSaveLoadAdapter {\n charts: ResourceStore<ChartMeta, ChartBody>\n layouts: ResourceStore<LayoutMeta, LayoutBody>\n /** The store for one drawing-resource context. Calling with an equal context returns an\n * equivalent store; `drawingContextKey` is the canonical way to compare two. */\n drawings(context: DrawingResourceContext): ResourceStore<DrawingsMeta, DrawingsBody>\n templates(kind: TemplateKind): ResourceStore<TemplateMeta, TemplateBody>\n}\n\n/** The error every store rejects with when its signal aborts. `name` is 'AbortError', which is what\n * callers branch on, and what `DOMException` uses, so a host may reject with either. */\nexport class ResourceAbortError extends Error {\n override readonly name = 'AbortError'\n constructor(message = 'the resource operation was aborted') {\n super(message)\n }\n}\n\n/* ── The in-memory reference implementation ────────────────────────────────────────────────────\n The shape's own proof and the fixture every consumer test mounts: revisions on every write,\n conflicts on a stale ref, not-found on a vanished id, and an abort that lands before any state\n changes. It persists nothing, so it is also the right adapter for SSR, an ephemeral embed, and\n the clean-room consumer. */\n\ninterface Record_<Body> {\n id: string\n revision: string\n body: Body\n updatedAt: number\n}\n\n/** An aborted signal REJECTS the returned promise rather than throwing out of the call, so every\n * caller handles abandonment on one path. */\nconst aborted = (signal: AbortSignal | undefined): Promise<never> | null =>\n signal?.aborted ? Promise.reject(new ResourceAbortError()) : null\n\nconst newId = (): string =>\n typeof crypto !== 'undefined' && crypto.randomUUID ? crypto.randomUUID() : `r${Date.now().toString(36)}${Math.random().toString(36).slice(2, 8)}`\n\n/** Options for {@link memorySaveLoadAdapter}: a clock, so a test can pin `updatedAt`. */\nexport interface MemoryResourcesOptions {\n now?: () => number\n}\n\nfunction memoryStore<Meta, Body>(\n metaOf: (record: Record_<Body>) => Meta,\n now: () => number,\n): ResourceStore<Meta, Body> {\n const rows = new Map<string, Record_<Body>>()\n let counter = 0\n const nextRevision = (): string => `rev-${++counter}`\n const refOf = (record: Record_<Body>): ResourceRef => ({ id: record.id, revision: record.revision })\n\n return {\n list(signal) {\n return aborted(signal) ?? Promise.resolve([...rows.values()].map(metaOf))\n },\n load(id, signal) {\n const stop = aborted(signal)\n if (stop) return stop\n const record = rows.get(id)\n return Promise.resolve(record ? { ref: refOf(record), body: record.body } : null)\n },\n create(body, signal) {\n const stop = aborted(signal)\n if (stop) return stop\n const record: Record_<Body> = { id: newId(), revision: nextRevision(), body, updatedAt: now() }\n rows.set(record.id, record)\n const outcome: WriteOutcome<Meta> = { kind: 'ok', ref: refOf(record), value: metaOf(record) }\n return Promise.resolve(outcome)\n },\n update(ref, body, signal) {\n const stop = aborted(signal)\n if (stop) return stop\n const record = rows.get(ref.id)\n if (!record) return Promise.resolve<WriteOutcome<Meta>>({ kind: 'not-found' })\n if (record.revision !== ref.revision) return Promise.resolve<WriteOutcome<Meta>>({ kind: 'conflict', current: refOf(record) })\n record.body = body\n record.revision = nextRevision()\n record.updatedAt = now()\n const outcome: WriteOutcome<Meta> = { kind: 'ok', ref: refOf(record), value: metaOf(record) }\n return Promise.resolve(outcome)\n },\n remove(ref, signal) {\n const stop = aborted(signal)\n if (stop) return stop\n const record = rows.get(ref.id)\n if (!record) return Promise.resolve<WriteOutcome<void>>({ kind: 'not-found' })\n if (record.revision !== ref.revision) return Promise.resolve<WriteOutcome<void>>({ kind: 'conflict', current: refOf(record) })\n rows.delete(ref.id)\n return Promise.resolve<WriteOutcome<void>>({ kind: 'ok', ref: refOf(record) })\n },\n }\n}\n\n/** An in-memory {@link ChartSaveLoadAdapter}. Each drawing context and each template kind gets its\n * own store, created on first ask and kept, so two calls for one context see the same document. */\nexport function memorySaveLoadAdapter(options?: MemoryResourcesOptions): ChartSaveLoadAdapter {\n const now = options?.now ?? (() => Date.now())\n const drawingStores = new Map<string, ResourceStore<DrawingsMeta, DrawingsBody>>()\n const templateStores = new Map<TemplateKind, ResourceStore<TemplateMeta, TemplateBody>>()\n\n return {\n charts: memoryStore<ChartMeta, ChartBody>(\n (r) => ({ id: r.id, revision: r.revision, name: r.body.name, symbol: r.body.symbol, timeframe: r.body.timeframe, updatedAt: r.updatedAt }),\n now,\n ),\n layouts: memoryStore<LayoutMeta, LayoutBody>(\n (r) => ({\n id: r.id,\n revision: r.revision,\n name: r.body.name,\n ...(r.body.symbol === undefined ? {} : { symbol: r.body.symbol }),\n ...(r.body.timeframe === undefined ? {} : { timeframe: r.body.timeframe }),\n updatedAt: r.updatedAt,\n }),\n now,\n ),\n drawings(context) {\n const key = drawingContextKey(context)\n let store = drawingStores.get(key)\n if (!store) {\n store = memoryStore<DrawingsMeta, DrawingsBody>((r) => ({ id: r.id, revision: r.revision, updatedAt: r.updatedAt }), now)\n drawingStores.set(key, store)\n }\n return store\n },\n templates(kind) {\n let store = templateStores.get(kind)\n if (!store) {\n store = memoryStore<TemplateMeta, TemplateBody>(\n (r) => ({ id: r.id, revision: r.revision, name: r.body.name, ...(r.body.tool === undefined ? {} : { tool: r.body.tool }), updatedAt: r.updatedAt }),\n now,\n )\n templateStores.set(kind, store)\n }\n return store\n },\n }\n}\n"],"mappings":"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","names":[]}