bb-relay 0.0.32 → 0.0.34

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 (46) hide show
  1. package/dist/{FileContent-BWulmcoi.d.mts → FileContent-CXlulSZq.d.mts} +1 -0
  2. package/dist/{FileContent-BWulmcoi.d.ts → FileContent-CXlulSZq.d.ts} +1 -0
  3. package/dist/{Locale-DvFwr_9k.d.mts → Locale-DnNmuMZq.d.mts} +2 -0
  4. package/dist/{Locale-DvFwr_9k.d.ts → Locale-DnNmuMZq.d.ts} +2 -0
  5. package/dist/{EventReturn-CGAZ-l1W.d.mts → RequestReturn-Clb_WcNj.d.ts} +31 -13
  6. package/dist/{EventReturn-CXACStVQ.d.ts → RequestReturn-Dahl-hde.d.mts} +31 -13
  7. package/dist/api.d.mts +12 -6
  8. package/dist/api.d.ts +12 -6
  9. package/dist/editor.d.mts +3 -2
  10. package/dist/editor.d.ts +3 -2
  11. package/dist/index.d.mts +12 -16
  12. package/dist/index.d.ts +12 -16
  13. package/dist/index.js +59 -60
  14. package/dist/index.mjs +58 -59
  15. package/dist/locale.d.mts +2 -2
  16. package/dist/locale.d.ts +2 -2
  17. package/dist/locale.js +6 -2
  18. package/dist/locale.mjs +6 -2
  19. package/dist/plugin.d.mts +4 -3
  20. package/dist/plugin.d.ts +4 -3
  21. package/dist/plugin.js +3 -3
  22. package/dist/plugin.mjs +2 -2
  23. package/package.json +1 -1
  24. package/src/api.ts +11 -1
  25. package/src/index.ts +5 -5
  26. package/src/lib/plugin/ElementInstruction/InputInstruction.ts +1 -1
  27. package/src/lib/plugin/index.ts +8 -4
  28. package/src/lib/validate-manifest/index.ts +1 -5
  29. package/src/locales/en-GB.ts +168 -166
  30. package/src/locales/fr-FR.ts +171 -169
  31. package/src/relay/postEventResponse.ts +0 -2
  32. package/src/relay/postRequestResponse.ts +14 -0
  33. package/src/relay/registerEvent.ts +8 -3
  34. package/src/relay/registerRequest.ts +35 -0
  35. package/src/relay/request.ts +19 -0
  36. package/src/relay/subscribe.ts +20 -0
  37. package/src/types/api/EventParam.ts +1 -2
  38. package/src/types/api/EventReturn.ts +0 -2
  39. package/src/types/api/RelayEvent.ts +1 -7
  40. package/src/types/api/RequestParam.ts +10 -0
  41. package/src/types/api/RequestReturn.ts +9 -0
  42. package/src/types/editor/FileContent.ts +10 -6
  43. package/src/types/editor/Load.ts +1 -2
  44. package/src/types/editor/Manifest.ts +2 -4
  45. package/src/types/editor/Settings.ts +44 -43
  46. package/src/relay/index.ts +0 -61
package/dist/locale.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { L as Language } from './Locale-DvFwr_9k.js';
2
- export { a as Locale, e as enGB } from './Locale-DvFwr_9k.js';
1
+ import { L as Language } from './Locale-DnNmuMZq.js';
2
+ export { a as Locale, e as enGB } from './Locale-DnNmuMZq.js';
3
3
 
4
4
  declare const frFR: {
5
5
  [key in Language]: string;
package/dist/locale.js CHANGED
@@ -152,7 +152,9 @@ var enGB = {
152
152
  "app.minimise": "Minimise",
153
153
  "app.maximise": "Maximise",
154
154
  "app.restart": "Restart",
155
- app: "App"
155
+ app: "App",
156
+ settings: "Settings",
157
+ preferences: "Preferences"
156
158
  };
157
159
  var en_GB_default = enGB;
158
160
 
@@ -310,7 +312,9 @@ var frFR = {
310
312
  "app.minimise": "Minimiser",
311
313
  "app.maximise": "Maximiser",
312
314
  "app.restart": "Red\xE9marrer",
313
- app: "App"
315
+ app: "App",
316
+ settings: "Param\xE8tres",
317
+ preferences: "Pr\xE9f\xE9rences"
314
318
  };
315
319
  var fr_FR_default = frFR;
316
320
 
package/dist/locale.mjs CHANGED
@@ -152,7 +152,9 @@ var enGB = {
152
152
  "app.minimise": "Minimise",
153
153
  "app.maximise": "Maximise",
154
154
  "app.restart": "Restart",
155
- app: "App"
155
+ app: "App",
156
+ settings: "Settings",
157
+ preferences: "Preferences"
156
158
  };
157
159
  var en_GB_default = enGB;
158
160
 
@@ -310,7 +312,9 @@ var frFR = {
310
312
  "app.minimise": "Minimiser",
311
313
  "app.maximise": "Maximiser",
312
314
  "app.restart": "Red\xE9marrer",
313
- app: "App"
315
+ app: "App",
316
+ settings: "Param\xE8tres",
317
+ preferences: "Pr\xE9f\xE9rences"
314
318
  };
315
319
  var fr_FR_default = frFR;
316
320
  export {
package/dist/plugin.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { CSSProperties } from 'react';
2
2
  import { IconName } from 'lucide-react/dynamic';
3
3
  import { F as FolderContent, b as FolderStat, a as FileStat } from './FolderStat-Bhmwwc0t.mjs';
4
- import { F as FileContent } from './FileContent-BWulmcoi.mjs';
4
+ import { F as FileContent } from './FileContent-CXlulSZq.mjs';
5
5
  import { R as Result } from './Result-BLbZLEgX.mjs';
6
6
  import { P as Project } from './Project-9NfYlQ36.mjs';
7
7
  import './PROJECT_CATEGORY-BivLHtB6.mjs';
@@ -46,7 +46,7 @@ interface InputInstruction extends BaseInstruction<"input"> {
46
46
  value: string;
47
47
  change?: string;
48
48
  label?: string;
49
- type: HTMLInputElement["type"];
49
+ type?: HTMLInputElement["type"];
50
50
  disabled?: boolean;
51
51
  }
52
52
 
@@ -233,7 +233,7 @@ declare abstract class Plugin<T extends Record<string, unknown>> {
233
233
  * return null
234
234
  * }
235
235
  */
236
- abstract renderSidebar(): ElementInstruction | null;
236
+ renderSidebar?(): ElementInstruction | null;
237
237
  private onSidebarLoad;
238
238
  /**
239
239
  * This will be like a dialog that will cover the main view.
@@ -266,6 +266,7 @@ declare abstract class Plugin<T extends Record<string, unknown>> {
266
266
  protected on(event: "file-created", callback: (filePath: string) => void): void;
267
267
  protected on(event: "file-changed", callback: (filePath: string) => void): void;
268
268
  protected on(event: "file-deleted", callback: (filePath: string) => void): void;
269
+ protected on(event: "ping", callback: (arg: unknown) => void): void;
269
270
  protected setState(param: SetState<T>): void;
270
271
  protected getState(): T;
271
272
  selectFile(filePath: string): void;
package/dist/plugin.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { CSSProperties } from 'react';
2
2
  import { IconName } from 'lucide-react/dynamic';
3
3
  import { F as FolderContent, b as FolderStat, a as FileStat } from './FolderStat-Bhmwwc0t.js';
4
- import { F as FileContent } from './FileContent-BWulmcoi.js';
4
+ import { F as FileContent } from './FileContent-CXlulSZq.js';
5
5
  import { R as Result } from './Result-BLbZLEgX.js';
6
6
  import { P as Project } from './Project-DOzeI4xi.js';
7
7
  import './PROJECT_CATEGORY-BivLHtB6.js';
@@ -46,7 +46,7 @@ interface InputInstruction extends BaseInstruction<"input"> {
46
46
  value: string;
47
47
  change?: string;
48
48
  label?: string;
49
- type: HTMLInputElement["type"];
49
+ type?: HTMLInputElement["type"];
50
50
  disabled?: boolean;
51
51
  }
52
52
 
@@ -233,7 +233,7 @@ declare abstract class Plugin<T extends Record<string, unknown>> {
233
233
  * return null
234
234
  * }
235
235
  */
236
- abstract renderSidebar(): ElementInstruction | null;
236
+ renderSidebar?(): ElementInstruction | null;
237
237
  private onSidebarLoad;
238
238
  /**
239
239
  * This will be like a dialog that will cover the main view.
@@ -266,6 +266,7 @@ declare abstract class Plugin<T extends Record<string, unknown>> {
266
266
  protected on(event: "file-created", callback: (filePath: string) => void): void;
267
267
  protected on(event: "file-changed", callback: (filePath: string) => void): void;
268
268
  protected on(event: "file-deleted", callback: (filePath: string) => void): void;
269
+ protected on(event: "ping", callback: (arg: unknown) => void): void;
269
270
  protected setState(param: SetState<T>): void;
270
271
  protected getState(): T;
271
272
  selectFile(filePath: string): void;
package/dist/plugin.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/lib/plugin/getPluginChannel.ts
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/lib/plugin/getPluginChannel.ts
2
2
  var getPluginChannel = (event, pluginId) => {
3
3
  return `plugin:${pluginId}:${event}`;
4
4
  };
@@ -54,7 +54,7 @@ var Plugin = class {
54
54
  this.index = -1;
55
55
  this.eventIds.forEach((event) => this.off(event));
56
56
  this.eventIds = [];
57
- const sidebar = this.renderSidebar();
57
+ const sidebar = _optionalChain([this, 'access', _ => _.renderSidebar, 'optionalCall', _2 => _2()]) || null;
58
58
  if (sidebar) this.render("sidebar", sidebar);
59
59
  });
60
60
  this.onSidebarLoad();
@@ -90,7 +90,7 @@ var Plugin = class {
90
90
  onSidebarLoad() {
91
91
  this.index = -1;
92
92
  this.registerHandler("sidebar-load", () => {
93
- return this.renderSidebar();
93
+ return _optionalChain([this, 'access', _3 => _3.renderSidebar, 'optionalCall', _4 => _4()]) || null;
94
94
  });
95
95
  }
96
96
  // -----------------------------
package/dist/plugin.mjs CHANGED
@@ -54,7 +54,7 @@ var Plugin = class {
54
54
  this.index = -1;
55
55
  this.eventIds.forEach((event) => this.off(event));
56
56
  this.eventIds = [];
57
- const sidebar = this.renderSidebar();
57
+ const sidebar = this.renderSidebar?.() || null;
58
58
  if (sidebar) this.render("sidebar", sidebar);
59
59
  });
60
60
  this.onSidebarLoad();
@@ -90,7 +90,7 @@ var Plugin = class {
90
90
  onSidebarLoad() {
91
91
  this.index = -1;
92
92
  this.registerHandler("sidebar-load", () => {
93
- return this.renderSidebar();
93
+ return this.renderSidebar?.() || null;
94
94
  });
95
95
  }
96
96
  // -----------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bb-relay",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
4
4
  "description": "For managing bb-editor extension",
5
5
  "license": "ISC",
6
6
  "author": "Ade Adeola",
package/src/api.ts CHANGED
@@ -1,5 +1,15 @@
1
1
  import RelayEvent from "./types/api/RelayEvent";
2
2
  import EventParam from "./types/api/EventParam";
3
3
  import EventReturn from "./types/api/EventReturn";
4
+ import RequestParam from "./types/api/RequestParam";
5
+ import RequestReturn from "./types/api/RequestReturn";
6
+ import { RelayRequest } from "./relay/registerRequest";
4
7
 
5
- export type { RelayEvent, EventReturn, EventParam };
8
+ export type {
9
+ RelayEvent,
10
+ EventReturn,
11
+ EventParam,
12
+ RequestParam,
13
+ RequestReturn,
14
+ RelayRequest,
15
+ };
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- import Relay from "./relay";
2
1
  import injectStyles from "./utils/inject-styles";
3
2
  import validateManifest from "./lib/validate-manifest";
4
3
  import { Manifest } from "./types/editor/Manifest";
@@ -7,12 +6,13 @@ import Result from "./types/editor/Result";
7
6
  import extractStyles from "./utils/extract-styles";
8
7
  import validateUpload from "./lib/validate-upload";
9
8
  import { postEventResponse } from "./relay/postEventResponse";
9
+ import subscribe from "./relay/subscribe";
10
+ import { postRequestResponse } from "./relay/postRequestResponse";
11
+ import request from "./relay/request";
10
12
 
11
- export default Relay;
12
-
13
- export { injectStyles, extractStyles };
13
+ export { injectStyles, extractStyles, subscribe, request };
14
14
  export { validateManifest, validateUpload };
15
- export { postEventResponse };
15
+ export { postEventResponse, postRequestResponse };
16
16
 
17
17
  export type { Result, FileNode, Zip };
18
18
 
@@ -5,6 +5,6 @@ export interface InputInstruction extends BaseInstruction<"input"> {
5
5
  value: string;
6
6
  change?: string;
7
7
  label?: string;
8
- type: HTMLInputElement["type"];
8
+ type?: HTMLInputElement["type"];
9
9
  disabled?: boolean;
10
10
  }
@@ -54,7 +54,8 @@ type EventSubs =
54
54
  | "file-selected"
55
55
  | "file-created"
56
56
  | "file-changed"
57
- | "file-deleted";
57
+ | "file-deleted"
58
+ | "ping";
58
59
 
59
60
  export type SetState<T extends Record<string, unknown>> =
60
61
  | Partial<T>
@@ -122,7 +123,7 @@ export abstract class Plugin<T extends Record<string, unknown>> {
122
123
  this.index = -1;
123
124
  this.eventIds.forEach((event) => this.off(event));
124
125
  this.eventIds = [];
125
- const sidebar = this.renderSidebar();
126
+ const sidebar = this.renderSidebar?.() || null;
126
127
  if (sidebar) this.render("sidebar", sidebar);
127
128
  });
128
129
 
@@ -212,12 +213,12 @@ export abstract class Plugin<T extends Record<string, unknown>> {
212
213
  * return null
213
214
  * }
214
215
  */
215
- abstract renderSidebar(): ElementInstruction | null;
216
+ renderSidebar?(): ElementInstruction | null;
216
217
 
217
218
  private onSidebarLoad(): void {
218
219
  this.index = -1;
219
220
  this.registerHandler("sidebar-load", () => {
220
- return this.renderSidebar();
221
+ return this.renderSidebar?.() || null;
221
222
  });
222
223
  }
223
224
  // -----------------------------
@@ -332,9 +333,12 @@ export abstract class Plugin<T extends Record<string, unknown>> {
332
333
  callback: (filePath: string) => void,
333
334
  ): void;
334
335
 
336
+ protected on(event: "ping", callback: (arg: unknown) => void): void;
337
+
335
338
  protected on(event: EventSubs, callback: (arg: any) => void): void {
336
339
  this.registerSubscription(event, callback);
337
340
  }
341
+
338
342
  // -----------------------------
339
343
  // Status Bar
340
344
  // -----------------------------
@@ -25,8 +25,6 @@ const validateManifest = (manifestContent: string) => {
25
25
  errors.push("Manifest permissions is missing");
26
26
  } else if (!Array.isArray(content.permissions)) {
27
27
  errors.push("Manifest permissions is not an array");
28
- } else if (content.permissions.length === 0) {
29
- errors.push("Manifest permissions is empty");
30
28
  }
31
29
 
32
30
  if (content.main) {
@@ -66,9 +64,7 @@ const validateManifest = (manifestContent: string) => {
66
64
  }
67
65
 
68
66
  if (content.theme) {
69
- if (!content.theme.name) errors.push("No name for theme");
70
- if (!content.theme.path) errors.push("No css file path provided");
71
- else fileChecks.push(content.theme.path);
67
+ fileChecks.push(content.theme);
72
68
  }
73
69
  return {
74
70
  errors,
@@ -1,166 +1,168 @@
1
- export const enGB = {
2
- "language.british_english": "British English",
3
- "language.french": "French (France)",
4
- "file.new": "New File",
5
- "file.new.placeholder": "Press enter to add file",
6
- "file.open": "Open File",
7
- "file.duplicate": "Duplicate File",
8
- "file.delete": "Delete File",
9
- "file.rename": "Rename File",
10
- "file.close": "Close File",
11
- "file.cut": "Cut File",
12
- "file.copy": "Copy File",
13
- "file.export_html": "Export as HTML",
14
- "file.export_pdf": "Export as PDF",
15
- "file.print": "Print File",
16
- "file.location.open": "Open File Location",
17
- file: "File",
18
- edit: "Edit",
19
- view: "View",
20
- help: "Help",
21
- welcome: "Welcome to BB Desktop!",
22
- "welcome.message":
23
- "Get started by creating a new file or opening an existing one.",
24
- "version.current": "Current Version",
25
- "version.latest": "Latest Version",
26
- "version.out_of_date": "An update is available!",
27
- "version.up_to_date": "You are using the latest version.",
28
- "update.check": "Check for Updates",
29
- "update.download": "Download Update",
30
- "update.release_notes": "Release Notes",
31
- install_and_restart: "Install and Restart",
32
- "install.version": "Install a specific version",
33
- later: "Later",
34
- close: "Close",
35
- about: "About",
36
- change_log: "Change Log",
37
- documentation: "Documentation",
38
- "report.issue": "Report Issue",
39
- "folder.new": "New Folder",
40
- "folder.new.placeholder": "Press enter to add folder",
41
- "folder.open": "Open folder",
42
- "folder.open.message": "You can open a folder",
43
- "folder.open.description":
44
- "Opening a folder allows you to create a project, and save all files in that folder",
45
- "project.download": "Download Project",
46
- "project.download.title": "You can download a project",
47
- "project.download.description":
48
- " You browse the projects that you backed up in the clouds and download them to your computer",
49
- "project.select": "Select project",
50
- "project.select.title": "You can select a previous project",
51
- "project.select.description":
52
- "Go into your file system to select a previously saved project",
53
- "project.new": "New Project",
54
- tags: "Tags",
55
- "tag.input.placeholder": "Press enter to add tag",
56
- category: "Category",
57
- "category.select": "Select category",
58
- "project.title": "Project Title",
59
- "project.title.placeholder": "The tales of two cities",
60
- "project.description": "What is your story about",
61
- "project.description.placeholder": "This is a story about...",
62
- email: "Email",
63
- "email.placeholder": "example@email.com",
64
- password: "Password",
65
- "password.placeholder": "********",
66
- username: "username",
67
- "username.placeholder": "@bb-author",
68
- "workspace.select": "Select workspace",
69
- "workspace.select.description":
70
- "Select a folder where all your projects will be saved",
71
- "file.explorer": "File explorer",
72
- "no_workspace.message":
73
- "Select a workspace to start working on your next project",
74
- "folder.select.placeholder": "./path/to/project",
75
- "folder.select": "Select folder",
76
- "folder.rename": "Rename Folder",
77
- "folder.duplicate": "Duplicate Folder",
78
- "folder.paste": "Paste into Folder",
79
- "folder.cut": "Cut Folder",
80
- "folder.copy": "Copy Folder",
81
- "folder.delete": "Delete Folder",
82
- folder: "Folder",
83
- "folder.location.open": "Open Folder Location",
84
- "checkpoint.list.header": "Checkpoints",
85
- "checkpoint.placeholder": "Checkpoint message...",
86
- "checkpoint.button": "Save checkpoint",
87
- "git.stage.all": "Add all to stage",
88
- "git.discard.all": "Discard all changes",
89
- "git.stage": "Add to stage",
90
- "git.discard": "Discard changes",
91
- "git.discard.message": "Are you sure you want to discard all changes?",
92
- "git.unstage.all": "Remove all from stage",
93
- "git.unstage": "Remove from stage",
94
- changes: "Changes",
95
- history: "History",
96
- home: "Home",
97
- cancel: "Cancel",
98
- confirm: "Confirm",
99
- "plugin.install": "Install plugin",
100
- "project.create": "Create project",
101
- "checkpoint.save": "Save checkpoint",
102
- "file.delete.warning":
103
- "Are you sure you want to delete this file? This action cannot be undone.",
104
- "folder.delete.warning":
105
- "Are you sure you want to delete this folder? This action cannot be undone.",
106
- delete: "Delete",
107
- "placeholder.text": "This is a placeholder text",
108
- "placeholder.click": "Click me",
109
- "placeholder.label": "Label",
110
- find: "Find",
111
- replace: "Replace",
112
- "replace.all": "Replace all",
113
- previous: "Previous",
114
- next: "Next",
115
- "search.use.regex": "Use regex",
116
- "search.case.sensitive": "Case sensitive",
117
- "plugins.search": "Search Plugins in Marketplace",
118
- install: "Install",
119
- uninstall: "Uninstall",
120
- repository: "Repository",
121
- login: "Login",
122
- logout: "Logout",
123
- "projects.search": "Search projects",
124
- download: "Download",
125
- "project.delete.warning":
126
- "Are you sure you want to delete this project? This cannot be undone",
127
- "project.message.upload": "Upload project to the cloud",
128
- "project.message.synced": "Project is up to date",
129
- "project.message.update": "There are unsaved changes",
130
- "project.message.download": "You are behind remote copy",
131
- loading: "Loading...",
132
- enable: "Enable",
133
- disable: "Disable",
134
- plugin: "Plugin",
135
- plugins: "Plugins",
136
- "updates.check": "Check for updates",
137
- "updates.download": "Download updates",
138
- "plugins.enable.all": "Enable all plugins",
139
- "plugins.disable.all": "Disable all plugins",
140
- "plugins.install.local": "Install local plugins",
141
- "check.all": "Check all",
142
- "uncheck.all": "Uncheck all",
143
- "checkpoint.latest": "Go back to latest",
144
- errors: "Errors",
145
- "path.copy": "Copy Path",
146
- general: "General",
147
- appearance: "Appearance",
148
- registry: "Registry",
149
- shortcuts: "Shortcuts",
150
- account: "Account",
151
- "sidebar.toggle": "Toggle Sidebar",
152
- "project.open": "Open Project",
153
- quit: "Quit",
154
- duplicate: "Duplicate",
155
- copy: "Copy",
156
- cut: "Cut",
157
- paste: "Paste",
158
- "en-GB": "English (UK)",
159
- "fr-FR": "French (France)",
160
- "app.minimise": "Minimise",
161
- "app.maximise": "Maximise",
162
- "app.restart": "Restart",
163
- app: "App",
164
- };
165
-
166
- export default enGB;
1
+ export const enGB = {
2
+ "language.british_english": "British English",
3
+ "language.french": "French (France)",
4
+ "file.new": "New File",
5
+ "file.new.placeholder": "Press enter to add file",
6
+ "file.open": "Open File",
7
+ "file.duplicate": "Duplicate File",
8
+ "file.delete": "Delete File",
9
+ "file.rename": "Rename File",
10
+ "file.close": "Close File",
11
+ "file.cut": "Cut File",
12
+ "file.copy": "Copy File",
13
+ "file.export_html": "Export as HTML",
14
+ "file.export_pdf": "Export as PDF",
15
+ "file.print": "Print File",
16
+ "file.location.open": "Open File Location",
17
+ file: "File",
18
+ edit: "Edit",
19
+ view: "View",
20
+ help: "Help",
21
+ welcome: "Welcome to BB Desktop!",
22
+ "welcome.message":
23
+ "Get started by creating a new file or opening an existing one.",
24
+ "version.current": "Current Version",
25
+ "version.latest": "Latest Version",
26
+ "version.out_of_date": "An update is available!",
27
+ "version.up_to_date": "You are using the latest version.",
28
+ "update.check": "Check for Updates",
29
+ "update.download": "Download Update",
30
+ "update.release_notes": "Release Notes",
31
+ install_and_restart: "Install and Restart",
32
+ "install.version": "Install a specific version",
33
+ later: "Later",
34
+ close: "Close",
35
+ about: "About",
36
+ change_log: "Change Log",
37
+ documentation: "Documentation",
38
+ "report.issue": "Report Issue",
39
+ "folder.new": "New Folder",
40
+ "folder.new.placeholder": "Press enter to add folder",
41
+ "folder.open": "Open folder",
42
+ "folder.open.message": "You can open a folder",
43
+ "folder.open.description":
44
+ "Opening a folder allows you to create a project, and save all files in that folder",
45
+ "project.download": "Download Project",
46
+ "project.download.title": "You can download a project",
47
+ "project.download.description":
48
+ " You browse the projects that you backed up in the clouds and download them to your computer",
49
+ "project.select": "Select project",
50
+ "project.select.title": "You can select a previous project",
51
+ "project.select.description":
52
+ "Go into your file system to select a previously saved project",
53
+ "project.new": "New Project",
54
+ tags: "Tags",
55
+ "tag.input.placeholder": "Press enter to add tag",
56
+ category: "Category",
57
+ "category.select": "Select category",
58
+ "project.title": "Project Title",
59
+ "project.title.placeholder": "The tales of two cities",
60
+ "project.description": "What is your story about",
61
+ "project.description.placeholder": "This is a story about...",
62
+ email: "Email",
63
+ "email.placeholder": "example@email.com",
64
+ password: "Password",
65
+ "password.placeholder": "********",
66
+ username: "username",
67
+ "username.placeholder": "@bb-author",
68
+ "workspace.select": "Select workspace",
69
+ "workspace.select.description":
70
+ "Select a folder where all your projects will be saved",
71
+ "file.explorer": "File explorer",
72
+ "no_workspace.message":
73
+ "Select a workspace to start working on your next project",
74
+ "folder.select.placeholder": "./path/to/project",
75
+ "folder.select": "Select folder",
76
+ "folder.rename": "Rename Folder",
77
+ "folder.duplicate": "Duplicate Folder",
78
+ "folder.paste": "Paste into Folder",
79
+ "folder.cut": "Cut Folder",
80
+ "folder.copy": "Copy Folder",
81
+ "folder.delete": "Delete Folder",
82
+ folder: "Folder",
83
+ "folder.location.open": "Open Folder Location",
84
+ "checkpoint.list.header": "Checkpoints",
85
+ "checkpoint.placeholder": "Checkpoint message...",
86
+ "checkpoint.button": "Save checkpoint",
87
+ "git.stage.all": "Add all to stage",
88
+ "git.discard.all": "Discard all changes",
89
+ "git.stage": "Add to stage",
90
+ "git.discard": "Discard changes",
91
+ "git.discard.message": "Are you sure you want to discard all changes?",
92
+ "git.unstage.all": "Remove all from stage",
93
+ "git.unstage": "Remove from stage",
94
+ changes: "Changes",
95
+ history: "History",
96
+ home: "Home",
97
+ cancel: "Cancel",
98
+ confirm: "Confirm",
99
+ "plugin.install": "Install plugin",
100
+ "project.create": "Create project",
101
+ "checkpoint.save": "Save checkpoint",
102
+ "file.delete.warning":
103
+ "Are you sure you want to delete this file? This action cannot be undone.",
104
+ "folder.delete.warning":
105
+ "Are you sure you want to delete this folder? This action cannot be undone.",
106
+ delete: "Delete",
107
+ "placeholder.text": "This is a placeholder text",
108
+ "placeholder.click": "Click me",
109
+ "placeholder.label": "Label",
110
+ find: "Find",
111
+ replace: "Replace",
112
+ "replace.all": "Replace all",
113
+ previous: "Previous",
114
+ next: "Next",
115
+ "search.use.regex": "Use regex",
116
+ "search.case.sensitive": "Case sensitive",
117
+ "plugins.search": "Search Plugins in Marketplace",
118
+ install: "Install",
119
+ uninstall: "Uninstall",
120
+ repository: "Repository",
121
+ login: "Login",
122
+ logout: "Logout",
123
+ "projects.search": "Search projects",
124
+ download: "Download",
125
+ "project.delete.warning":
126
+ "Are you sure you want to delete this project? This cannot be undone",
127
+ "project.message.upload": "Upload project to the cloud",
128
+ "project.message.synced": "Project is up to date",
129
+ "project.message.update": "There are unsaved changes",
130
+ "project.message.download": "You are behind remote copy",
131
+ loading: "Loading...",
132
+ enable: "Enable",
133
+ disable: "Disable",
134
+ plugin: "Plugin",
135
+ plugins: "Plugins",
136
+ "updates.check": "Check for updates",
137
+ "updates.download": "Download updates",
138
+ "plugins.enable.all": "Enable all plugins",
139
+ "plugins.disable.all": "Disable all plugins",
140
+ "plugins.install.local": "Install local plugins",
141
+ "check.all": "Check all",
142
+ "uncheck.all": "Uncheck all",
143
+ "checkpoint.latest": "Go back to latest",
144
+ errors: "Errors",
145
+ "path.copy": "Copy Path",
146
+ general: "General",
147
+ appearance: "Appearance",
148
+ registry: "Registry",
149
+ shortcuts: "Shortcuts",
150
+ account: "Account",
151
+ "sidebar.toggle": "Toggle Sidebar",
152
+ "project.open": "Open Project",
153
+ quit: "Quit",
154
+ duplicate: "Duplicate",
155
+ copy: "Copy",
156
+ cut: "Cut",
157
+ paste: "Paste",
158
+ "en-GB": "English (UK)",
159
+ "fr-FR": "French (France)",
160
+ "app.minimise": "Minimise",
161
+ "app.maximise": "Maximise",
162
+ "app.restart": "Restart",
163
+ app: "App",
164
+ settings: "Settings",
165
+ preferences: "Preferences",
166
+ };
167
+
168
+ export default enGB;