@trdrs/quickcharts 1.2.0 → 2.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.
- package/CHANGELOG.md +120 -0
- package/README.md +742 -180
- package/dist/adapters/rest.d.ts +3 -3
- package/dist/adapters/rest.js +2 -2
- package/dist/adapters/rest.js.map +1 -1
- package/dist/{ar-G7MVXRE4.js → ar-KSXQ2USS.js} +20 -20
- package/dist/ar-KSXQ2USS.js.map +1 -0
- package/dist/{assets-ySndlUS3.d.ts → assets-DOuBBsOp.d.ts} +50 -50
- package/dist/{ca_ES-EUSRU4VG.js → ca_ES-JG4FM55E.js} +20 -20
- package/dist/ca_ES-JG4FM55E.js.map +1 -0
- package/dist/{chunk-RDAK5MUM.js → chunk-6S6TO2N6.js} +41 -37
- package/dist/chunk-6S6TO2N6.js.map +1 -0
- package/dist/{chunk-KFBQSPNA.js → chunk-D3S26ARP.js} +2 -2
- package/dist/chunk-D3S26ARP.js.map +1 -0
- package/dist/{chunk-AKXIFHQN.js → chunk-KLPTCWA2.js} +1 -1
- package/dist/{chunk-AKXIFHQN.js.map → chunk-KLPTCWA2.js.map} +1 -1
- package/dist/{de-2SVTG25S.js → de-VSW2LHNF.js} +20 -20
- package/dist/de-VSW2LHNF.js.map +1 -0
- package/dist/drawings.d.ts +16 -16
- package/dist/drawings.js +12 -12
- package/dist/{es-UDHZM4W7.js → es-5ZXIPVOB.js} +20 -20
- package/dist/es-5ZXIPVOB.js.map +1 -0
- package/dist/feature-manifest.json +51 -3
- package/dist/{fr-35VN4G4S.js → fr-4F6DAWGD.js} +20 -20
- package/dist/fr-4F6DAWGD.js.map +1 -0
- package/dist/{he_IL-JPZMCURP.js → he_IL-B7PBQUEV.js} +20 -20
- package/dist/he_IL-B7PBQUEV.js.map +1 -0
- package/dist/{id_ID-XSTFHHJQ.js → id_ID-CYJRMXPC.js} +20 -20
- package/dist/id_ID-CYJRMXPC.js.map +1 -0
- package/dist/index.d.ts +599 -225
- package/dist/index.js +10110 -9106
- package/dist/index.js.map +1 -1
- package/dist/{it-EIY6JESQ.js → it-KTX4SG5P.js} +20 -20
- package/dist/it-KTX4SG5P.js.map +1 -0
- package/dist/{ja-42N4XRCW.js → ja-V7OURU5D.js} +20 -20
- package/dist/ja-V7OURU5D.js.map +1 -0
- package/dist/{ko-3VRPTIP3.js → ko-2RNEBYVE.js} +20 -20
- package/dist/ko-2RNEBYVE.js.map +1 -0
- package/dist/{ms_MY-SKN7O6M5.js → ms_MY-EY235E7Q.js} +20 -20
- package/dist/ms_MY-EY235E7Q.js.map +1 -0
- package/dist/{pl-TYARHCLT.js → pl-ADNVRP55.js} +20 -20
- package/dist/pl-ADNVRP55.js.map +1 -0
- package/dist/{pt-72IIFLL4.js → pt-OL2DR3DO.js} +20 -20
- package/dist/pt-OL2DR3DO.js.map +1 -0
- package/dist/quickcharts.css +218 -205
- package/dist/{resources-Ch8eA1Mw.d.ts → resources-Le6flcEn.d.ts} +3 -3
- package/dist/rest-openapi.json +11 -11
- package/dist/{ru-TPH4F7IB.js → ru-V6YFEPAF.js} +20 -20
- package/dist/ru-V6YFEPAF.js.map +1 -0
- package/dist/{sv-DC5RS67Z.js → sv-TORXQVE7.js} +20 -20
- package/dist/sv-TORXQVE7.js.map +1 -0
- package/dist/{th-I6H6AOZ3.js → th-K6SJSYSY.js} +20 -20
- package/dist/th-K6SJSYSY.js.map +1 -0
- package/dist/theme-manifest.json +99 -11
- package/dist/{tr-7FSUVCNW.js → tr-4AEM66KW.js} +20 -20
- package/dist/tr-4AEM66KW.js.map +1 -0
- package/dist/{vi-DLRPHLLH.js → vi-YU5XCEUU.js} +20 -20
- package/dist/vi-YU5XCEUU.js.map +1 -0
- package/dist/{zh-ZXIQBBEP.js → zh-QXKRYHU5.js} +20 -20
- package/dist/zh-QXKRYHU5.js.map +1 -0
- package/dist/{zh_TW-TYNUJU7U.js → zh_TW-AYPDKG4Q.js} +20 -20
- package/dist/zh_TW-AYPDKG4Q.js.map +1 -0
- package/package.json +1 -1
- package/dist/ar-G7MVXRE4.js.map +0 -1
- package/dist/ca_ES-EUSRU4VG.js.map +0 -1
- package/dist/chunk-KFBQSPNA.js.map +0 -1
- package/dist/chunk-RDAK5MUM.js.map +0 -1
- package/dist/de-2SVTG25S.js.map +0 -1
- package/dist/es-UDHZM4W7.js.map +0 -1
- package/dist/fr-35VN4G4S.js.map +0 -1
- package/dist/he_IL-JPZMCURP.js.map +0 -1
- package/dist/id_ID-XSTFHHJQ.js.map +0 -1
- package/dist/it-EIY6JESQ.js.map +0 -1
- package/dist/ja-42N4XRCW.js.map +0 -1
- package/dist/ko-3VRPTIP3.js.map +0 -1
- package/dist/ms_MY-SKN7O6M5.js.map +0 -1
- package/dist/pl-TYARHCLT.js.map +0 -1
- package/dist/pt-72IIFLL4.js.map +0 -1
- package/dist/ru-TPH4F7IB.js.map +0 -1
- package/dist/sv-DC5RS67Z.js.map +0 -1
- package/dist/th-I6H6AOZ3.js.map +0 -1
- package/dist/tr-7FSUVCNW.js.map +0 -1
- package/dist/vi-DLRPHLLH.js.map +0 -1
- package/dist/zh-ZXIQBBEP.js.map +0 -1
- package/dist/zh_TW-TYNUJU7U.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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': 'H',\n 'legend.low': 'L',\n 'legend.close': 'C',\n 'legend.change': '{change} ({percent}%)',\n 'legend.indicatorSettings': 'Configuració de l’indicador',\n 'legend.showRows': 'Show study rows',\n 'legend.hideRows': 'Hide study rows',\n 'legend.restorePane': 'Restaura el panell',\n 'legend.collapsePane': 'Redueix el panell',\n 'legend.maximizePane': 'Maximitza el panell',\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': 'Remove indicator',\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.content_card': 'Fitxa de contingut',\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}\n","import type { Translation } from '../runtime'\nimport type { replay as source } from '../en/replay'\n\nexport const replay: Translation<typeof source> = {\n 'replay.watermark': 'Replay',\n 'replay.selectBar': 'Select bar',\n 'replay.selectDate': 'Select date',\n 'replay.selectStartingPoint': 'Select starting point',\n 'replay.startBar': 'Bar',\n 'replay.startDate': 'Date…',\n 'replay.startFirst': 'First available date',\n 'replay.startRandom': 'Random bar',\n 'replay.startDateField': 'Replay start date',\n 'replay.startTimeField': 'Replay start time (UTC, optional)',\n 'replay.dateMask': 'YYYY-MM-DD',\n 'replay.timeMask': 'HH:MM',\n 'replay.previousMonth': 'Previous month',\n 'replay.nextMonth': 'Next month',\n 'replay.cancel': 'Cancel',\n 'replay.select': 'Select',\n 'replay.weekdayMon': 'Mo',\n 'replay.weekdayTue': 'Tu',\n 'replay.weekdayWed': 'We',\n 'replay.weekdayThu': 'Th',\n 'replay.weekdayFri': 'Fr',\n 'replay.weekdaySat': 'Sa',\n 'replay.weekdaySun': 'Su',\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': 'Replay speed',\n 'replay.updatesPerSecond': { one: '{count} update per second', many: '{count} updates per second', other: '{count} updates per second' },\n 'replay.oneUpdatePerSeconds': { one: '1 update per {count} second', many: '1 update per {count} seconds', other: '1 update per {count} seconds' },\n 'replay.interval': 'Update interval',\n 'replay.intervalHelp': 'How much time each replay update advances. Finer than the chart interval, each bar forms from real finer bars.',\n 'replay.intervalNone': 'No finer interval for this chart interval',\n 'replay.auto': 'Automàtic',\n 'replay.autoSelectInterval': 'Auto select interval',\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': 'Extended hours',\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': 'Layout setup',\n 'layouts.arrangement': 'Chart arrangement',\n 'layouts.syncInLayout': 'Sync in layout',\n 'layouts.syncSymbol': 'Symbol',\n 'layouts.syncInterval': 'Interval',\n 'layouts.syncCrosshair': 'Crosshair',\n 'layouts.syncTime': 'Time',\n 'layouts.syncDateRange': 'Date range',\n 'layouts.syncSymbolTip': 'Symbol changes on all charts within the layout',\n 'layouts.syncIntervalTip': 'Interval changes on all charts within the layout',\n 'layouts.syncCrosshairTip': 'Crosshair is synced across all charts within the layout',\n 'layouts.syncTimeTip': 'When a chart is clicked, all charts within the layout display the same point of time',\n 'layouts.syncDateRangeTip': 'Date range changes on all charts within the layout',\n 'layouts.syncSymbolToggle': 'Sync symbol',\n 'layouts.syncIntervalToggle': 'Sync interval',\n 'layouts.syncCrosshairToggle': 'Sync crosshair',\n 'layouts.syncTimeToggle': 'Sync time',\n 'layouts.syncDateRangeToggle': 'Sync date range',\n 'layouts.unnamed': 'Unnamed',\n 'layouts.unsavedChanges': 'Unsaved changes',\n 'layouts.allSaved': 'All changes saved',\n 'layouts.notSaving': 'Not saving until this is restored',\n 'layouts.manage': 'Manage layouts',\n 'layouts.saveLayout': 'Save layout',\n 'layouts.hintSave': '{modifier} + S',\n 'layouts.hintOpen': 'Dot',\n 'layouts.save': 'Save',\n 'layouts.autosave': 'Autosave',\n 'layouts.rename': 'Rename',\n 'layouts.copyOfName': '{name} copy',\n 'layouts.saveNewTitle': 'Save New Chart Layout',\n 'layouts.saveNewLabel': 'Enter a new chart layout name:',\n 'layouts.copyTitle': 'Make copy of chart layout',\n 'layouts.renameTitle': 'Rename chart layout',\n 'layouts.createTitle': 'Create layout',\n 'layouts.newLayoutName': 'New layout name',\n 'layouts.createPlaceholder': 'My layout',\n 'layouts.create': 'Create',\n 'layouts.makeCopyRow': 'Make a copy…',\n 'layouts.renameRow': 'Rename…',\n 'layouts.downloadDataRow': 'Download chart data',\n 'layouts.createNewRow': 'Create new layout…',\n 'layouts.recentlyUsed': 'Recently used',\n 'layouts.loading': 'Loading',\n 'layouts.emptyNone': 'No saved layouts yet.',\n 'layouts.openLayoutRow': 'Open layout…',\n 'layouts.listingFacts': '{symbol}, {interval}',\n 'layouts.listingDated': '{facts} ({date})',\n 'layouts.dialogTitle': 'Layouts',\n 'layouts.search': 'Search',\n 'layouts.columnName': 'Layout name',\n 'layouts.sortBy': 'Sort by layout name, date changed',\n 'layouts.sortNameAsc': 'Layout name (A to Z)',\n 'layouts.sortNameDesc': 'Layout name (Z to A)',\n 'layouts.sortModifiedAsc': 'Date modified (oldest first)',\n 'layouts.sortModifiedDesc': 'Date modified (newest first)',\n 'layouts.favorite': 'Add to favorites',\n 'layouts.unfavorite': 'Remove from favorites',\n 'layouts.noMatches': 'Nothing matches.',\n 'layouts.delete': 'Delete',\n 'layouts.deleteNamed': 'Delete {name}',\n 'layouts.deleteConfirm': 'Delete this chart layout?',\n 'layouts.deleteConfirmBody': 'Doing this will permanently delete your \"{name}\" layout.',\n 'layouts.cancel': 'Cancel',\n 'layouts.close': 'Close',\n 'layouts.errList': 'Could not load your saved layouts.',\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': 'Saved elsewhere since you opened it. Load the newer version before saving.',\n 'host.saveNotFound': 'This was deleted elsewhere. Save it again as new.',\n 'host.loadInvalid': 'This could not be opened. Nothing on screen changed.',\n 'host.loadUnavailable': 'Your saved work could not be reached. Nothing on screen changed.',\n 'host.loadNotRestored': 'This could not be opened, and what was on screen could not be put back. The chart is not saving until you open a saved chart or layout. Save a copy first to keep what is on screen.',\n 'host.notSaving': 'The chart is not saving. Open a saved chart or layout to start from a known state. Saving a copy keeps what is on screen, but the chart still will not save.',\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': 'Simple Moving Average',\n 'indicator.smaDescription': 'Smoothed average over a fixed window',\n 'indicator.emaName': 'Exponential Moving Average',\n 'indicator.emaDescription': 'Recency-weighted moving average',\n 'indicator.hmaName': 'Hull Moving Average',\n 'indicator.hmaDescription': 'Low-lag weighted moving average',\n 'indicator.vwmaName': 'Volume Weighted MA',\n 'indicator.vwmaDescription': 'Moving average weighted by volume',\n 'indicator.bollingerName': 'Bollinger Bands',\n 'indicator.bollingerDescription': 'SMA envelope at two standard deviations',\n 'indicator.donchianName': 'Donchian Channels',\n 'indicator.donchianDescription': 'Rolling highest-high and lowest-low channel',\n 'indicator.keltnerName': 'Keltner Channels',\n 'indicator.keltnerDescription': 'EMA midline with ATR-scaled bands',\n 'indicator.supertrendName': 'Supertrend',\n 'indicator.supertrendDescription': 'ATR trend band that flips with direction',\n 'indicator.psarName': 'Parabolic SAR',\n 'indicator.psarDescription': 'Stop-and-reverse trailing dots',\n 'indicator.rsiName': 'Relative Strength Index',\n 'indicator.rsiDescription': 'Momentum oscillator from 0 to 100',\n 'indicator.macdName': 'MACD',\n 'indicator.macdDescription': 'Moving Average Convergence Divergence',\n 'indicator.stochasticName': 'Stochastic Oscillator',\n 'indicator.stochasticDescription': '%K and %D momentum from 0 to 100',\n 'indicator.stochrsiName': 'Stochastic RSI',\n 'indicator.stochrsiDescription': 'Stochastic applied to the RSI series',\n 'indicator.adxName': 'Average Directional Index',\n 'indicator.adxDescription': 'Trend strength with +DI and -DI',\n 'indicator.atrName': 'Average True Range',\n 'indicator.atrDescription': 'Volatility: Wilder\\'s true-range average',\n 'indicator.cciName': 'Commodity Channel Index',\n 'indicator.cciDescription': 'Deviation from the typical-price average',\n 'indicator.williamsName': 'Williams %R',\n 'indicator.williamsDescription': 'Overbought and oversold momentum from -100 to 0',\n 'indicator.rocName': 'Rate of Change',\n 'indicator.rocDescription': 'Percent change over the period',\n 'indicator.momentumName': 'Momentum',\n 'indicator.momentumDescription': 'Price difference over the period',\n 'indicator.volumeName': 'Volume',\n 'indicator.volumeDescription': 'Per-bar traded volume histogram',\n 'indicator.vwapName': 'Volume Weighted Avg Price',\n 'indicator.vwapDescription': 'Cumulative volume-weighted average price',\n 'indicator.obvName': 'On-Balance Volume',\n 'indicator.obvDescription': 'Cumulative volume by close direction',\n 'indicator.mfiName': 'Money Flow Index',\n 'indicator.mfiDescription': 'Volume-weighted RSI from 0 to 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}\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 {interval}',\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': 'Maximize chart',\n 'range.restoreChart': 'Restore chart',\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': 'End of day',\n 'status.endOfDay': 'Prices update once a day, after the session closes.',\n 'status.delayed': 'Prices are delayed.',\n 'status.delayedPair': '{status} {delay}',\n 'status.continuousTitle': 'Obert 24/7',\n 'status.continuous': 'This market trades around the clock and never closes.',\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': 'Market is open for extended-hours trading.',\n 'status.extendedRegular': 'Market is open for extended-hours trading. Regular hours start in {until}.',\n 'status.extendedCloses': 'Market is open for extended-hours trading. Closes in {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': 'Search symbol',\n 'search.clear': 'Esborra',\n 'search.close': 'Close',\n 'search.noMatches': 'No symbols match your criteria',\n 'search.loadingMore': 'Loading more',\n 'search.failed': 'Search failed.',\n 'search.results': 'Symbols',\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': 'No symbols here yet. Why not add some?',\n 'search.allClasses': 'All',\n 'search.classFilter': 'Asset class',\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': 'Spread operators',\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': 'Drawing tools',\n 'drawing.groupTrend': 'Trend tools',\n 'drawing.groupFibGann': 'Fibonacci & Gann',\n 'drawing.groupPatterns': 'Patterns',\n 'drawing.groupForecast': 'Forecast & measure',\n 'drawing.groupGlyphs': 'Emojis & stickers',\n 'drawing.shapes': 'Shapes',\n 'drawing.textNotes': 'Text & notes',\n 'drawing.groupMenu': '{group} menu',\n 'drawing.sectionLines': 'Lines',\n 'drawing.sectionChannels': 'Channels',\n 'drawing.sectionPitchforks': 'Pitchforks',\n 'drawing.sectionFibonacci': 'Fibonacci',\n 'drawing.sectionGann': 'Gann',\n 'drawing.sectionChartPatterns': 'Chart patterns',\n 'drawing.sectionElliott': 'Elliott waves',\n 'drawing.sectionCycles': 'Cycles',\n 'drawing.sectionForecasting': 'Forecasting',\n 'drawing.sectionVolumeBased': 'Volume based',\n 'drawing.sectionMeasures': 'Measures',\n 'drawing.sectionBrushes': 'Brushes',\n 'drawing.sectionArrows': 'Arrows',\n 'drawing.sectionContent': 'Content',\n 'drawing.sectionGlyphs': 'Emojis, stickers, icons',\n 'drawing.cursor': 'Cursor',\n 'drawing.cursorMenu': 'Cursor menu',\n 'drawing.cursorCross': 'Cross',\n 'drawing.cursorDot': 'Dot',\n 'drawing.cursorArrow': 'Arrow',\n 'drawing.cursorEraser': 'Eraser',\n 'drawing.measure': 'Measure',\n 'drawing.zoomIn': 'Zoom in',\n 'drawing.magnet': 'Magnet',\n 'drawing.magnetMenu': 'Magnet menu',\n 'drawing.magnetWeak': 'Weak magnet',\n 'drawing.magnetStrong': 'Strong magnet',\n 'drawing.stayInDrawingMode': 'Stay in drawing mode',\n 'drawing.lockAll': 'Lock all drawings',\n 'drawing.unlockAll': 'Unlock all drawings',\n 'drawing.hideMenu': 'Hide menu',\n 'drawing.hideDrawings': 'Hide drawings',\n 'drawing.showDrawings': 'Show drawings',\n 'drawing.hideIndicators': 'Hide indicators',\n 'drawing.showIndicators': 'Show indicators',\n 'drawing.hideAll': 'Hide all',\n 'drawing.showAll': 'Show all',\n 'drawing.syncLabel': 'Sync drawings across the layout',\n 'drawing.syncOnHelp': 'New drawings are replicated to all charts in the layout and shown when the same ticker is selected',\n 'drawing.syncOffHelp': 'New drawings stay on the chart that drew them',\n 'drawing.removeMenu': 'Remove menu',\n 'drawing.removeDrawings': 'Remove drawings',\n 'drawing.countDrawings': { one: '{count} drawing', many: '{count} drawings', other: '{count} drawings' },\n 'drawing.countIndicators': { one: '{count} indicator', many: '{count} indicators', other: '{count} indicators' },\n 'drawing.removeItems': 'Remove {items}',\n 'drawing.removeBoth': 'Remove {drawings} & {indicators}',\n 'drawing.nothingToRemove': 'Nothing to remove',\n 'drawing.alwaysRemoveLocked': 'Always remove locked drawings',\n 'drawing.favTools': 'Favorite drawing tools',\n 'drawing.favToolsBar': 'Favorite drawing tools toolbar',\n 'drawing.favAdd': 'Add {tool} to favorites',\n 'drawing.favRemove': 'Remove {tool} from favorites',\n 'drawing.moveToolbar': 'Move toolbar',\n 'drawing.moveFavoritesToolbar': 'Move favorites toolbar',\n 'drawing.settingsBar': 'Selected drawing',\n 'drawing.templates': 'Templates',\n 'drawing.drawingTemplates': 'Drawing templates',\n 'drawing.saveTemplateAs': 'Save drawing template as...',\n 'drawing.applyDefaultTemplate': 'Apply default drawing template',\n 'drawing.removeTemplateNamed': 'Remove template {name}',\n 'drawing.remove': 'Remove',\n 'drawing.addRowShort': '+ Row',\n 'drawing.addColumnShort': '+ Col',\n 'drawing.drawingColor': 'Drawing color',\n 'drawing.backgroundColor': 'Background color',\n 'drawing.thickness': 'Thickness',\n 'drawing.lineThickness': 'Line thickness',\n 'drawing.thicknessValue': 'Thickness {n}px',\n 'drawing.lineStyle': 'Line style',\n 'drawing.lineStyleValue': 'Line style {name}',\n 'drawing.lineSolid': 'Line',\n 'drawing.lineDashed': 'Dashed line',\n 'drawing.lineDotted': 'Dotted line',\n 'drawing.settings': 'Settings',\n 'drawing.drawingSettings': 'Drawing settings',\n 'drawing.lock': 'Lock',\n 'drawing.unlock': 'Unlock',\n 'drawing.lockDrawing': 'Lock drawing',\n 'drawing.unlockDrawing': 'Unlock drawing',\n 'drawing.deleteDrawing': 'Delete drawing',\n 'drawing.more': 'More',\n 'drawing.moreActions': 'More drawing actions',\n 'drawing.visualOrder': 'Visual order',\n 'drawing.visibilityOnIntervals': 'Visibility on intervals',\n 'drawing.clone': 'Clone',\n 'drawing.copy': 'Copy',\n 'drawing.modifierControl': 'Ctrl',\n 'drawing.modifierCommand': 'Cmd',\n 'drawing.hintClone': '{modifier} + Drag',\n 'drawing.hintCopy': '{modifier} + C',\n 'drawing.hintPaste': '{modifier} + V',\n 'drawing.deleteWithKey': 'Delete (Del)',\n 'drawing.statusDrawingsHidden': 'Drawings hidden',\n 'drawing.statusDrawingsShown': 'Drawings shown',\n 'drawing.statusIndicatorsHidden': 'Indicators hidden',\n 'drawing.statusIndicatorsShown': 'Indicators shown',\n 'drawing.statusAllHidden': 'Drawings and indicators hidden',\n 'drawing.statusAllShown': 'Drawings and indicators shown',\n 'drawing.statusAllLocked': 'All drawings locked',\n 'drawing.statusAllUnlocked': 'All drawings unlocked',\n 'drawing.hide': 'Hide',\n 'drawing.bringToFront': 'Bring to front',\n 'drawing.sendToBack': 'Send to back',\n 'drawing.bringForward': 'Bring forward',\n 'drawing.sendBackward': 'Send backward',\n 'drawing.visCurrentAndAbove': 'Current interval and above',\n 'drawing.visCurrentAndBelow': 'Current interval and below',\n 'drawing.visCurrentOnly': 'Current interval only',\n 'drawing.visAll': 'All intervals',\n 'drawing.saveTemplate': 'Save drawing template',\n 'drawing.templateName': 'Template name',\n 'drawing.save': 'Save',\n 'drawing.deleteTemplateTitle': 'Delete this template?',\n 'drawing.deleteTemplateBody': 'Doing this will permanently delete your \"{name}\" drawing template.',\n 'drawing.settingsTitle': '{tool} settings',\n 'drawing.tabInputs': 'Inputs',\n 'drawing.tabStyle': 'Style',\n 'drawing.tabText': 'Text',\n 'drawing.tabTable': 'Table',\n 'drawing.tabCoordinates': 'Coordinates',\n 'drawing.tabVisibility': 'Visibility',\n 'drawing.template': 'Template',\n 'drawing.saveAs': 'Save as...',\n 'drawing.applyDefaults': 'Apply defaults',\n 'drawing.cancel': 'Cancel',\n 'drawing.ok': 'Ok',\n 'drawing.delete': 'Delete',\n 'drawing.close': 'Close',\n 'drawing.color': 'Color',\n 'drawing.rowLine': 'Line',\n 'drawing.background': 'Background',\n 'drawing.border': 'Border',\n 'drawing.profitColor': 'Target zone color',\n 'drawing.stopColor': 'Stop zone color',\n 'drawing.textColor': 'Text color',\n 'drawing.fontSize': 'Font size',\n 'drawing.size': 'Size',\n 'drawing.width': 'Width',\n 'drawing.opacity': 'Opacity',\n 'drawing.transparency': 'Transparency',\n 'drawing.label': 'Label',\n 'drawing.labels': 'Labels',\n 'drawing.left': 'Left',\n 'drawing.center': 'Center',\n 'drawing.right': 'Right',\n 'drawing.up': 'Up',\n 'drawing.down': 'Down',\n 'drawing.rowVisible': '{name} visible',\n 'drawing.leftEnd': 'Left end',\n 'drawing.rightEnd': 'Right end',\n 'drawing.lineEndNormal': 'Normal',\n 'drawing.lineEndArrow': 'Arrow',\n 'drawing.increase': 'Increase',\n 'drawing.decrease': 'Decrease',\n 'drawing.rangeFrom': 'From',\n 'drawing.rangeTo': 'To',\n 'drawing.pickColor': 'Pick a color',\n 'drawing.extend': 'Extend',\n 'drawing.extendNone': 'Don\\'t extend',\n 'drawing.extendLeft': 'Extend left',\n 'drawing.extendRight': 'Extend right',\n 'drawing.extendBoth': 'Extend both',\n 'drawing.extendLines': 'Extend lines',\n 'drawing.middlePoint': 'Middle point',\n 'drawing.middleLine': 'Middle line',\n 'drawing.priceLabel': 'Price label',\n 'drawing.priceLabels': 'Price labels',\n 'drawing.timeLabel': 'Time label',\n 'drawing.rowStyle': 'Style',\n 'drawing.variantOriginal': 'Original',\n 'drawing.variantSchiff': 'Schiff',\n 'drawing.variantModifiedSchiff': 'Modified Schiff',\n 'drawing.variantInside': 'Inside',\n 'drawing.sectionStats': 'Stats',\n 'drawing.priceChange': 'Price change',\n 'drawing.percentChange': 'Percent change',\n 'drawing.bars': 'Bars',\n 'drawing.dateTimeRange': 'Date/time range',\n 'drawing.volume': 'Volume',\n 'drawing.sectionInfo': 'Info',\n 'drawing.priceRange': 'Price range',\n 'drawing.barsRange': 'Bars range',\n 'drawing.angle': 'Angle',\n 'drawing.statsPosition': 'Stats position',\n 'drawing.direction': 'Direction',\n 'drawing.prices': 'Prices',\n 'drawing.levels': 'Levels',\n 'drawing.reverse': 'Reverse',\n 'drawing.fullCircles': 'Full circles',\n 'drawing.coeffsAsPercents': 'Coeffs as percents',\n 'drawing.glyph': 'Glyph',\n 'drawing.image': 'Image',\n 'drawing.replaceEllipsis': 'Replace...',\n 'drawing.chooseEllipsis': 'Choose...',\n 'drawing.link': 'Link',\n 'drawing.rowsLayout': 'Rows layout',\n 'drawing.rowsByNumber': 'Number of rows',\n 'drawing.ticksPerRow': 'Ticks per row',\n 'drawing.rowSize': 'Row size',\n 'drawing.upDown': 'Up/Down',\n 'drawing.total': 'Total',\n 'drawing.delta': 'Delta',\n 'drawing.valueAreaVolume': 'Value area volume',\n 'drawing.widthPercent': 'Width %',\n 'drawing.placement': 'Placement',\n 'drawing.upDownVolume': 'Up/Down volume',\n 'drawing.valueAreaUpDown': 'Value area up/down',\n 'drawing.pointOfControl': 'Point of control',\n 'drawing.valueAreaHigh': 'Value area high',\n 'drawing.valueAreaLow': 'Value area low',\n 'drawing.developingPoc': 'Developing PoC',\n 'drawing.developingVa': 'Developing VA',\n 'drawing.source': 'Source',\n 'drawing.mode': 'Mode',\n 'drawing.modeLineOpen': 'Line (Open)',\n 'drawing.modeLineHigh': 'Line (High)',\n 'drawing.modeLineLow': 'Line (Low)',\n 'drawing.modeLineClose': 'Line (Close)',\n 'drawing.modeLineHl2': 'Line (HL2)',\n 'drawing.mirrored': 'Mirrored',\n 'drawing.flipped': 'Flipped',\n 'drawing.target': 'Target',\n 'drawing.success': 'Success',\n 'drawing.failure': 'Failure',\n 'drawing.avgHl': 'Avg HL',\n 'drawing.variance': 'Variance',\n 'drawing.body': 'Body',\n 'drawing.borders': 'Borders',\n 'drawing.drawBorders': 'Draw borders',\n 'drawing.wick': 'Wick',\n 'drawing.drawWicks': 'Draw wicks',\n 'drawing.sectionDeviation': 'Deviation',\n 'drawing.upper': 'Upper',\n 'drawing.lower': 'Lower',\n 'drawing.useUpperDeviation': 'Use upper deviation',\n 'drawing.useLowerDeviation': 'Use lower deviation',\n 'drawing.risk': 'Risk',\n 'drawing.accountSize': 'Account size',\n 'drawing.lotSize': 'Lot size',\n 'drawing.leverage': 'Leverage',\n 'drawing.compactStatsMode': 'Compact stats mode',\n 'drawing.levelVisible': 'Level {value} visible',\n 'drawing.levelText': 'Level {value} text',\n 'drawing.removeLevel': 'Remove level {value}',\n 'drawing.addLevel': 'Add level',\n 'drawing.weight': 'Weight',\n 'drawing.bold': 'Bold',\n 'drawing.italic': 'Italic',\n 'drawing.addText': 'Add text',\n 'drawing.alignment': 'Alignment',\n 'drawing.textPlaceholder': 'Text',\n 'drawing.textEditor': 'Drawing text',\n 'drawing.headerRow': 'Header row',\n 'drawing.tableCell': 'Cell {row},{col}',\n 'drawing.addRow': 'Add row',\n 'drawing.removeRow': 'Remove row',\n 'drawing.addColumn': 'Add column',\n 'drawing.removeColumn': 'Remove column',\n 'drawing.coordBar': '#{n} (bar)',\n 'drawing.coordPriceBar': '#{n} (price, bar)',\n 'drawing.unitTicks': 'Ticks',\n 'drawing.unitSeconds': 'Seconds',\n 'drawing.unitMinutes': 'Minutes',\n 'drawing.unitHours': 'Hours',\n 'drawing.unitDays': 'Days',\n 'drawing.unitWeeks': 'Weeks',\n 'drawing.unitMonths': 'Months',\n 'drawing.intervalPinnedNote': 'A drawing stays on at least one interval, so it can always be reached again.',\n 'drawing.colorSwatch': 'Color {hex}',\n 'drawing.customColor': 'Custom color',\n 'drawing.saturationValue': 'Saturation and brightness',\n 'drawing.hue': 'Hue',\n 'drawing.hexColor': 'Hex color',\n 'drawing.add': 'Add',\n 'drawing.glyphPicker': 'Glyph picker',\n 'drawing.kindEmojis': 'Emojis',\n 'drawing.kindStickers': 'Stickers',\n 'drawing.kindIcons': 'Icons',\n 'drawing.recentlyUsed': 'Recently used',\n 'drawing.recentGlyph': 'Recent {glyph}',\n 'drawing.stickersSoon': 'No sticker set is installed.',\n 'drawing.glyphCatSmileys': 'Smileys & People',\n 'drawing.glyphCatNature': 'Animals & Nature',\n 'drawing.glyphCatFood': 'Food & Drink',\n 'drawing.glyphCatActivity': 'Activity',\n 'drawing.glyphCatTravel': 'Travel & Places',\n 'drawing.glyphCatObjects': 'Objects',\n 'drawing.glyphCatSymbols': 'Symbols',\n 'drawing.glyphCatFlags': 'Flags',\n 'drawing.glyphCatIconArrows': 'Arrows',\n 'drawing.glyphCatIconCurrency': 'Currency',\n 'drawing.glyphCatIconGestures': 'Gestures and smileys',\n 'drawing.glyphCatIconNature': 'Nature',\n 'drawing.glyphCatIconSpecial': 'Special',\n 'drawing.glyphCatIconSymbols': 'Symbols and flags',\n 'drawing.imageReading': 'Reading...',\n 'drawing.chooseImage': 'Choose image',\n 'drawing.imageFormats': 'JPG or PNG',\n 'drawing.imageMaxSize': 'Max size 2MB',\n 'drawing.imageDimensions': '{width} x {height}',\n 'drawing.imageErrorType': 'That file is not a JPG or PNG. Pick one of those two formats.',\n 'drawing.imageErrorSize': 'That image is {size}. The limit is 2MB.',\n 'drawing.imageErrorRead': 'That file could not be read. Try picking it again.',\n 'drawing.imageErrorDecode': 'That image could not be opened. It may be damaged.',\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': 'Host command',\n 'command.viewReset': 'Reset view',\n 'command.viewGoLive': 'Go to the live edge',\n 'command.viewZoomIn': 'Zoom in',\n 'command.viewZoomOut': 'Zoom out',\n 'command.viewScrollLeft': 'Scroll back',\n 'command.viewScrollRight': 'Scroll forward',\n 'command.priceCopy': 'Copy price',\n 'command.symbolSet': 'Change symbol',\n 'command.styleCandles': 'Candles',\n 'command.styleHollow': 'Hollow candles',\n 'command.styleBars': 'Bars',\n 'command.styleLine': 'Line',\n 'command.styleArea': 'Area',\n 'command.styleBaseline': 'Baseline',\n 'command.styleStepline': 'Step line',\n 'command.appearanceApply': 'Chart appearance',\n 'command.appearanceReset': 'Reset defaults',\n 'command.scaleNormal': 'Regular price scale',\n 'command.scaleLog': 'Logarithmic price scale',\n 'command.scalePercent': 'Percentage price scale',\n 'command.scaleIndexed': 'Indexed price scale',\n 'command.historyUndo': 'Undo',\n 'command.historyRedo': 'Redo',\n 'command.indicatorAdd': 'Add indicator',\n 'command.indicatorUpdate': 'Update indicator',\n 'command.indicatorsRemoveAll': 'Remove indicators',\n 'command.indicatorRemove': 'Remove indicator',\n 'command.indicatorHide': 'Hide indicator',\n 'command.indicatorShow': 'Show indicator',\n 'command.drawingsRemoveAll': 'Remove drawings',\n 'command.drawingDeleteSelected': 'Delete selected drawing',\n 'command.drawingArm': 'Drawing tool',\n 'command.drawingCursor': 'Cursor mode',\n 'command.drawingMagnet': 'Magnet',\n 'command.drawingStayInMode': 'Stay in drawing mode',\n 'command.drawingLockAll': 'Lock all drawings',\n 'command.drawingHide': 'Hide drawings or indicators',\n 'command.drawingSync': 'Sync drawings across the layout',\n 'command.drawingRemoveLockedPolicy': 'Always remove locked drawings',\n 'command.drawingFavorite': 'Favorite drawing tool',\n 'command.drawingFavoritesBar': 'Favorite drawing tools toolbar',\n 'command.drawingStyle': 'Drawing style',\n 'command.drawingProps': 'Drawing properties',\n 'command.drawingLock': 'Lock drawing',\n 'command.drawingClone': 'Clone drawing',\n 'command.drawingCopy': 'Copy drawing',\n 'command.drawingPaste': 'Paste drawing',\n 'command.drawingBringToFront': 'Bring drawing to front',\n 'command.drawingSendToBack': 'Send drawing to back',\n 'command.drawingBringForward': 'Bring drawing forward',\n 'command.drawingSendBackward': 'Send drawing backward',\n 'command.drawingHideSelected': 'Hide drawing',\n 'command.drawingVisibility': 'Drawing visibility on intervals',\n 'command.drawingSettings': 'Drawing settings',\n 'command.drawingCommitEdit': 'Apply drawing settings',\n 'command.drawingPlaceImage': 'Place image',\n 'command.drawingTemplateApply': 'Apply drawing template',\n 'command.drawingTemplateSave': 'Save drawing template',\n 'command.drawingTemplateRemove': 'Remove drawing template',\n 'command.drawingTableAddRow': 'Add table row',\n 'command.drawingTableAddColumn': 'Add table column',\n 'command.drawingCancel': 'Cancel drawing',\n 'command.compareOpen': 'Compare or add symbol',\n 'command.compareAdd': 'Add comparison',\n 'command.compareRemove': 'Remove comparison',\n 'command.compareVisible': 'Show or hide a comparison',\n 'command.compareChangeSymbol': 'Change compared symbol',\n 'command.replayStart': 'Start bar replay',\n 'command.replayStartFirst': 'Start bar replay at the first available date',\n 'command.replayExit': 'Exit bar replay',\n 'command.replayPlay': 'Play replay',\n 'command.replayPause': 'Pause replay',\n 'command.replayStepForward': 'Step forward',\n 'command.replayStepBack': 'Step back',\n 'command.replayGoLive': 'Replay to the live edge',\n 'command.replaySpeed': 'Replay speed',\n 'command.replayInterval': 'Replay update interval',\n 'command.timeframeSet': 'Timeframe',\n 'command.subsessionRegular': 'Regular hours',\n 'command.subsessionExtended': 'Extended hours',\n 'command.rangeSet': 'Date range',\n 'command.timezoneSet': 'Timezone',\n 'command.themeLight': 'Light theme',\n 'command.themeDark': 'Dark theme',\n 'command.themeToggle': 'Switch theme',\n 'command.themeSet': 'Set theme',\n 'command.localeSet': 'Language',\n 'command.fullscreenEnter': 'Fullscreen',\n 'command.fullscreenExit': 'Exit fullscreen',\n 'command.fullscreenToggle': 'Toggle fullscreen',\n 'command.imageCapture': 'Capture image',\n 'command.imageDownload': 'Download image',\n 'command.dataDownload': 'Download chart data',\n 'command.imageCopy': 'Copy image',\n 'command.layoutArrangement': 'Layout',\n 'command.layoutActive': 'Active chart',\n 'command.layoutSync': 'Chart synchronization',\n 'command.layoutActivateNext': 'Next chart in layout',\n 'command.layoutActivatePrevious': 'Previous chart in layout',\n 'command.layoutMaximize': 'Maximize or restore the active chart',\n 'command.layoutSave': 'Save layout',\n 'command.layoutRename': 'Rename layout',\n 'command.layoutLoad': 'Open layout',\n 'command.layoutOpen': 'Open layout…',\n 'command.layoutDelete': 'Delete layout',\n 'command.layoutCreate': 'Create new layout',\n 'command.layoutAutosave': 'Autosave layout',\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': 'Chart toolbar',\n 'chrome.bottomBar': 'Chart footer',\n 'chrome.symbolSearch': 'Search symbol',\n 'chrome.compare': 'Compare or add symbol',\n 'chrome.chartStyle': 'Chart style',\n 'chrome.indicators': 'Indicators',\n 'chrome.replay': 'Bar replay',\n 'chrome.replayChip': 'Replay',\n 'chrome.image': 'Chart image',\n 'chrome.session': 'Trading session',\n 'chrome.sessionsHeading': 'Sessions',\n 'chrome.navigation': 'Chart navigation',\n 'chrome.activeChart': '{symbol}, {timeframe}',\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': 'Undo {change}',\n 'history.redoNamed': 'Redo {change}',\n 'history.changeSymbol': 'symbol change',\n 'history.changeTimeframe': 'timeframe change',\n 'history.changeChartStyle': 'chart style change',\n 'history.changePriceScale': 'price scale change',\n 'history.changeAppearance': 'appearance change',\n 'history.changeAddCompare': 'add comparison',\n 'history.changeRemoveCompare': 'remove comparison',\n 'history.changeCompare': 'comparison change',\n 'history.changeAddIndicator': 'add indicator',\n 'history.changeRemoveIndicator': 'remove indicator',\n 'history.changeIndicator': 'indicator change',\n 'history.changeAddDrawing': 'add drawing',\n 'history.changeRemoveDrawing': 'remove drawing',\n 'history.changeDrawing': 'drawing change',\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': 'Indicators',\n 'picker.search': 'Search indicators',\n 'picker.noMatches': 'No matching indicators.',\n 'picker.collections': 'Indicator collections',\n 'picker.personal': 'Personal',\n 'picker.builtin': 'Built-in',\n 'picker.favorites': 'Favorites',\n 'picker.thousands': ' K',\n 'picker.name': 'Name',\n 'picker.author': 'Author',\n 'picker.favorite': 'Favorite {name}',\n 'picker.unfavorite': 'Unfavorite {name}',\n 'picker.loading': 'Loading indicators…',\n 'picker.unavailable': 'Indicator content is unavailable. Try again.',\n 'picker.actionFailed': 'The action could not be completed. Try again.',\n 'picker.add': 'Add {name}',\n 'picker.notPermitted': '{name} is not available here',\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': 'Chart settings',\n 'settings.sectionAppearance': 'Appearance',\n 'settings.background': 'Background',\n 'settings.upCandles': 'Up candles',\n 'settings.downCandles': 'Down candles',\n 'settings.upBorders': 'Up borders',\n 'settings.downBorders': 'Down borders',\n 'settings.upWicks': 'Up wicks',\n 'settings.downWicks': 'Down wicks',\n 'settings.sectionDisplay': 'Display',\n 'settings.gridLines': 'Grid lines',\n 'settings.sessionShading': 'Session shading',\n 'settings.sectionScale': 'Price scale',\n 'settings.sectionTheme': 'Theme',\n 'settings.indicatorTitle': '{name} settings',\n 'settings.tabInputs': 'Inputs',\n 'settings.tabStyle': 'Style',\n 'settings.tabVisibility': 'Visibility',\n 'settings.plots': 'Plots',\n 'settings.levels': 'Levels',\n 'settings.fills': 'Fills',\n 'settings.colorOf': '{name} color',\n 'settings.lineWidthOf': '{name} line width',\n 'settings.lineStyleOf': '{name} line style',\n 'settings.visibleOf': 'Show {name}',\n 'settings.lineStyleSolid': 'Solid',\n 'settings.lineStyleDashed': 'Dashed',\n 'settings.lineStyleDotted': 'Dotted',\n 'settings.precision': 'Precision',\n 'settings.precisionDefault': 'Default',\n 'settings.labelsOnPriceScale': 'Labels on price scale',\n 'settings.showIndicator': 'Show this indicator',\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': 'Dismiss',\n 'toast.feedUnavailable': 'No data for {symbol} from this feed.',\n 'toast.feedNoData': 'No data for {symbol} yet.',\n 'toast.imageCopyFallback': 'Could not copy the image. Saved a file instead.',\n 'toast.imageFailed': 'Could not capture the chart image.',\n 'toast.indicatorsNotCarried': { one: '{count} indicator in this saved chart is not available here and was left out.', many: '{count} indicators in this saved chart are not available here and were left out.', other: '{count} indicators in this saved chart are not available here and were left out.' },\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":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resources.ts"],"sourcesContent":["// SAVED RESOURCES — the revisioned, async persistence contract for the entities a chart names and\n// a user 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\nexport type TemplateKind = 'study' | 'drawing' | 'palette'\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); study and palette 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":[]}
|