hyperbook 0.90.0 → 0.91.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/dist/index.js CHANGED
@@ -174918,14 +174918,26 @@ var en_default = {
174918
174918
  "audio-play": "Play/Pause",
174919
174919
  "archive-offline": "Offline",
174920
174920
  "download-offline": "Offline",
174921
+ "ide-fullscreen-enter": "Fullscreen",
174922
+ "ide-fullscreen-exit": "Exit Fullscreen",
174921
174923
  "pyide-run": "Run",
174924
+ "pyide-running": "Running ...",
174922
174925
  "pyide-running-click-to-stop": "Running (Click to stop) ...",
174923
174926
  "pyide-running-refresh-to-stop": "Running (Refresh to stop) ...",
174924
174927
  "pyide-test": "Test",
174928
+ "pyide-testing": "Test running ...",
174925
174929
  "pyide-test-running-click-to-stop": "Test running (Click to stop) ...",
174926
174930
  "pyide-test-running-refresh-to-stop": "Test running (Refresh to stop) ...",
174931
+ "pyide-stop": "Stop",
174932
+ "pyide-stop-refresh": "Stop (refresh)",
174933
+ "pyide-locked-other-instance-running": "Another PyIDE instance is running",
174934
+ "pyide-stopping": "Stopping ...",
174935
+ "pyide-stop-reloading": "Stopping requires a refresh on this page. Reloading now...",
174936
+ "pyide-stop-refresh-required": "Stop requested. If execution does not stop, refresh the page or enable COOP/COEP headers.",
174927
174937
  "pyide-output": "Output",
174938
+ "pyide-canvas": "Canvas",
174928
174939
  "pyide-input": "Input",
174940
+ "pyide-input-prompt": "Input required:",
174929
174941
  "pyide-reset": "Reset",
174930
174942
  "pyide-copy": "Copy",
174931
174943
  "pyide-download": "Download",
@@ -175027,14 +175039,26 @@ var de_default = {
175027
175039
  "audio-play": "Abspielen/Pause",
175028
175040
  "archive-offline": "Offline",
175029
175041
  "download-offline": "Offline",
175042
+ "ide-fullscreen-enter": "Vollbild",
175043
+ "ide-fullscreen-exit": "Vollbild beenden",
175030
175044
  "pyide-run": "Ausf\xFChren",
175045
+ "pyide-running": "Wird ausgef\xFChrt ...",
175031
175046
  "pyide-running-click-to-stop": "Wird ausgef\xFChrt (Klicken zum Stoppen) ...",
175032
175047
  "pyide-running-refresh-to-stop": "Wird ausgef\xFChrt (Aktualisieren zum Stoppen) ...",
175033
175048
  "pyide-test": "Testen",
175049
+ "pyide-testing": "Test l\xE4uft ...",
175034
175050
  "pyide-test-running-click-to-stop": "Test l\xE4uft (Klicken zum Stoppen) ...",
175035
175051
  "pyide-test-running-refresh-to-stop": "Test l\xE4uft (Aktualisieren zum Stoppen) ...",
175052
+ "pyide-stop": "Stoppen",
175053
+ "pyide-stop-refresh": "Stoppen (Neuladen)",
175054
+ "pyide-locked-other-instance-running": "Eine andere PyIDE-Instanz l\xE4uft",
175055
+ "pyide-stopping": "Wird gestoppt ...",
175056
+ "pyide-stop-reloading": "Zum Stoppen ist auf dieser Seite ein Neuladen n\xF6tig. Seite wird neu geladen...",
175057
+ "pyide-stop-refresh-required": "Stopp angefordert. Wenn die Ausf\xFChrung nicht stoppt, Seite neu laden oder COOP/COEP-Header aktivieren.",
175036
175058
  "pyide-output": "Ausgabe",
175059
+ "pyide-canvas": "Canvas",
175037
175060
  "pyide-input": "Eingabe",
175061
+ "pyide-input-prompt": "Eingabe erforderlich:",
175038
175062
  "pyide-reset": "Zur\xFCcksetzen",
175039
175063
  "pyide-copy": "Kopieren",
175040
175064
  "pyide-download": "Herunterladen",
@@ -177546,7 +177570,7 @@ var remarkDirectiveSqlIde_default = (ctx) => () => {
177546
177570
  let {
177547
177571
  id = hash(node3),
177548
177572
  db,
177549
- height = ctx.config.elements?.sqlide?.height || "600px"
177573
+ height = ctx.config.elements?.sqlide?.height || "calc(100dvh - 80px)"
177550
177574
  } = attributes4;
177551
177575
  if (!db) {
177552
177576
  db = ctx.config.elements?.sqlide?.db ? ctx.makeUrl(ctx.config.elements?.sqlide?.db, "public") : ctx.makeUrl(
@@ -177598,7 +177622,8 @@ var remarkDirectiveSqlIde_default = (ctx) => () => {
177598
177622
  }));
177599
177623
  data.hName = "div";
177600
177624
  data.hProperties = {
177601
- class: "directive-sqlide"
177625
+ class: "directive-sqlide",
177626
+ style: `--sqlide-height: ${height}`
177602
177627
  };
177603
177628
  data.hChildren = [
177604
177629
  {
@@ -177606,7 +177631,7 @@ var remarkDirectiveSqlIde_default = (ctx) => () => {
177606
177631
  tagName: "div",
177607
177632
  properties: {
177608
177633
  class: "sql-online",
177609
- style: `height: ${height}; padding: 0; margin: 0;`,
177634
+ style: `padding: 0; margin: 0;`,
177610
177635
  "data-sql-online": `{'id': '${id}', "databaseURL": "${db}"}`
177611
177636
  },
177612
177637
  children: [...codes]
@@ -185898,7 +185923,7 @@ var remarkDirectiveOnlineIde_default = (ctx) => () => {
185898
185923
  const data = node3.data || (node3.data = {});
185899
185924
  const attributes4 = node3.attributes || {};
185900
185925
  const {
185901
- height = ctx.config.elements?.onlineide?.height || "600px",
185926
+ height = ctx.config.elements?.onlineide?.height || "calc(100dvh - 80px)",
185902
185927
  fileList = true,
185903
185928
  console: con = true,
185904
185929
  pCode = false,
@@ -185942,7 +185967,8 @@ var remarkDirectiveOnlineIde_default = (ctx) => () => {
185942
185967
  }));
185943
185968
  data.hName = "div";
185944
185969
  data.hProperties = {
185945
- class: "directive-onlineide"
185970
+ class: "directive-onlineide",
185971
+ style: `--onlineide-height: ${height}`
185946
185972
  };
185947
185973
  data.hChildren = [
185948
185974
  {
@@ -185950,7 +185976,7 @@ var remarkDirectiveOnlineIde_default = (ctx) => () => {
185950
185976
  tagName: "div",
185951
185977
  properties: {
185952
185978
  class: "java-online",
185953
- style: `height: ${height}; padding: 0; margin: 0;`,
185979
+ style: `padding: 0; margin: 0;`,
185954
185980
  "data-java-online": `{'id': '${id}', 'speed': ${speed}, 'withBottomPanel': ${bottomPanel},'withPCode': ${pCode},'withConsole': ${con},'withFileList': ${fileList},'withErrorList': ${errorList}, 'libraries': [${libraries?.split(",").map((lib) => `'${lib.trim()}'`)}]}`
185955
185981
  },
185956
185982
  children: [...codes]
@@ -195178,10 +195204,11 @@ ${(code4.scripts ? [cdnLibraryUrl, ...code4.scripts] : []).map((src) => `<script
195178
195204
  if (node3.type === "element" && node3.tagName === "p5") {
195179
195205
  const {
195180
195206
  src = "",
195181
- height = 100,
195207
+ height,
195182
195208
  editor = false,
195183
195209
  id = hash(node3)
195184
195210
  } = node3.properties || {};
195211
+ const resolvedHeight = height !== void 0 ? typeof height === "number" ? `${height}px` : `${height}` : "calc(100dvh - 80px)";
195185
195212
  let bEditor = editor === "true";
195186
195213
  expectContainerDirective(node3, file, name);
195187
195214
  registerDirective(file, name, ["client.js"], ["style.css"]);
@@ -195208,9 +195235,10 @@ ${(code4.scripts ? [cdnLibraryUrl, ...code4.scripts] : []).map((src) => `<script
195208
195235
  const srcdoc = template.replace("###SLOT###", wrapSketch(srcFile)).replace(/\u00A0/g, " ");
195209
195236
  node3.tagName = "div";
195210
195237
  node3.properties = {
195211
- class: ["directive-p5", bEditor ? "" : "standalone"].join(" "),
195238
+ class: ["directive-p5", bEditor ? "" : "standalone"].join(" ").trim(),
195212
195239
  "data-template": template.replace(/\u00A0/g, " "),
195213
- "data-id": id
195240
+ "data-id": id,
195241
+ ...bEditor && height !== void 0 ? { style: `--p5-height: ${resolvedHeight}` } : {}
195214
195242
  };
195215
195243
  node3.children = [
195216
195244
  {
@@ -195218,7 +195246,7 @@ ${(code4.scripts ? [cdnLibraryUrl, ...code4.scripts] : []).map((src) => `<script
195218
195246
  tagName: "div",
195219
195247
  properties: {
195220
195248
  class: "container",
195221
- style: `height: ${height}px;`
195249
+ ...!bEditor ? { style: `height: ${resolvedHeight};` } : {}
195222
195250
  },
195223
195251
  children: [
195224
195252
  {
@@ -195236,6 +195264,16 @@ ${(code4.scripts ? [cdnLibraryUrl, ...code4.scripts] : []).map((src) => `<script
195236
195264
  ]
195237
195265
  },
195238
195266
  ...bEditor ? [
195267
+ {
195268
+ type: "element",
195269
+ tagName: "div",
195270
+ properties: {
195271
+ class: "splitter",
195272
+ role: "separator",
195273
+ "aria-label": "Resize panels"
195274
+ },
195275
+ children: []
195276
+ },
195239
195277
  {
195240
195278
  type: "element",
195241
195279
  tagName: "div",
@@ -195324,6 +195362,21 @@ ${(code4.scripts ? [cdnLibraryUrl, ...code4.scripts] : []).map((src) => `<script
195324
195362
  value: i18n.get("p5-download")
195325
195363
  }
195326
195364
  ]
195365
+ },
195366
+ {
195367
+ type: "element",
195368
+ tagName: "button",
195369
+ properties: {
195370
+ class: "fullscreen",
195371
+ title: i18n.get("ide-fullscreen-enter"),
195372
+ "aria-label": i18n.get("ide-fullscreen-enter")
195373
+ },
195374
+ children: [
195375
+ {
195376
+ type: "text",
195377
+ value: "\u26F6"
195378
+ }
195379
+ ]
195327
195380
  }
195328
195381
  ]
195329
195382
  }
@@ -195573,6 +195626,14 @@ var remarkDirectiveAbcMusic_default = (ctx) => () => {
195573
195626
  function htmlEntities2(str2) {
195574
195627
  return String(str2).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
195575
195628
  }
195629
+ function parsePackagesAttribute(value) {
195630
+ if (typeof value !== "string") return [];
195631
+ return Array.from(
195632
+ new Set(
195633
+ value.split(",").map((pkg) => pkg.trim()).filter((pkg) => pkg.length > 0)
195634
+ )
195635
+ );
195636
+ }
195576
195637
  var remarkDirectivePyide_default = (ctx) => () => {
195577
195638
  const name = "pyide";
195578
195639
  return (tree, file) => {
@@ -195580,7 +195641,9 @@ var remarkDirectivePyide_default = (ctx) => () => {
195580
195641
  if (isDirective(node3)) {
195581
195642
  if (node3.name !== name) return;
195582
195643
  const data = node3.data || (node3.data = {});
195583
- const { src = "", id = hash(node3) } = node3.attributes || {};
195644
+ const { src = "", id = hash(node3), packages, height } = node3.attributes || {};
195645
+ const hasCanvas = "canvas" in (node3.attributes || {});
195646
+ const packageList = parsePackagesAttribute(packages);
195584
195647
  expectContainerDirective(node3, file, name);
195585
195648
  registerDirective(file, name, ["client.js"], ["style.css"], []);
195586
195649
  requestJS(file, ["code-input", "code-input.min.js"]);
@@ -195589,7 +195652,6 @@ var remarkDirectivePyide_default = (ctx) => () => {
195589
195652
  requestJS(file, ["code-input", "indent.min.js"]);
195590
195653
  let srcFile = "";
195591
195654
  let tests = [];
195592
- let input = "";
195593
195655
  if (src) {
195594
195656
  srcFile = readFile(src, ctx) || "";
195595
195657
  } else if (node3.children?.length > 0) {
@@ -195597,11 +195659,6 @@ var remarkDirectivePyide_default = (ctx) => () => {
195597
195659
  code: c.value,
195598
195660
  name: `${i}`
195599
195661
  }));
195600
- input = toText2(
195601
- node3.children.find(
195602
- (c) => c.type === "code" && c.lang === "input"
195603
- )
195604
- );
195605
195662
  srcFile = toText2(
195606
195663
  node3.children.find(
195607
195664
  (c) => c.type === "code" && c.lang === "python" && !c.meta?.includes("test")
@@ -195612,7 +195669,10 @@ var remarkDirectivePyide_default = (ctx) => () => {
195612
195669
  data.hProperties = {
195613
195670
  class: "directive-pyide",
195614
195671
  id,
195615
- "data-tests": Buffer.from(JSON.stringify(tests)).toString("base64")
195672
+ "data-tests": Buffer.from(JSON.stringify(tests)).toString("base64"),
195673
+ ...hasCanvas ? { "data-canvas": "true" } : {},
195674
+ ...packageList.length > 0 ? { "data-packages": packageList.join(",") } : {},
195675
+ ...height ? { style: `--pyide-height: ${height}` } : {}
195616
195676
  };
195617
195677
  data.hChildren = [
195618
195678
  {
@@ -195642,21 +195702,79 @@ var remarkDirectivePyide_default = (ctx) => () => {
195642
195702
  }
195643
195703
  ]
195644
195704
  },
195645
- {
195646
- type: "element",
195647
- tagName: "button",
195648
- properties: {
195649
- class: "input-btn"
195650
- },
195651
- children: [
195652
- {
195653
- type: "text",
195654
- value: i18n.get("pyide-input")
195655
- }
195656
- ]
195657
- }
195705
+ ...hasCanvas ? [
195706
+ {
195707
+ type: "element",
195708
+ tagName: "button",
195709
+ properties: {
195710
+ class: "canvas-btn"
195711
+ },
195712
+ children: [
195713
+ {
195714
+ type: "text",
195715
+ value: i18n.get("pyide-canvas")
195716
+ }
195717
+ ]
195718
+ }
195719
+ ] : []
195658
195720
  ]
195659
195721
  },
195722
+ ...hasCanvas ? [
195723
+ {
195724
+ type: "element",
195725
+ tagName: "div",
195726
+ properties: {
195727
+ class: "canvas-header hidden"
195728
+ },
195729
+ children: [
195730
+ {
195731
+ type: "text",
195732
+ value: i18n.get("pyide-canvas")
195733
+ }
195734
+ ]
195735
+ },
195736
+ {
195737
+ type: "element",
195738
+ tagName: "div",
195739
+ properties: {
195740
+ class: "canvas-wrapper hidden"
195741
+ },
195742
+ children: [
195743
+ {
195744
+ type: "element",
195745
+ tagName: "canvas",
195746
+ properties: {
195747
+ class: "canvas",
195748
+ id: "canvas"
195749
+ },
195750
+ children: []
195751
+ }
195752
+ ]
195753
+ },
195754
+ {
195755
+ type: "element",
195756
+ tagName: "div",
195757
+ properties: {
195758
+ class: "canvas-output-splitter hidden",
195759
+ role: "separator",
195760
+ "aria-label": "Resize canvas and output"
195761
+ },
195762
+ children: []
195763
+ },
195764
+ {
195765
+ type: "element",
195766
+ tagName: "div",
195767
+ properties: {
195768
+ class: "output-header hidden"
195769
+ },
195770
+ children: [
195771
+ {
195772
+ type: "text",
195773
+ value: i18n.get("pyide-output")
195774
+ }
195775
+ ]
195776
+ }
195777
+ ] : [],
195660
195778
  {
195661
195779
  type: "element",
195662
195780
  tagName: "pre",
@@ -195664,22 +195782,19 @@ var remarkDirectivePyide_default = (ctx) => () => {
195664
195782
  class: "output"
195665
195783
  },
195666
195784
  children: []
195667
- },
195668
- {
195669
- type: "element",
195670
- tagName: "code-input",
195671
- properties: {
195672
- class: "input hidden"
195673
- },
195674
- children: [
195675
- {
195676
- type: "raw",
195677
- value: input || ""
195678
- }
195679
- ]
195680
195785
  }
195681
195786
  ]
195682
195787
  },
195788
+ {
195789
+ type: "element",
195790
+ tagName: "div",
195791
+ properties: {
195792
+ class: "splitter",
195793
+ role: "separator",
195794
+ "aria-label": "Resize panels"
195795
+ },
195796
+ children: []
195797
+ },
195683
195798
  {
195684
195799
  type: "element",
195685
195800
  tagName: "div",
@@ -195721,7 +195836,21 @@ var remarkDirectivePyide_default = (ctx) => () => {
195721
195836
  }
195722
195837
  ]
195723
195838
  }
195724
- ] : []
195839
+ ] : [],
195840
+ {
195841
+ type: "element",
195842
+ tagName: "button",
195843
+ properties: {
195844
+ class: "stop",
195845
+ disabled: true
195846
+ },
195847
+ children: [
195848
+ {
195849
+ type: "text",
195850
+ value: i18n.get("pyide-stop")
195851
+ }
195852
+ ]
195853
+ }
195725
195854
  ]
195726
195855
  },
195727
195856
  {
@@ -195784,6 +195913,21 @@ var remarkDirectivePyide_default = (ctx) => () => {
195784
195913
  value: i18n.get("pyide-download")
195785
195914
  }
195786
195915
  ]
195916
+ },
195917
+ {
195918
+ type: "element",
195919
+ tagName: "button",
195920
+ properties: {
195921
+ class: "fullscreen",
195922
+ title: i18n.get("ide-fullscreen-enter"),
195923
+ "aria-label": i18n.get("ide-fullscreen-enter")
195924
+ },
195925
+ children: [
195926
+ {
195927
+ type: "text",
195928
+ value: "\u26F6"
195929
+ }
195930
+ ]
195787
195931
  }
195788
195932
  ]
195789
195933
  }
@@ -195820,8 +195964,9 @@ html, body {
195820
195964
  return (tree, file) => {
195821
195965
  visit(tree, function(node3) {
195822
195966
  if (isDirective(node3) && node3.name === name) {
195823
- const { height = 400, id = hash(node3) } = node3.attributes || {};
195967
+ const { height, id = hash(node3) } = node3.attributes || {};
195824
195968
  const data = node3.data || (node3.data = {});
195969
+ const resolvedHeight = height !== void 0 ? typeof height === "number" ? `${height}px` : `${height}` : "calc(100dvh - 80px)";
195825
195970
  expectContainerDirective(node3, file, name);
195826
195971
  registerDirective(file, name, ["client.js"], ["style.css"], []);
195827
195972
  requestJS(file, ["code-input", "code-input.min.js"]);
@@ -195950,15 +196095,15 @@ html, body {
195950
196095
  data.hProperties = {
195951
196096
  class: "directive-webide",
195952
196097
  "data-template": template.replace(/\u00A0/g, " "),
195953
- "data-id": id
196098
+ "data-id": id,
196099
+ ...height !== void 0 ? { style: `--webide-height: ${resolvedHeight}` } : {}
195954
196100
  };
195955
196101
  data.hChildren = [
195956
196102
  {
195957
196103
  type: "element",
195958
196104
  tagName: "div",
195959
196105
  properties: {
195960
- class: "container",
195961
- style: `height: ${height}px;`
196106
+ class: "container"
195962
196107
  },
195963
196108
  children: [
195964
196109
  {
@@ -195988,6 +196133,16 @@ html, body {
195988
196133
  }
195989
196134
  ]
195990
196135
  },
196136
+ {
196137
+ type: "element",
196138
+ tagName: "div",
196139
+ properties: {
196140
+ class: "splitter",
196141
+ role: "separator",
196142
+ "aria-label": "Resize panels"
196143
+ },
196144
+ children: []
196145
+ },
195991
196146
  {
195992
196147
  type: "element",
195993
196148
  tagName: "div",
@@ -196036,6 +196191,21 @@ html, body {
196036
196191
  value: i18n.get("webide-download")
196037
196192
  }
196038
196193
  ]
196194
+ },
196195
+ {
196196
+ type: "element",
196197
+ tagName: "button",
196198
+ properties: {
196199
+ class: "fullscreen",
196200
+ title: i18n.get("ide-fullscreen-enter"),
196201
+ "aria-label": i18n.get("ide-fullscreen-enter")
196202
+ },
196203
+ children: [
196204
+ {
196205
+ type: "text",
196206
+ value: "\u26F6"
196207
+ }
196208
+ ]
196039
196209
  }
196040
196210
  ]
196041
196211
  }
@@ -200948,11 +201118,12 @@ var remarkDirectiveTypst_default = (ctx) => () => {
200948
201118
  visit(tree, function(node3) {
200949
201119
  if (isDirective(node3) && node3.name === name) {
200950
201120
  const {
200951
- height = "auto",
201121
+ height,
200952
201122
  id = hash(node3),
200953
201123
  mode = "preview"
200954
201124
  } = node3.attributes || {};
200955
201125
  const data = node3.data || (node3.data = {});
201126
+ const resolvedHeight = height !== void 0 ? `${height}` : "calc(100dvh - 80px)";
200956
201127
  expectContainerDirective(node3, file, name);
200957
201128
  registerDirective(file, name, ["client.js"], ["style.css"], []);
200958
201129
  requestJS(file, ["code-input", "code-input.min.js"]);
@@ -201088,14 +201259,15 @@ var remarkDirectiveTypst_default = (ctx) => () => {
201088
201259
  JSON.stringify(fontFiles)
201089
201260
  ).toString("base64"),
201090
201261
  "data-base-path": basePath,
201091
- "data-page-path": pagePath
201262
+ "data-page-path": pagePath,
201263
+ ...height !== void 0 && !isPreviewMode ? { style: `--typst-height: ${height}` } : {}
201092
201264
  };
201093
201265
  const previewContainer = {
201094
201266
  type: "element",
201095
201267
  tagName: "div",
201096
201268
  properties: {
201097
201269
  class: "preview-container",
201098
- style: `height: ${height};`
201270
+ ...isPreviewMode ? { style: `height: ${resolvedHeight};` } : {}
201099
201271
  },
201100
201272
  children: [
201101
201273
  {
@@ -201162,9 +201334,34 @@ var remarkDirectiveTypst_default = (ctx) => () => {
201162
201334
  }
201163
201335
  ]
201164
201336
  };
201337
+ const createFullscreenButton = () => ({
201338
+ type: "element",
201339
+ tagName: "button",
201340
+ properties: {
201341
+ class: "fullscreen",
201342
+ title: i18n.get("ide-fullscreen-enter"),
201343
+ "aria-label": i18n.get("ide-fullscreen-enter")
201344
+ },
201345
+ children: [
201346
+ {
201347
+ type: "text",
201348
+ value: "\u26F6"
201349
+ }
201350
+ ]
201351
+ });
201165
201352
  if (isEditMode) {
201166
201353
  data.hChildren = [
201167
201354
  previewContainer,
201355
+ {
201356
+ type: "element",
201357
+ tagName: "div",
201358
+ properties: {
201359
+ class: "splitter",
201360
+ role: "separator",
201361
+ "aria-label": "Resize panels"
201362
+ },
201363
+ children: []
201364
+ },
201168
201365
  {
201169
201366
  type: "element",
201170
201367
  tagName: "div",
@@ -201312,7 +201509,8 @@ var remarkDirectiveTypst_default = (ctx) => () => {
201312
201509
  ]
201313
201510
  },
201314
201511
  downloadProjectButton,
201315
- downloadButton
201512
+ downloadButton,
201513
+ createFullscreenButton()
201316
201514
  ]
201317
201515
  }
201318
201516
  ]
@@ -201731,7 +201929,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"application/1d-interleaved-parityfec
201731
201929
  /***/ ((module) => {
201732
201930
 
201733
201931
  "use strict";
201734
- module.exports = /*#__PURE__*/JSON.parse('{"name":"hyperbook","version":"0.90.0","author":"Mike Barkmin","homepage":"https://github.com/openpatch/hyperbook#readme","license":"MIT","bin":{"hyperbook":"./dist/index.js"},"files":["dist"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/openpatch/hyperbook.git","directory":"packages/hyperbook"},"bugs":{"url":"https://github.com/openpatch/hyperbook/issues"},"engines":{"node":">=18"},"scripts":{"version":"pnpm build","lint":"tsc --noEmit","dev":"ncc build ./index.ts -w -o dist/","build":"rimraf dist && ncc build ./index.ts -o ./dist/ --no-cache --no-source-map-register --external favicons --external sharp && node postbuild.mjs"},"dependencies":{"favicons":"^7.2.0"},"devDependencies":{"create-hyperbook":"workspace:*","@hyperbook/fs":"workspace:*","@hyperbook/markdown":"workspace:*","@hyperbook/types":"workspace:*","@pnpm/exportable-manifest":"1000.0.6","@types/archiver":"6.0.3","@types/async-retry":"1.4.9","@types/cross-spawn":"6.0.6","@types/lunr":"^2.3.7","@types/prompts":"2.4.9","@types/tar":"6.1.13","@types/ws":"^8.5.14","@vercel/ncc":"0.38.3","archiver":"7.0.1","async-retry":"1.3.3","chalk":"5.4.1","chokidar":"4.0.3","commander":"12.1.0","cpy":"11.1.0","cross-spawn":"7.0.6","domutils":"^3.2.2","extract-zip":"^2.0.1","got":"12.6.0","htmlparser2":"^10.0.0","lunr":"^2.3.9","lunr-languages":"^1.14.0","mime":"^4.0.6","prompts":"2.4.2","rimraf":"6.0.1","tar":"7.4.3","update-check":"1.5.4","ws":"^8.18.0"}}');
201932
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"hyperbook","version":"0.91.0","author":"Mike Barkmin","homepage":"https://github.com/openpatch/hyperbook#readme","license":"MIT","bin":{"hyperbook":"./dist/index.js"},"files":["dist"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/openpatch/hyperbook.git","directory":"packages/hyperbook"},"bugs":{"url":"https://github.com/openpatch/hyperbook/issues"},"engines":{"node":">=18"},"scripts":{"version":"pnpm build","lint":"tsc --noEmit","dev":"ncc build ./index.ts -w -o dist/","build":"rimraf dist && ncc build ./index.ts -o ./dist/ --no-cache --no-source-map-register --external favicons --external sharp && node postbuild.mjs"},"dependencies":{"favicons":"^7.2.0"},"devDependencies":{"create-hyperbook":"workspace:*","@hyperbook/fs":"workspace:*","@hyperbook/markdown":"workspace:*","@hyperbook/types":"workspace:*","@pnpm/exportable-manifest":"1000.0.6","@types/archiver":"6.0.3","@types/async-retry":"1.4.9","@types/cross-spawn":"6.0.6","@types/lunr":"^2.3.7","@types/prompts":"2.4.9","@types/tar":"6.1.13","@types/ws":"^8.5.14","@vercel/ncc":"0.38.3","archiver":"7.0.1","async-retry":"1.3.3","chalk":"5.4.1","chokidar":"4.0.3","commander":"12.1.0","cpy":"11.1.0","cross-spawn":"7.0.6","domutils":"^3.2.2","extract-zip":"^2.0.1","got":"12.6.0","htmlparser2":"^10.0.0","lunr":"^2.3.9","lunr-languages":"^1.14.0","mime":"^4.0.6","prompts":"2.4.2","rimraf":"6.0.1","tar":"7.4.3","update-check":"1.5.4","ws":"^8.18.0"}}');
201735
201933
 
201736
201934
  /***/ })
201737
201935
 
@@ -27,14 +27,26 @@
27
27
  "audio-play": "Abspielen/Pause",
28
28
  "archive-offline": "Offline",
29
29
  "download-offline": "Offline",
30
+ "ide-fullscreen-enter": "Vollbild",
31
+ "ide-fullscreen-exit": "Vollbild beenden",
30
32
  "pyide-run": "Ausführen",
33
+ "pyide-running": "Wird ausgeführt ...",
31
34
  "pyide-running-click-to-stop": "Wird ausgeführt (Klicken zum Stoppen) ...",
32
35
  "pyide-running-refresh-to-stop": "Wird ausgeführt (Aktualisieren zum Stoppen) ...",
33
36
  "pyide-test": "Testen",
37
+ "pyide-testing": "Test läuft ...",
34
38
  "pyide-test-running-click-to-stop": "Test läuft (Klicken zum Stoppen) ...",
35
39
  "pyide-test-running-refresh-to-stop": "Test läuft (Aktualisieren zum Stoppen) ...",
40
+ "pyide-stop": "Stoppen",
41
+ "pyide-stop-refresh": "Stoppen (Neuladen)",
42
+ "pyide-locked-other-instance-running": "Eine andere PyIDE-Instanz läuft",
43
+ "pyide-stopping": "Wird gestoppt ...",
44
+ "pyide-stop-reloading": "Zum Stoppen ist auf dieser Seite ein Neuladen nötig. Seite wird neu geladen...",
45
+ "pyide-stop-refresh-required": "Stopp angefordert. Wenn die Ausführung nicht stoppt, Seite neu laden oder COOP/COEP-Header aktivieren.",
36
46
  "pyide-output": "Ausgabe",
47
+ "pyide-canvas": "Canvas",
37
48
  "pyide-input": "Eingabe",
49
+ "pyide-input-prompt": "Eingabe erforderlich:",
38
50
  "pyide-reset": "Zurücksetzen",
39
51
  "pyide-copy": "Kopieren",
40
52
  "pyide-download": "Herunterladen",
@@ -27,14 +27,26 @@
27
27
  "audio-play": "Play/Pause",
28
28
  "archive-offline": "Offline",
29
29
  "download-offline": "Offline",
30
+ "ide-fullscreen-enter": "Fullscreen",
31
+ "ide-fullscreen-exit": "Exit Fullscreen",
30
32
  "pyide-run": "Run",
33
+ "pyide-running": "Running ...",
31
34
  "pyide-running-click-to-stop": "Running (Click to stop) ...",
32
35
  "pyide-running-refresh-to-stop": "Running (Refresh to stop) ...",
33
36
  "pyide-test": "Test",
37
+ "pyide-testing": "Test running ...",
34
38
  "pyide-test-running-click-to-stop": "Test running (Click to stop) ...",
35
39
  "pyide-test-running-refresh-to-stop": "Test running (Refresh to stop) ...",
40
+ "pyide-stop": "Stop",
41
+ "pyide-stop-refresh": "Stop (refresh)",
42
+ "pyide-locked-other-instance-running": "Another PyIDE instance is running",
43
+ "pyide-stopping": "Stopping ...",
44
+ "pyide-stop-reloading": "Stopping requires a refresh on this page. Reloading now...",
45
+ "pyide-stop-refresh-required": "Stop requested. If execution does not stop, refresh the page or enable COOP/COEP headers.",
36
46
  "pyide-output": "Output",
47
+ "pyide-canvas": "Canvas",
37
48
  "pyide-input": "Input",
49
+ "pyide-input-prompt": "Input required:",
38
50
  "pyide-reset": "Reset",
39
51
  "pyide-copy": "Copy",
40
52
  "pyide-download": "Download",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hyperbook",
3
- "version": "0.90.0",
3
+ "version": "0.91.0",
4
4
  "author": "Mike Barkmin",
5
5
  "homepage": "https://github.com/openpatch/hyperbook#readme",
6
6
  "license": "MIT",
@@ -56,10 +56,10 @@
56
56
  "tar": "7.4.3",
57
57
  "update-check": "1.5.4",
58
58
  "ws": "^8.18.0",
59
+ "@hyperbook/fs": "0.25.0",
59
60
  "create-hyperbook": "0.3.6",
60
- "@hyperbook/markdown": "0.61.0",
61
- "@hyperbook/types": "0.23.0",
62
- "@hyperbook/fs": "0.25.0"
61
+ "@hyperbook/markdown": "0.62.0",
62
+ "@hyperbook/types": "0.23.0"
63
63
  },
64
64
  "scripts": {
65
65
  "version": "pnpm build",