pxt-core 8.2.13 → 8.2.14

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 (47) hide show
  1. package/built/buildengine.js +3 -3
  2. package/built/cli.js +5 -5
  3. package/built/gdb.js +4 -4
  4. package/built/nodeutil.d.ts +1 -0
  5. package/built/pxt.js +360 -360
  6. package/built/pxtblockly.js +35 -35
  7. package/built/pxtblocks.js +35 -35
  8. package/built/pxtcompiler.js +156 -156
  9. package/built/pxteditor.d.ts +15 -3
  10. package/built/pxteditor.js +6 -6
  11. package/built/pxtlib.d.ts +2 -1
  12. package/built/pxtlib.js +162 -161
  13. package/built/pxtpy.js +34 -35
  14. package/built/pxtsim.d.ts +5 -5
  15. package/built/pxtsim.js +3 -3
  16. package/built/server.js +5 -5
  17. package/built/storage.js +4 -4
  18. package/built/target.js +1 -1
  19. package/built/web/main.js +1 -1
  20. package/built/web/pxtapp.js +1 -1
  21. package/built/web/pxtasseteditor.js +1 -1
  22. package/built/web/pxteditor.js +1 -1
  23. package/built/web/pxtembed.js +2 -2
  24. package/built/web/pxtlib.js +1 -1
  25. package/built/web/pxtpy.js +1 -1
  26. package/built/web/pxtsim.js +1 -1
  27. package/built/web/pxtworker.js +1 -1
  28. package/built/web/rtlsemantic.css +1 -1
  29. package/built/web/semantic.css +1 -1
  30. package/built/web/skillmap/js/2.960f04a5.chunk.js +2 -0
  31. package/built/web/skillmap/js/main.44b2383f.chunk.js +1 -0
  32. package/common-docs/static/logo/social-buttons/google-classroom.png +0 -0
  33. package/common-docs/static/logo/social-buttons/microsoft-teams.png +0 -0
  34. package/docfiles/pxtweb/tsconfig.json +2 -1
  35. package/localtypings/dom.d.ts +3 -0
  36. package/localtypings/react.d.ts +1 -1
  37. package/package.json +6 -6
  38. package/react-common/components/controls/Modal.tsx +2 -2
  39. package/react-common/components/share/ShareInfo.tsx +1 -1
  40. package/react-common/tsconfig.json +3 -2
  41. package/theme/common.less +5 -3
  42. package/theme/highcontrast.less +3 -0
  43. package/theme/toolbox.less +25 -0
  44. package/theme/tutorial-sidebar.less +171 -115
  45. package/webapp/public/skillmap.html +1 -1
  46. package/built/web/skillmap/js/2.26325281.chunk.js +0 -2
  47. package/built/web/skillmap/js/main.d94a2bd9.chunk.js +0 -1
package/built/pxtlib.js CHANGED
@@ -3802,7 +3802,7 @@ var pxt;
3802
3802
  definitionNameToParam: {},
3803
3803
  handlerArgs: []
3804
3804
  };
3805
- const instance = (fn.kind == 1 /* Method */ || fn.kind == 2 /* Property */) && !fn.attributes.defaultInstance;
3805
+ const instance = (fn.kind == 1 /* ts.pxtc.SymbolKind.Method */ || fn.kind == 2 /* ts.pxtc.SymbolKind.Property */) && !fn.attributes.defaultInstance;
3806
3806
  const hasBlockDef = !!fn.attributes._def;
3807
3807
  const defParameters = hasBlockDef ? fn.attributes._def.parameters.slice(0) : undefined;
3808
3808
  const optionalStart = hasBlockDef ? defParameters.length : (fn.parameters ? fn.parameters.length : 0);
@@ -4461,6 +4461,7 @@ var pxt;
4461
4461
  }
4462
4462
  })(blocks = pxt.blocks || (pxt.blocks = {}));
4463
4463
  })(pxt || (pxt = {}));
4464
+ /// <reference path="../localtypings/dom.d.ts" />
4464
4465
  var pxt;
4465
4466
  (function (pxt) {
4466
4467
  var BrowserUtils;
@@ -12999,7 +13000,7 @@ var pxt;
12999
13000
  }
13000
13001
  sprite_1.base64EncodeBitmap = base64EncodeBitmap;
13001
13002
  function getFixedInstanceDropdownValues(apis, qName) {
13002
- return pxt.Util.values(apis.byQName).filter(sym => sym.kind === 4 /* Variable */
13003
+ return pxt.Util.values(apis.byQName).filter(sym => sym.kind === 4 /* pxtc.SymbolKind.Variable */
13003
13004
  && sym.attributes.fixedInstance
13004
13005
  && isSubtype(apis, sym.retType, qName));
13005
13006
  }
@@ -15515,7 +15516,7 @@ var ts;
15515
15516
  ex = m[mkey] = {
15516
15517
  attributes: {
15517
15518
  blockId: `${isNumberType ? s.namespace : mkey}_blockCombine_${rtp}`,
15518
- callingConvention: 0 /* Plain */,
15519
+ callingConvention: 0 /* ir.CallingConvention.Plain */,
15519
15520
  group: s.attributes.group,
15520
15521
  paramDefl: {},
15521
15522
  jsDoc: isGet
@@ -15527,7 +15528,7 @@ var ts;
15527
15528
  fileName: s.fileName,
15528
15529
  qName: `${mkey}.${tp}`,
15529
15530
  pkg: s.pkg,
15530
- kind: 2 /* Property */,
15531
+ kind: 2 /* SymbolKind.Property */,
15531
15532
  parameters: [
15532
15533
  {
15533
15534
  name: "property",
@@ -15641,15 +15642,15 @@ var ts;
15641
15642
  }
15642
15643
  else if (!!s.attributes.block
15643
15644
  && !s.attributes.fixedInstance
15644
- && s.kind != 7 /* EnumMember */
15645
- && s.kind != 5 /* Module */
15646
- && s.kind != 9 /* Interface */
15647
- && s.kind != 8 /* Class */) {
15645
+ && s.kind != 7 /* pxtc.SymbolKind.EnumMember */
15646
+ && s.kind != 5 /* pxtc.SymbolKind.Module */
15647
+ && s.kind != 9 /* pxtc.SymbolKind.Interface */
15648
+ && s.kind != 8 /* pxtc.SymbolKind.Class */) {
15648
15649
  if (!s.attributes.blockId)
15649
15650
  s.attributes.blockId = s.qName.replace(/\./g, "_");
15650
15651
  if (s.attributes.block == "true") {
15651
15652
  let b = pxtc.U.uncapitalize(s.name);
15652
- if (s.kind == 1 /* Method */ || s.kind == 2 /* Property */) {
15653
+ if (s.kind == 1 /* SymbolKind.Method */ || s.kind == 2 /* SymbolKind.Property */) {
15653
15654
  b += " %" + s.namespace.toLowerCase();
15654
15655
  }
15655
15656
  const params = (_b = (_a = s.parameters) === null || _a === void 0 ? void 0 : _a.filter(pr => !parameterTypeIsArrowFunction(pr))) !== null && _b !== void 0 ? _b : [];
@@ -15703,7 +15704,7 @@ var ts;
15703
15704
  if (key) {
15704
15705
  return key;
15705
15706
  }
15706
- if ((symbol && symbol.kind == 6 /* Enum */) || (!symbol && param.includes("."))) {
15707
+ if ((symbol && symbol.kind == 6 /* SymbolKind.Enum */) || (!symbol && param.includes("."))) {
15707
15708
  // Python enums are all caps
15708
15709
  const dotIdx = param.lastIndexOf(".");
15709
15710
  const left = param.substr(0, dotIdx);
@@ -15886,7 +15887,7 @@ var ts;
15886
15887
  function parseCommentString(cmt) {
15887
15888
  let res = {
15888
15889
  paramDefl: {},
15889
- callingConvention: 0 /* Plain */,
15890
+ callingConvention: 0 /* ir.CallingConvention.Plain */,
15890
15891
  _source: cmt
15891
15892
  };
15892
15893
  let didSomething = true;
@@ -16018,9 +16019,9 @@ var ts;
16018
16019
  });
16019
16020
  res.jsDoc = res.jsDoc.trim();
16020
16021
  if (res.async)
16021
- res.callingConvention = 1 /* Async */;
16022
+ res.callingConvention = 1 /* ir.CallingConvention.Async */;
16022
16023
  if (res.promise)
16023
- res.callingConvention = 2 /* Promise */;
16024
+ res.callingConvention = 2 /* ir.CallingConvention.Promise */;
16024
16025
  if (res.jres)
16025
16026
  res.whenUsed = true;
16026
16027
  if (res.subcategories) {
@@ -16102,11 +16103,11 @@ var ts;
16102
16103
  const tk = eatToken(c => c == char);
16103
16104
  const offset = char === "_" ? 2 : 0;
16104
16105
  if (tk.length === 1)
16105
- newToken = { kind: 1 /* SingleAsterisk */ << offset, content: tk };
16106
+ newToken = { kind: 1 /* TokenKind.SingleAsterisk */ << offset, content: tk };
16106
16107
  else if (tk.length === 2)
16107
- newToken = { kind: 2 /* DoubleAsterisk */ << offset, content: tk };
16108
+ newToken = { kind: 2 /* TokenKind.DoubleAsterisk */ << offset, content: tk };
16108
16109
  else if (tk.length === 3)
16109
- newToken = { kind: 3 /* TripleAsterisk */ << offset, content: tk };
16110
+ newToken = { kind: 3 /* TokenKind.TripleAsterisk */ << offset, content: tk };
16110
16111
  else
16111
16112
  strIndex = restoreIndex; // error: no more than three style marks
16112
16113
  break;
@@ -16116,21 +16117,21 @@ var ts;
16116
16117
  strIndex = restoreIndex; // error: not terminated
16117
16118
  break;
16118
16119
  }
16119
- newToken = { kind: 256 /* Image */, content: image };
16120
+ newToken = { kind: 256 /* TokenKind.Image */, content: image };
16120
16121
  break;
16121
16122
  case "|":
16122
- newToken = { kind: 32 /* Pipe */ };
16123
+ newToken = { kind: 32 /* TokenKind.Pipe */ };
16123
16124
  break;
16124
16125
  case "\\":
16125
16126
  if (strIndex < (def.length - 1))
16126
- newToken = { kind: 16 /* Escape */, content: def[1 + (strIndex++)] };
16127
+ newToken = { kind: 16 /* TokenKind.Escape */, content: def[1 + (strIndex++)] };
16127
16128
  break;
16128
16129
  case "[":
16129
16130
  const contentText = eatEnclosure("]");
16130
16131
  if (contentText !== undefined && def[strIndex++ + 1] === "(") {
16131
16132
  const contentClass = eatEnclosure(")");
16132
16133
  if (contentClass !== undefined) {
16133
- newToken = { kind: 512 /* TaggedText */, content: contentText, type: contentClass };
16134
+ newToken = { kind: 512 /* TokenKind.TaggedText */, content: contentText, type: contentClass };
16134
16135
  break;
16135
16136
  }
16136
16137
  }
@@ -16151,12 +16152,12 @@ var ts;
16151
16152
  if (!varName)
16152
16153
  strIndex = oldIndex;
16153
16154
  }
16154
- newToken = { kind: (char === "$") ? 1024 /* ParamRef */ : 64 /* Parameter */, content: param[0], type: param[1], name: varName };
16155
+ newToken = { kind: (char === "$") ? 1024 /* TokenKind.ParamRef */ : 64 /* TokenKind.Parameter */, content: param[0], type: param[1], name: varName };
16155
16156
  break;
16156
16157
  }
16157
16158
  if (newToken) {
16158
16159
  if (currentWord)
16159
- tokens.push({ kind: 128 /* Word */, content: currentWord });
16160
+ tokens.push({ kind: 128 /* TokenKind.Word */, content: currentWord });
16160
16161
  currentWord = undefined;
16161
16162
  tokens.push(newToken);
16162
16163
  }
@@ -16168,7 +16169,7 @@ var ts;
16168
16169
  }
16169
16170
  }
16170
16171
  if (currentWord)
16171
- tokens.push({ kind: 128 /* Word */, content: currentWord });
16172
+ tokens.push({ kind: 128 /* TokenKind.Word */, content: currentWord });
16172
16173
  const parts = [];
16173
16174
  const parameters = [];
16174
16175
  let stack = [];
@@ -16178,7 +16179,7 @@ var ts;
16178
16179
  for (let i = 0; i < tokens.length; i++) {
16179
16180
  const token = tokens[i].kind;
16180
16181
  const top = stack[stack.length - 1];
16181
- if (token & 15 /* StyleMarks */) {
16182
+ if (token & 15 /* TokenKind.StyleMarks */) {
16182
16183
  pushCurrentLabel(tokens[i].content);
16183
16184
  if (token & open) {
16184
16185
  if (top & token) {
@@ -16200,35 +16201,35 @@ var ts;
16200
16201
  stack.push(token);
16201
16202
  }
16202
16203
  }
16203
- else if (token & 144 /* Text */) {
16204
+ else if (token & 144 /* TokenKind.Text */) {
16204
16205
  currentLabel += tokens[i].content;
16205
16206
  }
16206
- else if (token & 1120 /* Unstylable */) {
16207
+ else if (token & 1120 /* TokenKind.Unstylable */) {
16207
16208
  pushLabels();
16208
16209
  }
16209
- if (token == 64 /* Parameter */) {
16210
+ if (token == 64 /* TokenKind.Parameter */) {
16210
16211
  const param = { kind: "param", name: tokens[i].content, shadowBlockId: tokens[i].type, ref: false };
16211
16212
  if (tokens[i].name)
16212
16213
  param.varName = tokens[i].name;
16213
16214
  parts.push(param);
16214
16215
  parameters.push(param);
16215
16216
  }
16216
- else if (token == 1024 /* ParamRef */) {
16217
+ else if (token == 1024 /* TokenKind.ParamRef */) {
16217
16218
  const param = { kind: "param", name: tokens[i].content, shadowBlockId: tokens[i].type, ref: true };
16218
16219
  if (tokens[i].name)
16219
16220
  param.varName = tokens[i].name;
16220
16221
  parts.push(param);
16221
16222
  parameters.push(param);
16222
16223
  }
16223
- else if (token == 256 /* Image */) {
16224
+ else if (token == 256 /* TokenKind.Image */) {
16224
16225
  pushCurrentLabel();
16225
16226
  labelStack.push({ kind: "image", uri: tokens[i].content });
16226
16227
  }
16227
- else if (token == 512 /* TaggedText */) {
16228
+ else if (token == 512 /* TokenKind.TaggedText */) {
16228
16229
  pushCurrentLabel();
16229
16230
  labelStack.push({ kind: "label", text: tokens[i].content, cssClass: tokens[i].type });
16230
16231
  }
16231
- else if (token == 32 /* Pipe */) {
16232
+ else if (token == 32 /* TokenKind.Pipe */) {
16232
16233
  parts.push({ kind: "break" });
16233
16234
  }
16234
16235
  }
@@ -16297,9 +16298,9 @@ var ts;
16297
16298
  if (!label.content)
16298
16299
  continue;
16299
16300
  const styles = [];
16300
- if (label.styles & 10 /* Bold */)
16301
+ if (label.styles & 10 /* TokenKind.Bold */)
16301
16302
  styles.push("bold");
16302
- if (label.styles & 5 /* Italics */)
16303
+ if (label.styles & 5 /* TokenKind.Italics */)
16303
16304
  styles.push("italics");
16304
16305
  parts.push({ kind: "label", text: label.content, style: styles });
16305
16306
  }
@@ -16784,7 +16785,7 @@ var pxt;
16784
16785
  }
16785
16786
  getProjectAsync(headerId) {
16786
16787
  return this.db.getAsync(IndexedDBWorkspace.projectTable, headerId)
16787
- .then(entry => { var _a; return (_a = entry) === null || _a === void 0 ? void 0 : _a.project; });
16788
+ .then(entry => entry === null || entry === void 0 ? void 0 : entry.project);
16788
16789
  }
16789
16790
  saveProjectAsync(project) {
16790
16791
  return this.db.setAsync(IndexedDBWorkspace.projectTable, {
@@ -16794,7 +16795,7 @@ var pxt;
16794
16795
  }
16795
16796
  getUserStateAsync() {
16796
16797
  return this.db.getAsync(IndexedDBWorkspace.userTable, "local-user")
16797
- .then(entry => { var _a; return (_a = entry) === null || _a === void 0 ? void 0 : _a.user; });
16798
+ .then(entry => entry === null || entry === void 0 ? void 0 : entry.user);
16798
16799
  }
16799
16800
  saveUserStateAsync(user) {
16800
16801
  return this.db.setAsync(IndexedDBWorkspace.userTable, {
@@ -17953,12 +17954,12 @@ var pxt;
17953
17954
  return this.nextInternalID++;
17954
17955
  }
17955
17956
  createNewImage(width = 16, height = 16) {
17956
- const id = this.generateNewID("image" /* Image */);
17957
+ const id = this.generateNewID("image" /* AssetType.Image */);
17957
17958
  const bitmap = new pxt.sprite.Bitmap(width, height).data();
17958
17959
  const newImage = {
17959
17960
  internalID: this.getNewInternalId(),
17960
17961
  id,
17961
- type: "image" /* Image */,
17962
+ type: "image" /* AssetType.Image */,
17962
17963
  bitmap: bitmap,
17963
17964
  meta: {},
17964
17965
  jresData: pxt.sprite.base64EncodeBitmap(bitmap)
@@ -17966,12 +17967,12 @@ var pxt;
17966
17967
  return this.state.images.add(newImage);
17967
17968
  }
17968
17969
  createNewAnimation(width = 16, height = 16) {
17969
- const id = this.generateNewID("animation" /* Animation */);
17970
+ const id = this.generateNewID("animation" /* AssetType.Animation */);
17970
17971
  const bitmap = new pxt.sprite.Bitmap(width, height).data();
17971
17972
  const newAnimation = {
17972
17973
  internalID: this.getNewInternalId(),
17973
17974
  id,
17974
- type: "animation" /* Animation */,
17975
+ type: "animation" /* AssetType.Animation */,
17975
17976
  frames: [bitmap],
17976
17977
  interval: 500,
17977
17978
  meta: {},
@@ -17979,11 +17980,11 @@ var pxt;
17979
17980
  return this.state.animations.add(newAnimation);
17980
17981
  }
17981
17982
  createNewAnimationFromData(frames, interval = 500, displayName) {
17982
- const id = this.generateNewID("animation" /* Animation */);
17983
+ const id = this.generateNewID("animation" /* AssetType.Animation */);
17983
17984
  const newAnimation = {
17984
17985
  internalID: this.getNewInternalId(),
17985
17986
  id,
17986
- type: "animation" /* Animation */,
17987
+ type: "animation" /* AssetType.Animation */,
17987
17988
  frames,
17988
17989
  interval,
17989
17990
  meta: { displayName },
@@ -18016,13 +18017,13 @@ var pxt;
18016
18017
  }
18017
18018
  createNewTile(data, id, displayName) {
18018
18019
  this.onChange();
18019
- if (!id || this.isNameTaken("tile" /* Tile */, id)) {
18020
- id = this.generateNewID("tile" /* Tile */);
18020
+ if (!id || this.isNameTaken("tile" /* AssetType.Tile */, id)) {
18021
+ id = this.generateNewID("tile" /* AssetType.Tile */);
18021
18022
  }
18022
18023
  const newTile = {
18023
18024
  internalID: this.getNewInternalId(),
18024
18025
  id,
18025
- type: "tile" /* Tile */,
18026
+ type: "tile" /* AssetType.Tile */,
18026
18027
  jresData: pxt.sprite.base64EncodeBitmap(data),
18027
18028
  bitmap: data,
18028
18029
  meta: {
@@ -18036,8 +18037,8 @@ var pxt;
18036
18037
  this.onChange();
18037
18038
  const newImage = {
18038
18039
  internalID: this.getNewInternalId(),
18039
- id: this.generateNewID("image" /* Image */),
18040
- type: "image" /* Image */,
18040
+ id: this.generateNewID("image" /* AssetType.Image */),
18041
+ type: "image" /* AssetType.Image */,
18041
18042
  jresData: pxt.sprite.base64EncodeBitmap(data),
18042
18043
  meta: {
18043
18044
  displayName
@@ -18052,7 +18053,7 @@ var pxt;
18052
18053
  if (existing) {
18053
18054
  this.state.tiles.update(existing.id, tile);
18054
18055
  if (existing.id !== tile.id || !pxt.sprite.bitmapEquals(existing.bitmap, tile.bitmap)) {
18055
- for (const tm of this.getAssets("tilemap" /* Tilemap */)) {
18056
+ for (const tm of this.getAssets("tilemap" /* AssetType.Tilemap */)) {
18056
18057
  if (tm.data.tileset.tiles.some(t => t.internalID === tile.internalID)) {
18057
18058
  tm.data.tileset.tiles = tm.data.tileset.tiles.map(t => t.internalID === tile.internalID ? tile : t);
18058
18059
  this.updateTilemap(tm.id, tm.data);
@@ -18115,7 +18116,7 @@ var pxt;
18115
18116
  return new pxt.sprite.TilemapData(tilemap, tileset, layers.data());
18116
18117
  }
18117
18118
  resolveTile(id) {
18118
- return this.lookupAsset("tile" /* Tile */, id);
18119
+ return this.lookupAsset("tile" /* AssetType.Tile */, id);
18119
18120
  }
18120
18121
  resolveProjectTileByInternalID(id) {
18121
18122
  return this.state.tiles.getSnapshot(tile => tile.internalID === id)[0];
@@ -18132,7 +18133,7 @@ var pxt;
18132
18133
  tile = {
18133
18134
  internalID: this.getNewInternalId(),
18134
18135
  id,
18135
- type: "tile" /* Tile */,
18136
+ type: "tile" /* AssetType.Tile */,
18136
18137
  bitmap: bitmap,
18137
18138
  jresData: pxt.sprite.base64EncodeBitmap(bitmap),
18138
18139
  meta: {},
@@ -18144,11 +18145,11 @@ var pxt;
18144
18145
  }
18145
18146
  createNewTilemapFromData(data, name) {
18146
18147
  this.onChange();
18147
- const id = this.generateNewIDInternal("tilemap" /* Tilemap */, name || lf("level"));
18148
+ const id = this.generateNewIDInternal("tilemap" /* AssetType.Tilemap */, name || lf("level"));
18148
18149
  this.state.tilemaps.add({
18149
18150
  internalID: this.getNewInternalId(),
18150
18151
  id,
18151
- type: "tilemap" /* Tilemap */,
18152
+ type: "tilemap" /* AssetType.Tilemap */,
18152
18153
  meta: {
18153
18154
  displayName: name || id
18154
18155
  },
@@ -18235,13 +18236,13 @@ var pxt;
18235
18236
  isNameTaken(assetType, name) {
18236
18237
  const isTaken = (id) => {
18237
18238
  switch (assetType) {
18238
- case "image" /* Image */:
18239
+ case "image" /* AssetType.Image */:
18239
18240
  return this.state.images.isIDTaken(id) || this.gallery.images.isIDTaken(id);
18240
- case "tile" /* Tile */:
18241
+ case "tile" /* AssetType.Tile */:
18241
18242
  return this.state.tiles.isIDTaken(id) || this.gallery.tiles.isIDTaken(id);
18242
- case "tilemap" /* Tilemap */:
18243
+ case "tilemap" /* AssetType.Tilemap */:
18243
18244
  return this.state.tilemaps.isIDTaken(id) || this.gallery.tilemaps.isIDTaken(id);
18244
- case "animation" /* Animation */:
18245
+ case "animation" /* AssetType.Animation */:
18245
18246
  return this.state.animations.isIDTaken(id) || this.gallery.animations.isIDTaken(id);
18246
18247
  }
18247
18248
  };
@@ -18279,8 +18280,8 @@ var pxt;
18279
18280
  let blockIds = ((_b = (_a = asset.meta) === null || _a === void 0 ? void 0 : _a.blockIDs) === null || _b === void 0 ? void 0 : _b.filter(id => !skipIDs || (skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(id)) < 0)) || [];
18280
18281
  if (blockIds.length > 0)
18281
18282
  return true;
18282
- if (asset.type == "tile" /* Tile */) {
18283
- for (const tm of this.getAssets("tilemap" /* Tilemap */)) {
18283
+ if (asset.type == "tile" /* pxt.AssetType.Tile */) {
18284
+ for (const tm of this.getAssets("tilemap" /* AssetType.Tilemap */)) {
18284
18285
  if ((skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(tm.id)) >= 0) {
18285
18286
  continue;
18286
18287
  }
@@ -18294,15 +18295,15 @@ var pxt;
18294
18295
  const displayName = pxt.Util.escapeForRegex((_c = asset.meta) === null || _c === void 0 ? void 0 : _c.displayName) || "";
18295
18296
  let assetTsRefs;
18296
18297
  switch (asset.type) {
18297
- case "tile" /* Tile */:
18298
+ case "tile" /* pxt.AssetType.Tile */:
18298
18299
  assetTsRefs = `myTiles.${shortId}|assets.tile\`${shortId}\``;
18299
18300
  if (displayName)
18300
18301
  assetTsRefs += `|assets.tile\`${displayName}\``;
18301
18302
  break;
18302
- case "tilemap" /* Tilemap */:
18303
+ case "tilemap" /* pxt.AssetType.Tilemap */:
18303
18304
  assetTsRefs = `tilemap\`${shortId}\``;
18304
18305
  break;
18305
- case "animation" /* Animation */:
18306
+ case "animation" /* pxt.AssetType.Animation */:
18306
18307
  assetTsRefs = `assets.animation\`${shortId}\``;
18307
18308
  if (displayName)
18308
18309
  assetTsRefs += `|assets.animation\`${displayName}\``;
@@ -18316,15 +18317,15 @@ var pxt;
18316
18317
  const assetTsRegex = new RegExp(assetTsRefs, "gm");
18317
18318
  let assetPyRefs;
18318
18319
  switch (asset.type) {
18319
- case "tile" /* Tile */:
18320
+ case "tile" /* pxt.AssetType.Tile */:
18320
18321
  assetPyRefs = `myTiles.${shortId}|assets.tile\("""${shortId}"""\)`;
18321
18322
  if (displayName)
18322
18323
  assetPyRefs += `|assets.tile\("""${displayName}"""\)`;
18323
18324
  break;
18324
- case "tilemap" /* Tilemap */:
18325
+ case "tilemap" /* pxt.AssetType.Tilemap */:
18325
18326
  assetPyRefs = `assets.tilemap\("""${shortId}"""\)`;
18326
18327
  break;
18327
- case "animation" /* Animation */:
18328
+ case "animation" /* pxt.AssetType.Animation */:
18328
18329
  assetPyRefs = `assets.animation\("""${shortId}"""\)`;
18329
18330
  if (displayName)
18330
18331
  assetPyRefs += `|assets.animation\("""${displayName}"""\)`;
@@ -18355,63 +18356,63 @@ var pxt;
18355
18356
  }
18356
18357
  lookupAsset(assetType, name) {
18357
18358
  switch (assetType) {
18358
- case "image" /* Image */:
18359
+ case "image" /* AssetType.Image */:
18359
18360
  return this.state.images.getByID(name) || this.gallery.images.getByID(name);
18360
- case "tile" /* Tile */:
18361
+ case "tile" /* AssetType.Tile */:
18361
18362
  return this.state.tiles.getByID(name) || this.gallery.tiles.getByID(name);
18362
- case "tilemap" /* Tilemap */:
18363
+ case "tilemap" /* AssetType.Tilemap */:
18363
18364
  return this.state.tilemaps.getByID(name) || this.gallery.tilemaps.getByID(name);
18364
- case "animation" /* Animation */:
18365
+ case "animation" /* AssetType.Animation */:
18365
18366
  return this.state.animations.getByID(name) || this.gallery.animations.getByID(name);
18366
18367
  }
18367
18368
  }
18368
18369
  lookupAssetByName(assetType, name) {
18369
18370
  switch (assetType) {
18370
- case "image" /* Image */:
18371
+ case "image" /* AssetType.Image */:
18371
18372
  return this.state.images.getByDisplayName(name);
18372
- case "tile" /* Tile */:
18373
+ case "tile" /* AssetType.Tile */:
18373
18374
  return this.state.tiles.getByDisplayName(name);
18374
- case "tilemap" /* Tilemap */:
18375
+ case "tilemap" /* AssetType.Tilemap */:
18375
18376
  return this.state.tilemaps.getByDisplayName(name);
18376
- case "animation" /* Animation */:
18377
+ case "animation" /* AssetType.Animation */:
18377
18378
  return this.state.animations.getByDisplayName(name);
18378
18379
  }
18379
18380
  }
18380
18381
  getAssets(type) {
18381
18382
  switch (type) {
18382
- case "image" /* Image */: return this.state.images.getSnapshot();
18383
- case "tile" /* Tile */: return this.state.tiles.getSnapshot();
18384
- case "tilemap" /* Tilemap */: return this.state.tilemaps.getSnapshot();
18385
- case "animation" /* Animation */: return this.state.animations.getSnapshot();
18383
+ case "image" /* AssetType.Image */: return this.state.images.getSnapshot();
18384
+ case "tile" /* AssetType.Tile */: return this.state.tiles.getSnapshot();
18385
+ case "tilemap" /* AssetType.Tilemap */: return this.state.tilemaps.getSnapshot();
18386
+ case "animation" /* AssetType.Animation */: return this.state.animations.getSnapshot();
18386
18387
  }
18387
18388
  }
18388
18389
  getGalleryAssets(type) {
18389
18390
  switch (type) {
18390
- case "image" /* Image */: return this.gallery.images.getSnapshot();
18391
- case "tile" /* Tile */: return this.gallery.tiles.getSnapshot();
18392
- case "tilemap" /* Tilemap */: return this.gallery.tilemaps.getSnapshot();
18393
- case "animation" /* Animation */: return this.gallery.animations.getSnapshot();
18391
+ case "image" /* AssetType.Image */: return this.gallery.images.getSnapshot();
18392
+ case "tile" /* AssetType.Tile */: return this.gallery.tiles.getSnapshot();
18393
+ case "tilemap" /* AssetType.Tilemap */: return this.gallery.tilemaps.getSnapshot();
18394
+ case "animation" /* AssetType.Animation */: return this.gallery.animations.getSnapshot();
18394
18395
  }
18395
18396
  }
18396
18397
  lookupBlockAsset(type, blockID) {
18397
18398
  let filter = (a) => { var _a, _b; return ((_b = (_a = a.meta) === null || _a === void 0 ? void 0 : _a.blockIDs) === null || _b === void 0 ? void 0 : _b.indexOf(blockID)) !== -1; };
18398
18399
  switch (type) {
18399
- case "image" /* Image */: return this.state.images.getSnapshot(filter)[0];
18400
- case "tile" /* Tile */: return this.state.tiles.getSnapshot(filter)[0];
18401
- case "tilemap" /* Tilemap */: return this.state.tilemaps.getSnapshot(filter)[0];
18402
- case "animation" /* Animation */: return this.state.animations.getSnapshot(filter)[0];
18400
+ case "image" /* AssetType.Image */: return this.state.images.getSnapshot(filter)[0];
18401
+ case "tile" /* AssetType.Tile */: return this.state.tiles.getSnapshot(filter)[0];
18402
+ case "tilemap" /* AssetType.Tilemap */: return this.state.tilemaps.getSnapshot(filter)[0];
18403
+ case "animation" /* AssetType.Animation */: return this.state.animations.getSnapshot(filter)[0];
18403
18404
  }
18404
18405
  }
18405
18406
  updateAsset(asset) {
18406
18407
  this.onChange();
18407
18408
  switch (asset.type) {
18408
- case "image" /* Image */:
18409
+ case "image" /* AssetType.Image */:
18409
18410
  return this.state.images.update(asset.id, asset);
18410
- case "tile" /* Tile */:
18411
+ case "tile" /* AssetType.Tile */:
18411
18412
  return this.updateTile(asset);
18412
- case "tilemap" /* Tilemap */:
18413
+ case "tilemap" /* AssetType.Tilemap */:
18413
18414
  return this.state.tilemaps.update(asset.id, asset);
18414
- case "animation" /* Animation */:
18415
+ case "animation" /* AssetType.Animation */:
18415
18416
  return this.state.animations.update(asset.id, asset);
18416
18417
  }
18417
18418
  }
@@ -18422,17 +18423,17 @@ var pxt;
18422
18423
  const name = displayName || ((_a = clone.meta) === null || _a === void 0 ? void 0 : _a.displayName);
18423
18424
  let newAsset;
18424
18425
  switch (asset.type) {
18425
- case "image" /* Image */:
18426
+ case "image" /* AssetType.Image */:
18426
18427
  newAsset = this.createNewProjectImage(clone.bitmap, name);
18427
18428
  break;
18428
- case "tile" /* Tile */:
18429
+ case "tile" /* AssetType.Tile */:
18429
18430
  newAsset = this.createNewTile(clone.bitmap, null, name);
18430
18431
  break;
18431
- case "tilemap" /* Tilemap */:
18432
+ case "tilemap" /* AssetType.Tilemap */:
18432
18433
  const [id, tilemap] = this.createNewTilemapFromData(clone.data, name);
18433
18434
  newAsset = this.getTilemap(id);
18434
18435
  break;
18435
- case "animation" /* Animation */:
18436
+ case "animation" /* AssetType.Animation */:
18436
18437
  newAsset = this.createNewAnimationFromData(clone.frames, clone.interval, name);
18437
18438
  }
18438
18439
  return newAsset;
@@ -18440,44 +18441,44 @@ var pxt;
18440
18441
  removeAsset(asset) {
18441
18442
  this.onChange();
18442
18443
  switch (asset.type) {
18443
- case "image" /* Image */:
18444
+ case "image" /* AssetType.Image */:
18444
18445
  return this.state.images.removeByID(asset.id);
18445
- case "tile" /* Tile */:
18446
+ case "tile" /* AssetType.Tile */:
18446
18447
  return this.state.tiles.removeByID(asset.id);
18447
- case "tilemap" /* Tilemap */:
18448
+ case "tilemap" /* AssetType.Tilemap */:
18448
18449
  return this.state.tilemaps.removeByID(asset.id);
18449
- case "animation" /* Animation */:
18450
+ case "animation" /* AssetType.Animation */:
18450
18451
  return this.state.animations.removeByID(asset.id);
18451
18452
  }
18452
18453
  }
18453
18454
  addChangeListener(asset, listener) {
18454
18455
  switch (asset.type) {
18455
- case "image" /* Image */:
18456
+ case "image" /* AssetType.Image */:
18456
18457
  this.state.images.addListener(asset.internalID, listener);
18457
18458
  break;
18458
- case "tile" /* Tile */:
18459
+ case "tile" /* AssetType.Tile */:
18459
18460
  this.state.tiles.addListener(asset.internalID, listener);
18460
18461
  break;
18461
- case "tilemap" /* Tilemap */:
18462
+ case "tilemap" /* AssetType.Tilemap */:
18462
18463
  this.state.tilemaps.addListener(asset.internalID, listener);
18463
18464
  break;
18464
- case "animation" /* Animation */:
18465
+ case "animation" /* AssetType.Animation */:
18465
18466
  this.state.animations.addListener(asset.internalID, listener);
18466
18467
  break;
18467
18468
  }
18468
18469
  }
18469
18470
  removeChangeListener(type, listener) {
18470
18471
  switch (type) {
18471
- case "image" /* Image */:
18472
+ case "image" /* AssetType.Image */:
18472
18473
  this.state.images.removeListener(listener);
18473
18474
  break;
18474
- case "tile" /* Tile */:
18475
+ case "tile" /* AssetType.Tile */:
18475
18476
  this.state.tiles.removeListener(listener);
18476
18477
  break;
18477
- case "tilemap" /* Tilemap */:
18478
+ case "tilemap" /* AssetType.Tilemap */:
18478
18479
  this.state.tilemaps.removeListener(listener);
18479
18480
  break;
18480
- case "animation" /* Animation */:
18481
+ case "animation" /* AssetType.Animation */:
18481
18482
  this.state.animations.removeListener(listener);
18482
18483
  break;
18483
18484
  }
@@ -18489,7 +18490,7 @@ var pxt;
18489
18490
  const isProject = dep.id === "this";
18490
18491
  const images = this.readImages(dep.parseJRes(), isProject);
18491
18492
  for (const image of images) {
18492
- if (image.type === "tile" /* Tile */) {
18493
+ if (image.type === "tile" /* AssetType.Tile */) {
18493
18494
  if (isProject) {
18494
18495
  this.state.tiles.add(image);
18495
18496
  }
@@ -18497,7 +18498,7 @@ var pxt;
18497
18498
  this.gallery.tiles.add(image);
18498
18499
  }
18499
18500
  }
18500
- else if (image.type === "image" /* Image */) {
18501
+ else if (image.type === "image" /* AssetType.Image */) {
18501
18502
  if (isProject) {
18502
18503
  this.state.images.add(image);
18503
18504
  }
@@ -18518,7 +18519,7 @@ var pxt;
18518
18519
  for (const tm of getTilemaps(pack.parseJRes())) {
18519
18520
  this.state.tilemaps.add({
18520
18521
  internalID: this.getNewInternalId(),
18521
- type: "tilemap" /* Tilemap */,
18522
+ type: "tilemap" /* AssetType.Tilemap */,
18522
18523
  id: tm.id,
18523
18524
  meta: {
18524
18525
  // For tilemaps, use the id as the display name for backwards compat
@@ -18533,7 +18534,7 @@ var pxt;
18533
18534
  }
18534
18535
  loadTilemapJRes(jres, skipDuplicates = false) {
18535
18536
  jres = pxt.inflateJRes(jres);
18536
- const tiles = this.readImages(jres, true).filter(im => im.type === "tile" /* Tile */);
18537
+ const tiles = this.readImages(jres, true).filter(im => im.type === "tile" /* pxt.AssetType.Tile */);
18537
18538
  // If we are loading JRES into an existing project (i.e. in multipart tutorials)
18538
18539
  // we need to correct the tile ids because the user may have created new tiles
18539
18540
  // and taken some of the ids that were used by the tutorial author
@@ -18554,7 +18555,7 @@ var pxt;
18554
18555
  for (const tm of getTilemaps(jres)) {
18555
18556
  this.state.tilemaps.add({
18556
18557
  internalID: this.getNewInternalId(),
18557
- type: "tilemap" /* Tilemap */,
18558
+ type: "tilemap" /* AssetType.Tilemap */,
18558
18559
  id: tm.id,
18559
18560
  meta: {
18560
18561
  // For tilemaps, use the id as the display name for backwards compat
@@ -18575,10 +18576,10 @@ var pxt;
18575
18576
  for (const key of Object.keys(jres)) {
18576
18577
  const entry = jres[key];
18577
18578
  if (entry.tilemapTile) {
18578
- this.state.tiles.add(this.generateImage(entry, "tile" /* Tile */));
18579
+ this.state.tiles.add(this.generateImage(entry, "tile" /* AssetType.Tile */));
18579
18580
  }
18580
18581
  else if (entry.mimeType === pxt.IMAGE_MIME_TYPE) {
18581
- this.state.images.add(this.generateImage(entry, "image" /* Image */));
18582
+ this.state.images.add(this.generateImage(entry, "image" /* AssetType.Image */));
18582
18583
  }
18583
18584
  else if (entry.mimeType === pxt.ANIMATION_MIME_TYPE) {
18584
18585
  const [animation, needsInflation] = this.generateAnimation(entry);
@@ -18639,7 +18640,7 @@ var pxt;
18639
18640
  }
18640
18641
  const anim = {
18641
18642
  internalID: this.getNewInternalId(),
18642
- type: "animation" /* Animation */,
18643
+ type: "animation" /* AssetType.Animation */,
18643
18644
  meta: {
18644
18645
  displayName: entry.displayName
18645
18646
  },
@@ -18673,14 +18674,14 @@ var pxt;
18673
18674
  }
18674
18675
  generateNewID(type) {
18675
18676
  switch (type) {
18676
- case "animation" /* Animation */:
18677
- return this.generateNewIDInternal("animation" /* Animation */, pxt.sprite.ANIMATION_PREFIX, pxt.sprite.ANIMATION_NAMESPACE);
18678
- case "image" /* Image */:
18679
- return this.generateNewIDInternal("image" /* Image */, pxt.sprite.IMAGE_PREFIX, pxt.sprite.IMAGES_NAMESPACE);
18680
- case "tile" /* Tile */:
18681
- return this.generateNewIDInternal("tile" /* Tile */, pxt.sprite.TILE_PREFIX, pxt.sprite.TILE_NAMESPACE);
18682
- case "tilemap" /* Tilemap */:
18683
- return this.generateNewIDInternal("tilemap" /* Tilemap */, lf("level"));
18677
+ case "animation" /* AssetType.Animation */:
18678
+ return this.generateNewIDInternal("animation" /* AssetType.Animation */, pxt.sprite.ANIMATION_PREFIX, pxt.sprite.ANIMATION_NAMESPACE);
18679
+ case "image" /* AssetType.Image */:
18680
+ return this.generateNewIDInternal("image" /* AssetType.Image */, pxt.sprite.IMAGE_PREFIX, pxt.sprite.IMAGES_NAMESPACE);
18681
+ case "tile" /* AssetType.Tile */:
18682
+ return this.generateNewIDInternal("tile" /* AssetType.Tile */, pxt.sprite.TILE_PREFIX, pxt.sprite.TILE_NAMESPACE);
18683
+ case "tilemap" /* AssetType.Tilemap */:
18684
+ return this.generateNewIDInternal("tilemap" /* AssetType.Tilemap */, lf("level"));
18684
18685
  }
18685
18686
  }
18686
18687
  generateNewIDInternal(type, varPrefix, namespaceString) {
@@ -18702,12 +18703,12 @@ var pxt;
18702
18703
  for (const key of Object.keys(allJRes)) {
18703
18704
  const entry = allJRes[key];
18704
18705
  if (entry.tilemapTile) {
18705
- const tile = this.generateImage(entry, "tile" /* Tile */);
18706
+ const tile = this.generateImage(entry, "tile" /* AssetType.Tile */);
18706
18707
  tile.isProjectTile = isProjectFile;
18707
18708
  assets.push(tile);
18708
18709
  }
18709
18710
  else if (entry.mimeType === pxt.IMAGE_MIME_TYPE) {
18710
- assets.push(this.generateImage(entry, "image" /* Image */));
18711
+ assets.push(this.generateImage(entry, "image" /* AssetType.Image */));
18711
18712
  }
18712
18713
  else if (entry.mimeType === pxt.ANIMATION_MIME_TYPE) {
18713
18714
  const [animation, needsInflation] = this.generateAnimation(entry);
@@ -18756,11 +18757,11 @@ var pxt;
18756
18757
  // FIXME: we should get the "image.ofBuffer" and blockIdentity from pxtarget probably
18757
18758
  out += `${indent}//% fixedInstance jres blockIdentity=images._tile\n`;
18758
18759
  out += `${indent}export const ${key} = image.ofBuffer(hex\`\`);\n`;
18759
- tileEntries.push({ keys: [entry.displayName, getShortIDCore("tile" /* Tile */, key, true)], expression: key });
18760
+ tileEntries.push({ keys: [entry.displayName, getShortIDCore("tile" /* AssetType.Tile */, key, true)], expression: key });
18760
18761
  }
18761
18762
  if (entry.mimeType === pxt.TILEMAP_MIME_TYPE) {
18762
18763
  const tm = decodeTilemap(entry);
18763
- tilemapEntries.push({ keys: [entry.displayName, getShortIDCore("tilemap" /* Tilemap */, entry.id)], expression: pxt.sprite.encodeTilemap(tm, "typescript") });
18764
+ tilemapEntries.push({ keys: [entry.displayName, getShortIDCore("tilemap" /* AssetType.Tilemap */, entry.id)], expression: pxt.sprite.encodeTilemap(tm, "typescript") });
18764
18765
  }
18765
18766
  }
18766
18767
  if (tilemapEntries.length) {
@@ -18784,7 +18785,7 @@ var pxt;
18784
18785
  const entry = jres[key];
18785
18786
  if (typeof entry === "string" || entry.mimeType === pxt.IMAGE_MIME_TYPE) {
18786
18787
  let expression;
18787
- let factoryKeys = [getShortIDCore("image" /* Image */, key, true)];
18788
+ let factoryKeys = [getShortIDCore("image" /* AssetType.Image */, key, true)];
18788
18789
  if (typeof entry === "string") {
18789
18790
  expression = pxt.sprite.bitmapToImageLiteral(pxt.sprite.getBitmapFromJResURL(entry), "typescript");
18790
18791
  }
@@ -18800,7 +18801,7 @@ var pxt;
18800
18801
  else if (entry.mimeType === pxt.ANIMATION_MIME_TYPE) {
18801
18802
  const animation = decodeAnimation(entry);
18802
18803
  animationEntries.push({
18803
- keys: [entry.displayName, getShortIDCore("animation" /* Animation */, key, true)],
18804
+ keys: [entry.displayName, getShortIDCore("animation" /* AssetType.Animation */, key, true)],
18804
18805
  expression: `[${animation.frames.map(f => pxt.sprite.bitmapToImageLiteral(pxt.sprite.Bitmap.fromData(f), "typescript")).join(", ")}]`
18805
18806
  });
18806
18807
  }
@@ -18844,12 +18845,12 @@ var pxt;
18844
18845
  function cloneAsset(asset) {
18845
18846
  asset.meta = Object.assign({}, asset.meta);
18846
18847
  switch (asset.type) {
18847
- case "tile" /* Tile */:
18848
- case "image" /* Image */:
18848
+ case "tile" /* AssetType.Tile */:
18849
+ case "image" /* AssetType.Image */:
18849
18850
  return Object.assign(Object.assign({}, asset), { bitmap: cloneBitmap(asset.bitmap) });
18850
- case "animation" /* Animation */:
18851
+ case "animation" /* AssetType.Animation */:
18851
18852
  return Object.assign(Object.assign({}, asset), { frames: asset.frames.map(frame => cloneBitmap(frame)) });
18852
- case "tilemap" /* Tilemap */:
18853
+ case "tilemap" /* AssetType.Tilemap */:
18853
18854
  return Object.assign(Object.assign({}, asset), { data: asset.data.cloneData() });
18854
18855
  }
18855
18856
  }
@@ -18858,7 +18859,7 @@ var pxt;
18858
18859
  // Get the last part of the fully qualified name
18859
18860
  const id = asset.id.substr(asset.id.lastIndexOf(".") + 1);
18860
18861
  switch (asset.type) {
18861
- case "image" /* Image */:
18862
+ case "image" /* AssetType.Image */:
18862
18863
  allJRes[id] = asset.jresData;
18863
18864
  if (asset.meta.displayName) {
18864
18865
  allJRes[id] = {
@@ -18868,7 +18869,7 @@ var pxt;
18868
18869
  };
18869
18870
  }
18870
18871
  break;
18871
- case "tile" /* Tile */:
18872
+ case "tile" /* AssetType.Tile */:
18872
18873
  allJRes[id] = {
18873
18874
  data: asset.jresData,
18874
18875
  mimeType: pxt.IMAGE_MIME_TYPE,
@@ -18876,12 +18877,12 @@ var pxt;
18876
18877
  displayName: asset.meta.displayName
18877
18878
  };
18878
18879
  break;
18879
- case "tilemap" /* Tilemap */:
18880
+ case "tilemap" /* AssetType.Tilemap */:
18880
18881
  // we include the full ID for tilemaps
18881
18882
  const serialized = serializeTilemap(asset.data, asset.id, asset.meta.displayName);
18882
18883
  allJRes[serialized.id] = serialized;
18883
18884
  break;
18884
- case "animation" /* Animation */:
18885
+ case "animation" /* AssetType.Animation */:
18885
18886
  allJRes[id] = serializeAnimation(asset);
18886
18887
  break;
18887
18888
  }
@@ -18895,13 +18896,13 @@ var pxt;
18895
18896
  a.meta.displayName !== b.meta.displayName)
18896
18897
  return false;
18897
18898
  switch (a.type) {
18898
- case "image" /* Image */:
18899
- case "tile" /* Tile */:
18899
+ case "image" /* AssetType.Image */:
18900
+ case "tile" /* AssetType.Tile */:
18900
18901
  return pxt.sprite.bitmapEquals(a.bitmap, b.bitmap);
18901
- case "animation" /* Animation */:
18902
+ case "animation" /* AssetType.Animation */:
18902
18903
  const bAnimation = b;
18903
18904
  return a.interval === bAnimation.interval && pxt.U.arrayEquals(a.frames, bAnimation.frames, pxt.sprite.bitmapEquals);
18904
- case "tilemap" /* Tilemap */:
18905
+ case "tilemap" /* AssetType.Tilemap */:
18905
18906
  return a.data.equals(b.data);
18906
18907
  }
18907
18908
  }
@@ -18925,7 +18926,7 @@ var pxt;
18925
18926
  shortId = getShortIDForAsset(asset);
18926
18927
  }
18927
18928
  if (!shortId) {
18928
- if (asset.type === "image" /* Image */ || asset.type === "tile" /* Tile */) {
18929
+ if (asset.type === "image" /* pxt.AssetType.Image */ || asset.type === "tile" /* pxt.AssetType.Tile */) {
18929
18930
  // Use the qualified name
18930
18931
  return asset.id;
18931
18932
  }
@@ -18934,13 +18935,13 @@ var pxt;
18934
18935
  const leftTick = isPython ? `("""` : "`";
18935
18936
  const rightTick = isPython ? `""")` : "`";
18936
18937
  switch (asset.type) {
18937
- case "tile" /* Tile */:
18938
+ case "tile" /* AssetType.Tile */:
18938
18939
  return `assets.tile${leftTick}${shortId}${rightTick}`;
18939
- case "image" /* Image */:
18940
+ case "image" /* AssetType.Image */:
18940
18941
  return `assets.image${leftTick}${shortId}${rightTick}`;
18941
- case "animation" /* Animation */:
18942
+ case "animation" /* AssetType.Animation */:
18942
18943
  return `assets.animation${leftTick}${shortId}${rightTick}`;
18943
- case "tilemap" /* Tilemap */:
18944
+ case "tilemap" /* AssetType.Tilemap */:
18944
18945
  return `tilemap${leftTick}${shortId}${rightTick}`;
18945
18946
  }
18946
18947
  }
@@ -18963,13 +18964,13 @@ var pxt;
18963
18964
  const { type, name } = match;
18964
18965
  switch (type) {
18965
18966
  case "tile":
18966
- return project.lookupAssetByName("tile" /* Tile */, name);
18967
+ return project.lookupAssetByName("tile" /* AssetType.Tile */, name);
18967
18968
  case "image":
18968
- return project.lookupAssetByName("image" /* Image */, name);
18969
+ return project.lookupAssetByName("image" /* AssetType.Image */, name);
18969
18970
  case "tilemap":
18970
- return project.lookupAssetByName("tilemap" /* Tilemap */, name) || project.lookupAsset("tilemap" /* Tilemap */, name);
18971
+ return project.lookupAssetByName("tilemap" /* AssetType.Tilemap */, name) || project.lookupAsset("tilemap" /* AssetType.Tilemap */, name);
18971
18972
  case "animation":
18972
- return project.lookupAssetByName("animation" /* Animation */, name);
18973
+ return project.lookupAssetByName("animation" /* AssetType.Animation */, name);
18973
18974
  }
18974
18975
  }
18975
18976
  return undefined;
@@ -18977,13 +18978,13 @@ var pxt;
18977
18978
  pxt.lookupProjectAssetByTSReference = lookupProjectAssetByTSReference;
18978
18979
  function getDefaultAssetDisplayName(type) {
18979
18980
  switch (type) {
18980
- case "image" /* Image */:
18981
+ case "image" /* pxt.AssetType.Image */:
18981
18982
  return lf("myImage");
18982
- case "tile" /* Tile */:
18983
+ case "tile" /* pxt.AssetType.Tile */:
18983
18984
  return lf("myTile");
18984
- case "tilemap" /* Tilemap */:
18985
+ case "tilemap" /* pxt.AssetType.Tilemap */:
18985
18986
  return lf("level");
18986
- case "animation" /* Animation */:
18987
+ case "animation" /* pxt.AssetType.Animation */:
18987
18988
  return lf("myAnim");
18988
18989
  default:
18989
18990
  return lf("asset");
@@ -18997,16 +18998,16 @@ var pxt;
18997
18998
  function getShortIDCore(assetType, id, allowNoPrefix = false) {
18998
18999
  let prefix;
18999
19000
  switch (assetType) {
19000
- case "image" /* Image */:
19001
+ case "image" /* AssetType.Image */:
19001
19002
  prefix = pxt.sprite.IMAGES_NAMESPACE + ".";
19002
19003
  break;
19003
- case "tile" /* Tile */:
19004
+ case "tile" /* AssetType.Tile */:
19004
19005
  prefix = pxt.sprite.TILE_NAMESPACE + ".";
19005
19006
  break;
19006
- case "tilemap" /* Tilemap */:
19007
+ case "tilemap" /* AssetType.Tilemap */:
19007
19008
  prefix = "";
19008
19009
  break;
19009
- case "animation" /* Animation */:
19010
+ case "animation" /* AssetType.Animation */:
19010
19011
  prefix = pxt.sprite.ANIMATION_NAMESPACE + ".";
19011
19012
  break;
19012
19013
  }
@@ -19076,7 +19077,7 @@ var pxt;
19076
19077
  id = id.replace(/\.\./g, ".");
19077
19078
  }
19078
19079
  return {
19079
- type: "animation" /* Animation */,
19080
+ type: "animation" /* AssetType.Animation */,
19080
19081
  internalID: 0,
19081
19082
  id: id,
19082
19083
  interval,
@@ -20009,15 +20010,15 @@ var ts;
20009
20010
  ScriptTarget[ScriptTarget["Latest"] = 2] = "Latest";
20010
20011
  })(ScriptTarget = pxtc.ScriptTarget || (pxtc.ScriptTarget = {}));
20011
20012
  function isIdentifierStart(ch, languageVersion) {
20012
- return ch >= 65 /* A */ && ch <= 90 /* Z */ || ch >= 97 /* a */ && ch <= 122 /* z */ ||
20013
- ch === 36 /* $ */ || ch === 95 /* _ */ ||
20014
- ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierStart(ch, languageVersion);
20013
+ return ch >= 65 /* CharacterCodes.A */ && ch <= 90 /* CharacterCodes.Z */ || ch >= 97 /* CharacterCodes.a */ && ch <= 122 /* CharacterCodes.z */ ||
20014
+ ch === 36 /* CharacterCodes.$ */ || ch === 95 /* CharacterCodes._ */ ||
20015
+ ch > 127 /* CharacterCodes.maxAsciiCharacter */ && isUnicodeIdentifierStart(ch, languageVersion);
20015
20016
  }
20016
20017
  pxtc.isIdentifierStart = isIdentifierStart;
20017
20018
  function isIdentifierPart(ch, languageVersion) {
20018
- return ch >= 65 /* A */ && ch <= 90 /* Z */ || ch >= 97 /* a */ && ch <= 122 /* z */ ||
20019
- ch >= 48 /* _0 */ && ch <= 57 /* _9 */ || ch === 36 /* $ */ || ch === 95 /* _ */ ||
20020
- ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierPart(ch, languageVersion);
20019
+ return ch >= 65 /* CharacterCodes.A */ && ch <= 90 /* CharacterCodes.Z */ || ch >= 97 /* CharacterCodes.a */ && ch <= 122 /* CharacterCodes.z */ ||
20020
+ ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */ || ch === 36 /* CharacterCodes.$ */ || ch === 95 /* CharacterCodes._ */ ||
20021
+ ch > 127 /* CharacterCodes.maxAsciiCharacter */ && isUnicodeIdentifierPart(ch, languageVersion);
20021
20022
  }
20022
20023
  pxtc.isIdentifierPart = isIdentifierPart;
20023
20024
  pxtc.reservedWords = ["abstract", "any", "as", "break",