microboard-temp 0.5.11 → 0.5.13

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.
@@ -47835,19 +47835,6 @@ function throttle(func, delay) {
47835
47835
  };
47836
47836
  }
47837
47837
 
47838
- // src/Keyboard/HotkeyRegistry.ts
47839
- var editModeHotkeyRegistry = {};
47840
- var viewModeHotkeyRegistry = {};
47841
- var hotkeyNames = {};
47842
- function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47843
- if (boardMode === "edit") {
47844
- editModeHotkeyRegistry[name] = hotkeyConfig;
47845
- } else {
47846
- viewModeHotkeyRegistry[name] = hotkeyConfig;
47847
- }
47848
- hotkeyNames[name] = hotkey;
47849
- }
47850
-
47851
47838
  // src/Items/Examples/CardGame/Card/Card.ts
47852
47839
  var defaultCardData = {
47853
47840
  itemType: "Card",
@@ -47984,21 +47971,19 @@ registerItem({
47984
47971
  item: Card,
47985
47972
  defaultData: defaultCardData
47986
47973
  });
47987
- registerHotkey({
47988
- name: "flipCard",
47989
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
47990
- boardMode: "edit",
47991
- hotkeyConfig: {
47992
- allItemsType: ["Card"],
47993
- cb: (event, board) => {
47994
- const cards = board?.selection.items.list();
47995
- if (!cards) {
47996
- return;
47997
- }
47998
- cards[0].toggleIsOpen(cards);
47999
- }
47974
+ // src/Keyboard/HotkeyRegistry.ts
47975
+ var editModeHotkeyRegistry = {};
47976
+ var viewModeHotkeyRegistry = {};
47977
+ var hotkeyNames = {};
47978
+ function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47979
+ if (boardMode === "edit") {
47980
+ editModeHotkeyRegistry[name] = hotkeyConfig;
47981
+ } else {
47982
+ viewModeHotkeyRegistry[name] = hotkeyConfig;
48000
47983
  }
48001
- });
47984
+ hotkeyNames[name] = hotkey;
47985
+ }
47986
+
48002
47987
  // src/Items/Examples/CardGame/Deck/Deck.ts
48003
47988
  var defaultDeckData = {
48004
47989
  itemType: "Deck"
@@ -48184,7 +48169,7 @@ registerItem({
48184
48169
  });
48185
48170
  registerHotkey({
48186
48171
  name: "getCard-top",
48187
- hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48172
+ hotkey: { key: { button: "KeyT", shift: true }, label: { windows: "Shift+T", mac: "⇧T" } },
48188
48173
  boardMode: "edit",
48189
48174
  hotkeyConfig: {
48190
48175
  allItemsType: ["Deck"],
@@ -48252,20 +48237,85 @@ registerHotkey({
48252
48237
  }
48253
48238
  });
48254
48239
  registerHotkey({
48255
- name: "flipDeck",
48256
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
48240
+ name: "flipDeckOrCard",
48241
+ hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "Shift+F", mac: "F" } },
48257
48242
  boardMode: "edit",
48258
48243
  hotkeyConfig: {
48259
- allItemsType: ["Deck"],
48244
+ allItemsType: ["Deck", "Card"],
48260
48245
  cb: (event, board) => {
48261
- const deck = board?.selection.items.getSingle();
48262
- if (!(deck instanceof Deck)) {
48246
+ const cardsOrDecks = board?.selection.items.list();
48247
+ if (!cardsOrDecks) {
48263
48248
  return;
48264
48249
  }
48265
- deck.flipDeck();
48250
+ let cards = [];
48251
+ let decks = [];
48252
+ for (const item of cardsOrDecks) {
48253
+ if (item instanceof Card) {
48254
+ cards.push(item);
48255
+ } else if (item instanceof Deck) {
48256
+ decks.push(item);
48257
+ }
48258
+ }
48259
+ cards[0]?.toggleIsOpen(cards);
48260
+ decks.forEach((deck) => {
48261
+ deck.flipDeck();
48262
+ });
48266
48263
  }
48267
48264
  }
48268
48265
  });
48266
+ function createDeck(event, board) {
48267
+ if (!board) {
48268
+ return;
48269
+ }
48270
+ const single = board.selection.items.getSingle();
48271
+ if (single && single.itemType === "Deck") {
48272
+ return;
48273
+ }
48274
+ const cardsOrDecks = board.selection.items.list();
48275
+ const onlyCards = board.selection.items.isAllItemsType("Card");
48276
+ if (onlyCards) {
48277
+ const deck = new Deck(board, "");
48278
+ deck.transformation.apply({
48279
+ class: "Transformation",
48280
+ method: "translateTo",
48281
+ item: [deck.getId()],
48282
+ x: cardsOrDecks[cardsOrDecks.length - 1].left,
48283
+ y: cardsOrDecks[cardsOrDecks.length - 1].top
48284
+ });
48285
+ const addedDeck = board.add(deck);
48286
+ board.selection.items.removeAll();
48287
+ addedDeck.addChildItems(cardsOrDecks);
48288
+ board.selection.items.add(addedDeck);
48289
+ } else {
48290
+ let mainDeck = null;
48291
+ const cards = [];
48292
+ cardsOrDecks.forEach((item) => {
48293
+ if (item.itemType === "Card") {
48294
+ cards.push(item);
48295
+ } else if (item.itemType === "Deck") {
48296
+ if (mainDeck) {
48297
+ cards.push(...mainDeck.getDeck());
48298
+ board.remove(mainDeck);
48299
+ mainDeck = item;
48300
+ } else {
48301
+ mainDeck = item;
48302
+ }
48303
+ }
48304
+ });
48305
+ board.selection.items.removeAll();
48306
+ mainDeck.addChildItems(cards);
48307
+ board.selection.items.add(mainDeck);
48308
+ }
48309
+ }
48310
+ registerHotkey({
48311
+ name: "createDeck",
48312
+ hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48313
+ boardMode: "edit",
48314
+ hotkeyConfig: {
48315
+ allItemsType: ["Deck", "Card"],
48316
+ cb: createDeck
48317
+ }
48318
+ });
48269
48319
  // src/Items/Examples/CardGame/Dice/AddDice.ts
48270
48320
  class AddDice extends ShapeTool {
48271
48321
  constructor(board, name) {
package/dist/cjs/index.js CHANGED
@@ -47835,19 +47835,6 @@ function throttle(func, delay) {
47835
47835
  };
47836
47836
  }
47837
47837
 
47838
- // src/Keyboard/HotkeyRegistry.ts
47839
- var editModeHotkeyRegistry = {};
47840
- var viewModeHotkeyRegistry = {};
47841
- var hotkeyNames = {};
47842
- function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47843
- if (boardMode === "edit") {
47844
- editModeHotkeyRegistry[name] = hotkeyConfig;
47845
- } else {
47846
- viewModeHotkeyRegistry[name] = hotkeyConfig;
47847
- }
47848
- hotkeyNames[name] = hotkey;
47849
- }
47850
-
47851
47838
  // src/Items/Examples/CardGame/Card/Card.ts
47852
47839
  var defaultCardData = {
47853
47840
  itemType: "Card",
@@ -47984,21 +47971,19 @@ registerItem({
47984
47971
  item: Card,
47985
47972
  defaultData: defaultCardData
47986
47973
  });
47987
- registerHotkey({
47988
- name: "flipCard",
47989
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
47990
- boardMode: "edit",
47991
- hotkeyConfig: {
47992
- allItemsType: ["Card"],
47993
- cb: (event, board) => {
47994
- const cards = board?.selection.items.list();
47995
- if (!cards) {
47996
- return;
47997
- }
47998
- cards[0].toggleIsOpen(cards);
47999
- }
47974
+ // src/Keyboard/HotkeyRegistry.ts
47975
+ var editModeHotkeyRegistry = {};
47976
+ var viewModeHotkeyRegistry = {};
47977
+ var hotkeyNames = {};
47978
+ function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47979
+ if (boardMode === "edit") {
47980
+ editModeHotkeyRegistry[name] = hotkeyConfig;
47981
+ } else {
47982
+ viewModeHotkeyRegistry[name] = hotkeyConfig;
48000
47983
  }
48001
- });
47984
+ hotkeyNames[name] = hotkey;
47985
+ }
47986
+
48002
47987
  // src/Items/Examples/CardGame/Deck/Deck.ts
48003
47988
  var defaultDeckData = {
48004
47989
  itemType: "Deck"
@@ -48184,7 +48169,7 @@ registerItem({
48184
48169
  });
48185
48170
  registerHotkey({
48186
48171
  name: "getCard-top",
48187
- hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48172
+ hotkey: { key: { button: "KeyT", shift: true }, label: { windows: "Shift+T", mac: "⇧T" } },
48188
48173
  boardMode: "edit",
48189
48174
  hotkeyConfig: {
48190
48175
  allItemsType: ["Deck"],
@@ -48252,20 +48237,85 @@ registerHotkey({
48252
48237
  }
48253
48238
  });
48254
48239
  registerHotkey({
48255
- name: "flipDeck",
48256
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
48240
+ name: "flipDeckOrCard",
48241
+ hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "Shift+F", mac: "F" } },
48257
48242
  boardMode: "edit",
48258
48243
  hotkeyConfig: {
48259
- allItemsType: ["Deck"],
48244
+ allItemsType: ["Deck", "Card"],
48260
48245
  cb: (event, board) => {
48261
- const deck = board?.selection.items.getSingle();
48262
- if (!(deck instanceof Deck)) {
48246
+ const cardsOrDecks = board?.selection.items.list();
48247
+ if (!cardsOrDecks) {
48263
48248
  return;
48264
48249
  }
48265
- deck.flipDeck();
48250
+ let cards = [];
48251
+ let decks = [];
48252
+ for (const item of cardsOrDecks) {
48253
+ if (item instanceof Card) {
48254
+ cards.push(item);
48255
+ } else if (item instanceof Deck) {
48256
+ decks.push(item);
48257
+ }
48258
+ }
48259
+ cards[0]?.toggleIsOpen(cards);
48260
+ decks.forEach((deck) => {
48261
+ deck.flipDeck();
48262
+ });
48266
48263
  }
48267
48264
  }
48268
48265
  });
48266
+ function createDeck(event, board) {
48267
+ if (!board) {
48268
+ return;
48269
+ }
48270
+ const single = board.selection.items.getSingle();
48271
+ if (single && single.itemType === "Deck") {
48272
+ return;
48273
+ }
48274
+ const cardsOrDecks = board.selection.items.list();
48275
+ const onlyCards = board.selection.items.isAllItemsType("Card");
48276
+ if (onlyCards) {
48277
+ const deck = new Deck(board, "");
48278
+ deck.transformation.apply({
48279
+ class: "Transformation",
48280
+ method: "translateTo",
48281
+ item: [deck.getId()],
48282
+ x: cardsOrDecks[cardsOrDecks.length - 1].left,
48283
+ y: cardsOrDecks[cardsOrDecks.length - 1].top
48284
+ });
48285
+ const addedDeck = board.add(deck);
48286
+ board.selection.items.removeAll();
48287
+ addedDeck.addChildItems(cardsOrDecks);
48288
+ board.selection.items.add(addedDeck);
48289
+ } else {
48290
+ let mainDeck = null;
48291
+ const cards = [];
48292
+ cardsOrDecks.forEach((item) => {
48293
+ if (item.itemType === "Card") {
48294
+ cards.push(item);
48295
+ } else if (item.itemType === "Deck") {
48296
+ if (mainDeck) {
48297
+ cards.push(...mainDeck.getDeck());
48298
+ board.remove(mainDeck);
48299
+ mainDeck = item;
48300
+ } else {
48301
+ mainDeck = item;
48302
+ }
48303
+ }
48304
+ });
48305
+ board.selection.items.removeAll();
48306
+ mainDeck.addChildItems(cards);
48307
+ board.selection.items.add(mainDeck);
48308
+ }
48309
+ }
48310
+ registerHotkey({
48311
+ name: "createDeck",
48312
+ hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48313
+ boardMode: "edit",
48314
+ hotkeyConfig: {
48315
+ allItemsType: ["Deck", "Card"],
48316
+ cb: createDeck
48317
+ }
48318
+ });
48269
48319
  // src/Items/Examples/CardGame/Dice/AddDice.ts
48270
48320
  class AddDice extends ShapeTool {
48271
48321
  constructor(board, name) {
package/dist/cjs/node.js CHANGED
@@ -50308,19 +50308,6 @@ function throttle(func, delay) {
50308
50308
  };
50309
50309
  }
50310
50310
 
50311
- // src/Keyboard/HotkeyRegistry.ts
50312
- var editModeHotkeyRegistry = {};
50313
- var viewModeHotkeyRegistry = {};
50314
- var hotkeyNames = {};
50315
- function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
50316
- if (boardMode === "edit") {
50317
- editModeHotkeyRegistry[name] = hotkeyConfig;
50318
- } else {
50319
- viewModeHotkeyRegistry[name] = hotkeyConfig;
50320
- }
50321
- hotkeyNames[name] = hotkey;
50322
- }
50323
-
50324
50311
  // src/Items/Examples/CardGame/Card/Card.ts
50325
50312
  var defaultCardData = {
50326
50313
  itemType: "Card",
@@ -50457,21 +50444,19 @@ registerItem({
50457
50444
  item: Card,
50458
50445
  defaultData: defaultCardData
50459
50446
  });
50460
- registerHotkey({
50461
- name: "flipCard",
50462
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
50463
- boardMode: "edit",
50464
- hotkeyConfig: {
50465
- allItemsType: ["Card"],
50466
- cb: (event, board) => {
50467
- const cards = board?.selection.items.list();
50468
- if (!cards) {
50469
- return;
50470
- }
50471
- cards[0].toggleIsOpen(cards);
50472
- }
50447
+ // src/Keyboard/HotkeyRegistry.ts
50448
+ var editModeHotkeyRegistry = {};
50449
+ var viewModeHotkeyRegistry = {};
50450
+ var hotkeyNames = {};
50451
+ function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
50452
+ if (boardMode === "edit") {
50453
+ editModeHotkeyRegistry[name] = hotkeyConfig;
50454
+ } else {
50455
+ viewModeHotkeyRegistry[name] = hotkeyConfig;
50473
50456
  }
50474
- });
50457
+ hotkeyNames[name] = hotkey;
50458
+ }
50459
+
50475
50460
  // src/Items/Examples/CardGame/Deck/Deck.ts
50476
50461
  var defaultDeckData = {
50477
50462
  itemType: "Deck"
@@ -50657,7 +50642,7 @@ registerItem({
50657
50642
  });
50658
50643
  registerHotkey({
50659
50644
  name: "getCard-top",
50660
- hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
50645
+ hotkey: { key: { button: "KeyT", shift: true }, label: { windows: "Shift+T", mac: "⇧T" } },
50661
50646
  boardMode: "edit",
50662
50647
  hotkeyConfig: {
50663
50648
  allItemsType: ["Deck"],
@@ -50725,20 +50710,85 @@ registerHotkey({
50725
50710
  }
50726
50711
  });
50727
50712
  registerHotkey({
50728
- name: "flipDeck",
50729
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
50713
+ name: "flipDeckOrCard",
50714
+ hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "Shift+F", mac: "F" } },
50730
50715
  boardMode: "edit",
50731
50716
  hotkeyConfig: {
50732
- allItemsType: ["Deck"],
50717
+ allItemsType: ["Deck", "Card"],
50733
50718
  cb: (event, board) => {
50734
- const deck = board?.selection.items.getSingle();
50735
- if (!(deck instanceof Deck)) {
50719
+ const cardsOrDecks = board?.selection.items.list();
50720
+ if (!cardsOrDecks) {
50736
50721
  return;
50737
50722
  }
50738
- deck.flipDeck();
50723
+ let cards = [];
50724
+ let decks = [];
50725
+ for (const item of cardsOrDecks) {
50726
+ if (item instanceof Card) {
50727
+ cards.push(item);
50728
+ } else if (item instanceof Deck) {
50729
+ decks.push(item);
50730
+ }
50731
+ }
50732
+ cards[0]?.toggleIsOpen(cards);
50733
+ decks.forEach((deck) => {
50734
+ deck.flipDeck();
50735
+ });
50739
50736
  }
50740
50737
  }
50741
50738
  });
50739
+ function createDeck(event, board) {
50740
+ if (!board) {
50741
+ return;
50742
+ }
50743
+ const single = board.selection.items.getSingle();
50744
+ if (single && single.itemType === "Deck") {
50745
+ return;
50746
+ }
50747
+ const cardsOrDecks = board.selection.items.list();
50748
+ const onlyCards = board.selection.items.isAllItemsType("Card");
50749
+ if (onlyCards) {
50750
+ const deck = new Deck(board, "");
50751
+ deck.transformation.apply({
50752
+ class: "Transformation",
50753
+ method: "translateTo",
50754
+ item: [deck.getId()],
50755
+ x: cardsOrDecks[cardsOrDecks.length - 1].left,
50756
+ y: cardsOrDecks[cardsOrDecks.length - 1].top
50757
+ });
50758
+ const addedDeck = board.add(deck);
50759
+ board.selection.items.removeAll();
50760
+ addedDeck.addChildItems(cardsOrDecks);
50761
+ board.selection.items.add(addedDeck);
50762
+ } else {
50763
+ let mainDeck = null;
50764
+ const cards = [];
50765
+ cardsOrDecks.forEach((item) => {
50766
+ if (item.itemType === "Card") {
50767
+ cards.push(item);
50768
+ } else if (item.itemType === "Deck") {
50769
+ if (mainDeck) {
50770
+ cards.push(...mainDeck.getDeck());
50771
+ board.remove(mainDeck);
50772
+ mainDeck = item;
50773
+ } else {
50774
+ mainDeck = item;
50775
+ }
50776
+ }
50777
+ });
50778
+ board.selection.items.removeAll();
50779
+ mainDeck.addChildItems(cards);
50780
+ board.selection.items.add(mainDeck);
50781
+ }
50782
+ }
50783
+ registerHotkey({
50784
+ name: "createDeck",
50785
+ hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
50786
+ boardMode: "edit",
50787
+ hotkeyConfig: {
50788
+ allItemsType: ["Deck", "Card"],
50789
+ cb: createDeck
50790
+ }
50791
+ });
50742
50792
  // src/Items/Examples/CardGame/Dice/AddDice.ts
50743
50793
  class AddDice extends ShapeTool {
50744
50794
  constructor(board, name) {
@@ -47681,19 +47681,6 @@ function throttle(func, delay) {
47681
47681
  };
47682
47682
  }
47683
47683
 
47684
- // src/Keyboard/HotkeyRegistry.ts
47685
- var editModeHotkeyRegistry = {};
47686
- var viewModeHotkeyRegistry = {};
47687
- var hotkeyNames = {};
47688
- function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47689
- if (boardMode === "edit") {
47690
- editModeHotkeyRegistry[name] = hotkeyConfig;
47691
- } else {
47692
- viewModeHotkeyRegistry[name] = hotkeyConfig;
47693
- }
47694
- hotkeyNames[name] = hotkey;
47695
- }
47696
-
47697
47684
  // src/Items/Examples/CardGame/Card/Card.ts
47698
47685
  var defaultCardData = {
47699
47686
  itemType: "Card",
@@ -47830,21 +47817,19 @@ registerItem({
47830
47817
  item: Card,
47831
47818
  defaultData: defaultCardData
47832
47819
  });
47833
- registerHotkey({
47834
- name: "flipCard",
47835
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
47836
- boardMode: "edit",
47837
- hotkeyConfig: {
47838
- allItemsType: ["Card"],
47839
- cb: (event, board) => {
47840
- const cards = board?.selection.items.list();
47841
- if (!cards) {
47842
- return;
47843
- }
47844
- cards[0].toggleIsOpen(cards);
47845
- }
47820
+ // src/Keyboard/HotkeyRegistry.ts
47821
+ var editModeHotkeyRegistry = {};
47822
+ var viewModeHotkeyRegistry = {};
47823
+ var hotkeyNames = {};
47824
+ function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47825
+ if (boardMode === "edit") {
47826
+ editModeHotkeyRegistry[name] = hotkeyConfig;
47827
+ } else {
47828
+ viewModeHotkeyRegistry[name] = hotkeyConfig;
47846
47829
  }
47847
- });
47830
+ hotkeyNames[name] = hotkey;
47831
+ }
47832
+
47848
47833
  // src/Items/Examples/CardGame/Deck/Deck.ts
47849
47834
  var defaultDeckData = {
47850
47835
  itemType: "Deck"
@@ -48030,7 +48015,7 @@ registerItem({
48030
48015
  });
48031
48016
  registerHotkey({
48032
48017
  name: "getCard-top",
48033
- hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48018
+ hotkey: { key: { button: "KeyT", shift: true }, label: { windows: "Shift+T", mac: "⇧T" } },
48034
48019
  boardMode: "edit",
48035
48020
  hotkeyConfig: {
48036
48021
  allItemsType: ["Deck"],
@@ -48098,20 +48083,85 @@ registerHotkey({
48098
48083
  }
48099
48084
  });
48100
48085
  registerHotkey({
48101
- name: "flipDeck",
48102
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
48086
+ name: "flipDeckOrCard",
48087
+ hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "Shift+F", mac: "F" } },
48103
48088
  boardMode: "edit",
48104
48089
  hotkeyConfig: {
48105
- allItemsType: ["Deck"],
48090
+ allItemsType: ["Deck", "Card"],
48106
48091
  cb: (event, board) => {
48107
- const deck = board?.selection.items.getSingle();
48108
- if (!(deck instanceof Deck)) {
48092
+ const cardsOrDecks = board?.selection.items.list();
48093
+ if (!cardsOrDecks) {
48109
48094
  return;
48110
48095
  }
48111
- deck.flipDeck();
48096
+ let cards = [];
48097
+ let decks = [];
48098
+ for (const item of cardsOrDecks) {
48099
+ if (item instanceof Card) {
48100
+ cards.push(item);
48101
+ } else if (item instanceof Deck) {
48102
+ decks.push(item);
48103
+ }
48104
+ }
48105
+ cards[0]?.toggleIsOpen(cards);
48106
+ decks.forEach((deck) => {
48107
+ deck.flipDeck();
48108
+ });
48112
48109
  }
48113
48110
  }
48114
48111
  });
48112
+ function createDeck(event, board) {
48113
+ if (!board) {
48114
+ return;
48115
+ }
48116
+ const single = board.selection.items.getSingle();
48117
+ if (single && single.itemType === "Deck") {
48118
+ return;
48119
+ }
48120
+ const cardsOrDecks = board.selection.items.list();
48121
+ const onlyCards = board.selection.items.isAllItemsType("Card");
48122
+ if (onlyCards) {
48123
+ const deck = new Deck(board, "");
48124
+ deck.transformation.apply({
48125
+ class: "Transformation",
48126
+ method: "translateTo",
48127
+ item: [deck.getId()],
48128
+ x: cardsOrDecks[cardsOrDecks.length - 1].left,
48129
+ y: cardsOrDecks[cardsOrDecks.length - 1].top
48130
+ });
48131
+ const addedDeck = board.add(deck);
48132
+ board.selection.items.removeAll();
48133
+ addedDeck.addChildItems(cardsOrDecks);
48134
+ board.selection.items.add(addedDeck);
48135
+ } else {
48136
+ let mainDeck = null;
48137
+ const cards = [];
48138
+ cardsOrDecks.forEach((item) => {
48139
+ if (item.itemType === "Card") {
48140
+ cards.push(item);
48141
+ } else if (item.itemType === "Deck") {
48142
+ if (mainDeck) {
48143
+ cards.push(...mainDeck.getDeck());
48144
+ board.remove(mainDeck);
48145
+ mainDeck = item;
48146
+ } else {
48147
+ mainDeck = item;
48148
+ }
48149
+ }
48150
+ });
48151
+ board.selection.items.removeAll();
48152
+ mainDeck.addChildItems(cards);
48153
+ board.selection.items.add(mainDeck);
48154
+ }
48155
+ }
48156
+ registerHotkey({
48157
+ name: "createDeck",
48158
+ hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48159
+ boardMode: "edit",
48160
+ hotkeyConfig: {
48161
+ allItemsType: ["Deck", "Card"],
48162
+ cb: createDeck
48163
+ }
48164
+ });
48115
48165
  // src/Items/Examples/CardGame/Dice/AddDice.ts
48116
48166
  class AddDice extends ShapeTool {
48117
48167
  constructor(board, name) {
package/dist/esm/index.js CHANGED
@@ -47674,19 +47674,6 @@ function throttle(func, delay) {
47674
47674
  };
47675
47675
  }
47676
47676
 
47677
- // src/Keyboard/HotkeyRegistry.ts
47678
- var editModeHotkeyRegistry = {};
47679
- var viewModeHotkeyRegistry = {};
47680
- var hotkeyNames = {};
47681
- function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47682
- if (boardMode === "edit") {
47683
- editModeHotkeyRegistry[name] = hotkeyConfig;
47684
- } else {
47685
- viewModeHotkeyRegistry[name] = hotkeyConfig;
47686
- }
47687
- hotkeyNames[name] = hotkey;
47688
- }
47689
-
47690
47677
  // src/Items/Examples/CardGame/Card/Card.ts
47691
47678
  var defaultCardData = {
47692
47679
  itemType: "Card",
@@ -47823,21 +47810,19 @@ registerItem({
47823
47810
  item: Card,
47824
47811
  defaultData: defaultCardData
47825
47812
  });
47826
- registerHotkey({
47827
- name: "flipCard",
47828
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
47829
- boardMode: "edit",
47830
- hotkeyConfig: {
47831
- allItemsType: ["Card"],
47832
- cb: (event, board) => {
47833
- const cards = board?.selection.items.list();
47834
- if (!cards) {
47835
- return;
47836
- }
47837
- cards[0].toggleIsOpen(cards);
47838
- }
47813
+ // src/Keyboard/HotkeyRegistry.ts
47814
+ var editModeHotkeyRegistry = {};
47815
+ var viewModeHotkeyRegistry = {};
47816
+ var hotkeyNames = {};
47817
+ function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
47818
+ if (boardMode === "edit") {
47819
+ editModeHotkeyRegistry[name] = hotkeyConfig;
47820
+ } else {
47821
+ viewModeHotkeyRegistry[name] = hotkeyConfig;
47839
47822
  }
47840
- });
47823
+ hotkeyNames[name] = hotkey;
47824
+ }
47825
+
47841
47826
  // src/Items/Examples/CardGame/Deck/Deck.ts
47842
47827
  var defaultDeckData = {
47843
47828
  itemType: "Deck"
@@ -48023,7 +48008,7 @@ registerItem({
48023
48008
  });
48024
48009
  registerHotkey({
48025
48010
  name: "getCard-top",
48026
- hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48011
+ hotkey: { key: { button: "KeyT", shift: true }, label: { windows: "Shift+T", mac: "⇧T" } },
48027
48012
  boardMode: "edit",
48028
48013
  hotkeyConfig: {
48029
48014
  allItemsType: ["Deck"],
@@ -48091,20 +48076,85 @@ registerHotkey({
48091
48076
  }
48092
48077
  });
48093
48078
  registerHotkey({
48094
- name: "flipDeck",
48095
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
48079
+ name: "flipDeckOrCard",
48080
+ hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "Shift+F", mac: "F" } },
48096
48081
  boardMode: "edit",
48097
48082
  hotkeyConfig: {
48098
- allItemsType: ["Deck"],
48083
+ allItemsType: ["Deck", "Card"],
48099
48084
  cb: (event, board) => {
48100
- const deck = board?.selection.items.getSingle();
48101
- if (!(deck instanceof Deck)) {
48085
+ const cardsOrDecks = board?.selection.items.list();
48086
+ if (!cardsOrDecks) {
48102
48087
  return;
48103
48088
  }
48104
- deck.flipDeck();
48089
+ let cards = [];
48090
+ let decks = [];
48091
+ for (const item of cardsOrDecks) {
48092
+ if (item instanceof Card) {
48093
+ cards.push(item);
48094
+ } else if (item instanceof Deck) {
48095
+ decks.push(item);
48096
+ }
48097
+ }
48098
+ cards[0]?.toggleIsOpen(cards);
48099
+ decks.forEach((deck) => {
48100
+ deck.flipDeck();
48101
+ });
48105
48102
  }
48106
48103
  }
48107
48104
  });
48105
+ function createDeck(event, board) {
48106
+ if (!board) {
48107
+ return;
48108
+ }
48109
+ const single = board.selection.items.getSingle();
48110
+ if (single && single.itemType === "Deck") {
48111
+ return;
48112
+ }
48113
+ const cardsOrDecks = board.selection.items.list();
48114
+ const onlyCards = board.selection.items.isAllItemsType("Card");
48115
+ if (onlyCards) {
48116
+ const deck = new Deck(board, "");
48117
+ deck.transformation.apply({
48118
+ class: "Transformation",
48119
+ method: "translateTo",
48120
+ item: [deck.getId()],
48121
+ x: cardsOrDecks[cardsOrDecks.length - 1].left,
48122
+ y: cardsOrDecks[cardsOrDecks.length - 1].top
48123
+ });
48124
+ const addedDeck = board.add(deck);
48125
+ board.selection.items.removeAll();
48126
+ addedDeck.addChildItems(cardsOrDecks);
48127
+ board.selection.items.add(addedDeck);
48128
+ } else {
48129
+ let mainDeck = null;
48130
+ const cards = [];
48131
+ cardsOrDecks.forEach((item) => {
48132
+ if (item.itemType === "Card") {
48133
+ cards.push(item);
48134
+ } else if (item.itemType === "Deck") {
48135
+ if (mainDeck) {
48136
+ cards.push(...mainDeck.getDeck());
48137
+ board.remove(mainDeck);
48138
+ mainDeck = item;
48139
+ } else {
48140
+ mainDeck = item;
48141
+ }
48142
+ }
48143
+ });
48144
+ board.selection.items.removeAll();
48145
+ mainDeck.addChildItems(cards);
48146
+ board.selection.items.add(mainDeck);
48147
+ }
48148
+ }
48149
+ registerHotkey({
48150
+ name: "createDeck",
48151
+ hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
48152
+ boardMode: "edit",
48153
+ hotkeyConfig: {
48154
+ allItemsType: ["Deck", "Card"],
48155
+ cb: createDeck
48156
+ }
48157
+ });
48108
48158
  // src/Items/Examples/CardGame/Dice/AddDice.ts
48109
48159
  class AddDice extends ShapeTool {
48110
48160
  constructor(board, name) {
package/dist/esm/node.js CHANGED
@@ -50142,19 +50142,6 @@ function throttle(func, delay) {
50142
50142
  };
50143
50143
  }
50144
50144
 
50145
- // src/Keyboard/HotkeyRegistry.ts
50146
- var editModeHotkeyRegistry = {};
50147
- var viewModeHotkeyRegistry = {};
50148
- var hotkeyNames = {};
50149
- function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
50150
- if (boardMode === "edit") {
50151
- editModeHotkeyRegistry[name] = hotkeyConfig;
50152
- } else {
50153
- viewModeHotkeyRegistry[name] = hotkeyConfig;
50154
- }
50155
- hotkeyNames[name] = hotkey;
50156
- }
50157
-
50158
50145
  // src/Items/Examples/CardGame/Card/Card.ts
50159
50146
  var defaultCardData = {
50160
50147
  itemType: "Card",
@@ -50291,21 +50278,19 @@ registerItem({
50291
50278
  item: Card,
50292
50279
  defaultData: defaultCardData
50293
50280
  });
50294
- registerHotkey({
50295
- name: "flipCard",
50296
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
50297
- boardMode: "edit",
50298
- hotkeyConfig: {
50299
- allItemsType: ["Card"],
50300
- cb: (event, board) => {
50301
- const cards = board?.selection.items.list();
50302
- if (!cards) {
50303
- return;
50304
- }
50305
- cards[0].toggleIsOpen(cards);
50306
- }
50281
+ // src/Keyboard/HotkeyRegistry.ts
50282
+ var editModeHotkeyRegistry = {};
50283
+ var viewModeHotkeyRegistry = {};
50284
+ var hotkeyNames = {};
50285
+ function registerHotkey({ name, hotkey, hotkeyConfig, boardMode }) {
50286
+ if (boardMode === "edit") {
50287
+ editModeHotkeyRegistry[name] = hotkeyConfig;
50288
+ } else {
50289
+ viewModeHotkeyRegistry[name] = hotkeyConfig;
50307
50290
  }
50308
- });
50291
+ hotkeyNames[name] = hotkey;
50292
+ }
50293
+
50309
50294
  // src/Items/Examples/CardGame/Deck/Deck.ts
50310
50295
  var defaultDeckData = {
50311
50296
  itemType: "Deck"
@@ -50491,7 +50476,7 @@ registerItem({
50491
50476
  });
50492
50477
  registerHotkey({
50493
50478
  name: "getCard-top",
50494
- hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
50479
+ hotkey: { key: { button: "KeyT", shift: true }, label: { windows: "Shift+T", mac: "⇧T" } },
50495
50480
  boardMode: "edit",
50496
50481
  hotkeyConfig: {
50497
50482
  allItemsType: ["Deck"],
@@ -50559,20 +50544,85 @@ registerHotkey({
50559
50544
  }
50560
50545
  });
50561
50546
  registerHotkey({
50562
- name: "flipDeck",
50563
- hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "F", mac: "F" } },
50547
+ name: "flipDeckOrCard",
50548
+ hotkey: { key: { button: "KeyF", shift: true }, label: { windows: "Shift+F", mac: "F" } },
50564
50549
  boardMode: "edit",
50565
50550
  hotkeyConfig: {
50566
- allItemsType: ["Deck"],
50551
+ allItemsType: ["Deck", "Card"],
50567
50552
  cb: (event, board) => {
50568
- const deck = board?.selection.items.getSingle();
50569
- if (!(deck instanceof Deck)) {
50553
+ const cardsOrDecks = board?.selection.items.list();
50554
+ if (!cardsOrDecks) {
50570
50555
  return;
50571
50556
  }
50572
- deck.flipDeck();
50557
+ let cards = [];
50558
+ let decks = [];
50559
+ for (const item of cardsOrDecks) {
50560
+ if (item instanceof Card) {
50561
+ cards.push(item);
50562
+ } else if (item instanceof Deck) {
50563
+ decks.push(item);
50564
+ }
50565
+ }
50566
+ cards[0]?.toggleIsOpen(cards);
50567
+ decks.forEach((deck) => {
50568
+ deck.flipDeck();
50569
+ });
50573
50570
  }
50574
50571
  }
50575
50572
  });
50573
+ function createDeck(event, board) {
50574
+ if (!board) {
50575
+ return;
50576
+ }
50577
+ const single = board.selection.items.getSingle();
50578
+ if (single && single.itemType === "Deck") {
50579
+ return;
50580
+ }
50581
+ const cardsOrDecks = board.selection.items.list();
50582
+ const onlyCards = board.selection.items.isAllItemsType("Card");
50583
+ if (onlyCards) {
50584
+ const deck = new Deck(board, "");
50585
+ deck.transformation.apply({
50586
+ class: "Transformation",
50587
+ method: "translateTo",
50588
+ item: [deck.getId()],
50589
+ x: cardsOrDecks[cardsOrDecks.length - 1].left,
50590
+ y: cardsOrDecks[cardsOrDecks.length - 1].top
50591
+ });
50592
+ const addedDeck = board.add(deck);
50593
+ board.selection.items.removeAll();
50594
+ addedDeck.addChildItems(cardsOrDecks);
50595
+ board.selection.items.add(addedDeck);
50596
+ } else {
50597
+ let mainDeck = null;
50598
+ const cards = [];
50599
+ cardsOrDecks.forEach((item) => {
50600
+ if (item.itemType === "Card") {
50601
+ cards.push(item);
50602
+ } else if (item.itemType === "Deck") {
50603
+ if (mainDeck) {
50604
+ cards.push(...mainDeck.getDeck());
50605
+ board.remove(mainDeck);
50606
+ mainDeck = item;
50607
+ } else {
50608
+ mainDeck = item;
50609
+ }
50610
+ }
50611
+ });
50612
+ board.selection.items.removeAll();
50613
+ mainDeck.addChildItems(cards);
50614
+ board.selection.items.add(mainDeck);
50615
+ }
50616
+ }
50617
+ registerHotkey({
50618
+ name: "createDeck",
50619
+ hotkey: { key: { button: "KeyD", shift: true }, label: { windows: "Shift+D", mac: "⇧D" } },
50620
+ boardMode: "edit",
50621
+ hotkeyConfig: {
50622
+ allItemsType: ["Deck", "Card"],
50623
+ cb: createDeck
50624
+ }
50625
+ });
50576
50626
  // src/Items/Examples/CardGame/Dice/AddDice.ts
50577
50627
  class AddDice extends ShapeTool {
50578
50628
  constructor(board, name) {
@@ -28,3 +28,4 @@ export declare class Deck extends BaseItem {
28
28
  render(context: DrawingContext): void;
29
29
  private updateCache;
30
30
  }
31
+ export declare function createDeck(event?: KeyboardEvent, board?: Board): void;
@@ -1 +1 @@
1
- export { Deck } from "./Deck";
1
+ export { Deck, createDeck } from "./Deck";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "microboard-temp",
3
- "version": "0.5.11",
3
+ "version": "0.5.13",
4
4
  "description": "A flexible interactive whiteboard library",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",