@trops/dash-core 0.1.366 → 0.1.367

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
@@ -8828,7 +8828,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
8828
8828
  var hasPropertyDescriptors_1 = hasPropertyDescriptors;
8829
8829
 
8830
8830
  var keys = objectKeys$2;
8831
- var hasSymbols$4 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
8831
+ var hasSymbols$5 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
8832
8832
 
8833
8833
  var toStr$4 = Object.prototype.toString;
8834
8834
  var concat = Array.prototype.concat;
@@ -8861,7 +8861,7 @@ var defineProperty$1 = function (object, name, value, predicate) {
8861
8861
  var defineProperties$1 = function (object, map) {
8862
8862
  var predicates = arguments.length > 2 ? arguments[2] : {};
8863
8863
  var props = keys(map);
8864
- if (hasSymbols$4) {
8864
+ if (hasSymbols$5) {
8865
8865
  props = concat.call(props, Object.getOwnPropertySymbols(map));
8866
8866
  }
8867
8867
  for (var i = 0; i < props.length; i += 1) {
@@ -8927,11 +8927,11 @@ var sign$1 = function sign(number) {
8927
8927
  };
8928
8928
 
8929
8929
  var shams$1;
8930
- var hasRequiredShams$1;
8930
+ var hasRequiredShams;
8931
8931
 
8932
- function requireShams$1 () {
8933
- if (hasRequiredShams$1) return shams$1;
8934
- hasRequiredShams$1 = 1;
8932
+ function requireShams () {
8933
+ if (hasRequiredShams) return shams$1;
8934
+ hasRequiredShams = 1;
8935
8935
 
8936
8936
  /** @type {import('./shams')} */
8937
8937
  /* eslint complexity: [2, 18], max-statements: [2, 33] */
@@ -8980,10 +8980,10 @@ function requireShams$1 () {
8980
8980
  }
8981
8981
 
8982
8982
  var origSymbol = typeof Symbol !== 'undefined' && Symbol;
8983
- var hasSymbolSham = requireShams$1();
8983
+ var hasSymbolSham = requireShams();
8984
8984
 
8985
8985
  /** @type {import('.')} */
8986
- var hasSymbols$3 = function hasNativeSymbols() {
8986
+ var hasSymbols$4 = function hasNativeSymbols() {
8987
8987
  if (typeof origSymbol !== 'function') { return false; }
8988
8988
  if (typeof Symbol !== 'function') { return false; }
8989
8989
  if (typeof origSymbol('foo') !== 'symbol') { return false; }
@@ -9287,7 +9287,7 @@ var ThrowTypeError = $gOPD$1
9287
9287
  }())
9288
9288
  : throwTypeError;
9289
9289
 
9290
- var hasSymbols$2 = hasSymbols$3();
9290
+ var hasSymbols$3 = hasSymbols$4();
9291
9291
 
9292
9292
  var getProto$2 = getProto$3;
9293
9293
  var $ObjectGPO = requireObject_getPrototypeOf();
@@ -9305,7 +9305,7 @@ var INTRINSICS = {
9305
9305
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
9306
9306
  '%Array%': Array,
9307
9307
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
9308
- '%ArrayIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
9308
+ '%ArrayIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
9309
9309
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
9310
9310
  '%AsyncFunction%': needsEval,
9311
9311
  '%AsyncGenerator%': needsEval,
@@ -9336,10 +9336,10 @@ var INTRINSICS = {
9336
9336
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
9337
9337
  '%isFinite%': isFinite,
9338
9338
  '%isNaN%': isNaN,
9339
- '%IteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
9339
+ '%IteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
9340
9340
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
9341
9341
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
9342
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
9342
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
9343
9343
  '%Math%': Math,
9344
9344
  '%Number%': Number,
9345
9345
  '%Object%': $Object$2,
@@ -9353,11 +9353,11 @@ var INTRINSICS = {
9353
9353
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
9354
9354
  '%RegExp%': RegExp,
9355
9355
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
9356
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
9356
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
9357
9357
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
9358
9358
  '%String%': String,
9359
- '%StringIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
9360
- '%Symbol%': hasSymbols$2 ? Symbol : undefined$1,
9359
+ '%StringIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
9360
+ '%Symbol%': hasSymbols$3 ? Symbol : undefined$1,
9361
9361
  '%SyntaxError%': $SyntaxError$1,
9362
9362
  '%ThrowTypeError%': ThrowTypeError,
9363
9363
  '%TypedArray%': TypedArray,
@@ -9710,12 +9710,12 @@ var callBound$i = function callBoundIntrinsic(name, allowMissing) {
9710
9710
 
9711
9711
  // modified from https://github.com/es-shims/es6-shim
9712
9712
  var objectKeys$1 = objectKeys$2;
9713
- var hasSymbols$1 = requireShams$1()();
9713
+ var hasSymbols$2 = requireShams()();
9714
9714
  var callBound$h = callBound$i;
9715
9715
  var $Object$1 = esObjectAtoms;
9716
9716
  var $push = callBound$h('Array.prototype.push');
9717
9717
  var $propIsEnumerable = callBound$h('Object.prototype.propertyIsEnumerable');
9718
- var originalGetSymbols = hasSymbols$1 ? $Object$1.getOwnPropertySymbols : null;
9718
+ var originalGetSymbols = hasSymbols$2 ? $Object$1.getOwnPropertySymbols : null;
9719
9719
 
9720
9720
  // eslint-disable-next-line no-unused-vars
9721
9721
  var implementation$8 = function assign(target, source1) {
@@ -9729,7 +9729,7 @@ var implementation$8 = function assign(target, source1) {
9729
9729
 
9730
9730
  // step 3.a.ii:
9731
9731
  var keys = objectKeys$1(from);
9732
- var getSymbols = hasSymbols$1 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
9732
+ var getSymbols = hasSymbols$2 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
9733
9733
  if (getSymbols) {
9734
9734
  var syms = getSymbols(from);
9735
9735
  for (var j = 0; j < syms.length; ++j) {
@@ -10026,23 +10026,14 @@ var regexp_prototype_flags = flagsBound;
10026
10026
 
10027
10027
  var esGetIterator = {exports: {}};
10028
10028
 
10029
- var shams;
10030
- var hasRequiredShams;
10031
-
10032
- function requireShams () {
10033
- if (hasRequiredShams) return shams;
10034
- hasRequiredShams = 1;
10029
+ var hasSymbols$1 = requireShams();
10035
10030
 
10036
- var hasSymbols = requireShams$1();
10037
-
10038
- /** @type {import('.')} */
10039
- shams = function hasToStringTagShams() {
10040
- return hasSymbols() && !!Symbol.toStringTag;
10041
- };
10042
- return shams;
10043
- }
10031
+ /** @type {import('.')} */
10032
+ var shams = function hasToStringTagShams() {
10033
+ return hasSymbols$1() && !!Symbol.toStringTag;
10034
+ };
10044
10035
 
10045
- var hasToStringTag$7 = requireShams()();
10036
+ var hasToStringTag$7 = shams();
10046
10037
  var callBound$f = callBound$i;
10047
10038
 
10048
10039
  var $toString$7 = callBound$f('Object.prototype.toString');
@@ -11079,7 +11070,7 @@ var tryStringObject = function tryStringObject(value) {
11079
11070
  /** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */
11080
11071
  var $toString$6 = callBound$c('Object.prototype.toString');
11081
11072
  var strClass = '[object String]';
11082
- var hasToStringTag$6 = requireShams()();
11073
+ var hasToStringTag$6 = shams();
11083
11074
 
11084
11075
  /** @type {import('.')} */
11085
11076
  var isString$2 = function isString(value) {
@@ -11195,7 +11186,7 @@ var isSet$2 = exported$1 || function isSet(x) {
11195
11186
  var isArguments$1 = isArguments$2;
11196
11187
  var getStopIterationIterator = stopIterationIterator;
11197
11188
 
11198
- if (hasSymbols$3() || requireShams$1()()) {
11189
+ if (hasSymbols$4() || requireShams()()) {
11199
11190
  var $iterator = Symbol.iterator;
11200
11191
  // Symbol is available natively or shammed
11201
11192
  // natively:
@@ -11484,7 +11475,7 @@ var tryDateObject = function tryDateGetDayCall(value) {
11484
11475
  /** @type {(value: unknown) => string} */
11485
11476
  var toStr$2 = callBound$9('Object.prototype.toString');
11486
11477
  var dateClass = '[object Date]';
11487
- var hasToStringTag$5 = requireShams()();
11478
+ var hasToStringTag$5 = shams();
11488
11479
 
11489
11480
  /** @type {import('.')} */
11490
11481
  var isDateObject = function isDateObject(value) {
@@ -11495,7 +11486,7 @@ var isDateObject = function isDateObject(value) {
11495
11486
  };
11496
11487
 
11497
11488
  var callBound$8 = callBound$i;
11498
- var hasToStringTag$4 = requireShams()();
11489
+ var hasToStringTag$4 = shams();
11499
11490
  var hasOwn = hasown;
11500
11491
  var gOPD$1 = gopd$1;
11501
11492
 
@@ -11600,7 +11591,7 @@ var tryNumberObject = function tryNumberObject(value) {
11600
11591
  };
11601
11592
  var $toString$3 = callBound$6('Object.prototype.toString');
11602
11593
  var numClass = '[object Number]';
11603
- var hasToStringTag$3 = requireShams()();
11594
+ var hasToStringTag$3 = shams();
11604
11595
 
11605
11596
  /** @type {import('.')} */
11606
11597
  var isNumberObject = function isNumberObject(value) {
@@ -11627,7 +11618,7 @@ var tryBooleanObject = function booleanBrandCheck(value) {
11627
11618
  }
11628
11619
  };
11629
11620
  var boolClass = '[object Boolean]';
11630
- var hasToStringTag$2 = requireShams()();
11621
+ var hasToStringTag$2 = shams();
11631
11622
 
11632
11623
  /** @type {import('.')} */
11633
11624
  var isBooleanObject = function isBoolean(value) {
@@ -11669,7 +11660,7 @@ function requireSafeRegexTest () {
11669
11660
 
11670
11661
  var callBound$4 = callBound$i;
11671
11662
  var $toString$1 = callBound$4('Object.prototype.toString');
11672
- var hasSymbols = hasSymbols$3();
11663
+ var hasSymbols = hasSymbols$4();
11673
11664
  var safeRegexTest = requireSafeRegexTest();
11674
11665
 
11675
11666
  if (hasSymbols) {
@@ -12115,7 +12106,7 @@ var gOPD = gopd$1;
12115
12106
  var getProto = getProto$3;
12116
12107
 
12117
12108
  var $toString = callBound$2('Object.prototype.toString');
12118
- var hasToStringTag = requireShams()();
12109
+ var hasToStringTag = shams();
12119
12110
 
12120
12111
  var g = typeof globalThis === 'undefined' ? commonjsGlobal : globalThis;
12121
12112
  var typedArrays = availableTypedArrays();
@@ -38845,8 +38836,29 @@ var BUMP_OPTIONS$1 = [{
38845
38836
  label: "Keep current version"
38846
38837
  }];
38847
38838
 
38839
+ // Parse "@scope/name" → { scope, packageName }. Returns empty strings
38840
+ // for unscoped names so callers can use the || fallback chain.
38841
+ function parseScopeAndName(sourcePackage) {
38842
+ if (!sourcePackage) return {
38843
+ scope: "",
38844
+ packageName: ""
38845
+ };
38846
+ var m = sourcePackage.match(/^@([^/]+)\/(.+)$/);
38847
+ if (m) return {
38848
+ scope: m[1],
38849
+ packageName: m[2]
38850
+ };
38851
+ return {
38852
+ scope: "",
38853
+ packageName: sourcePackage
38854
+ };
38855
+ }
38856
+
38848
38857
  // Pulled out as a small helper so the Dependencies loader and the
38849
- // dashboard publish call share the same shape.
38858
+ // dashboard publish call share the same shape. Widgets registered from
38859
+ // a package (via `_sourcePackage`) inherit scope + packageName from that
38860
+ // package ID — otherwise the main-process resolver has no way to map a
38861
+ // bare component name to its owning package.
38850
38862
  function collectComponentConfigs() {
38851
38863
  var configMap = ComponentManager.componentMap();
38852
38864
  var componentConfigs = {};
@@ -38854,13 +38866,15 @@ function collectComponentConfigs() {
38854
38866
  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
38855
38867
  key = _Object$entries$_i[0],
38856
38868
  config = _Object$entries$_i[1];
38857
- if (config && (config.id || config.scope || config.packageName)) {
38858
- componentConfigs[config.name || key] = {
38859
- id: config.id || null,
38860
- scope: config.scope || "",
38861
- packageName: config.packageName || ""
38862
- };
38863
- }
38869
+ if (!config || config.type !== "widget") continue;
38870
+ var hasExplicit = config.id || config.scope || config.packageName || config._sourcePackage;
38871
+ if (!hasExplicit) continue;
38872
+ var parsed = parseScopeAndName(config._sourcePackage);
38873
+ componentConfigs[config.name || key] = {
38874
+ id: config.id || null,
38875
+ scope: config.scope || parsed.scope || "",
38876
+ packageName: config.packageName || parsed.packageName || ""
38877
+ };
38864
38878
  }
38865
38879
  return componentConfigs;
38866
38880
  }
@@ -39182,7 +39196,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39182
39196
  }
39183
39197
  function _handlePublish() {
39184
39198
  _handlePublish = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
39185
- var steps, _iterator2, _step2, w, _key2, _sel, key, sel, updateStep, i, _step3, _res$manifest, bump, options, res, _res, _options, _res2, _t2, _t3;
39199
+ var steps, seenPackages, _iterator2, _step2, w, _key2, _sel, key, sel, updateStep, i, _step3, _res$manifest, bump, options, res, _res, _options, _res2, _t2, _t3;
39186
39200
  return _regeneratorRuntime.wrap(function (_context2) {
39187
39201
  while (1) switch (_context2.prev = _context2.next) {
39188
39202
  case 0:
@@ -39195,19 +39209,21 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39195
39209
  setIsPublishing(true);
39196
39210
  setResult(null);
39197
39211
 
39198
- // Build the ordered step list: each selected owned widget → theme → dashboard.
39199
- // Third-party deps aren't published (they're just referenced by the manifest).
39212
+ // Build the ordered step list: one step per unique widget package,
39213
+ // then theme, then the dashboard itself. Third-party deps aren't
39214
+ // published — they're just referenced by the manifest.
39200
39215
  steps = [];
39201
39216
  if (!plan) {
39202
- _context2.next = 11;
39217
+ _context2.next = 12;
39203
39218
  break;
39204
39219
  }
39220
+ seenPackages = new Set();
39205
39221
  _iterator2 = _createForOfIteratorHelper$9(plan.widgets || []);
39206
39222
  _context2.prev = 2;
39207
39223
  _iterator2.s();
39208
39224
  case 3:
39209
39225
  if ((_step2 = _iterator2.n()).done) {
39210
- _context2.next = 7;
39226
+ _context2.next = 8;
39211
39227
  break;
39212
39228
  }
39213
39229
  w = _step2.value;
@@ -39215,16 +39231,23 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39215
39231
  _context2.next = 4;
39216
39232
  break;
39217
39233
  }
39218
- return _context2.abrupt("continue", 6);
39234
+ return _context2.abrupt("continue", 7);
39219
39235
  case 4:
39220
39236
  _key2 = "".concat(w.scope, "/").concat(w.packageName);
39221
- _sel = depSelections[_key2];
39222
- if (!(!_sel || !_sel.owned || !_sel.include)) {
39237
+ if (!seenPackages.has(_key2)) {
39223
39238
  _context2.next = 5;
39224
39239
  break;
39225
39240
  }
39226
- return _context2.abrupt("continue", 6);
39241
+ return _context2.abrupt("continue", 7);
39227
39242
  case 5:
39243
+ _sel = depSelections[_key2];
39244
+ if (!(!_sel || !_sel.owned || !_sel.include)) {
39245
+ _context2.next = 6;
39246
+ break;
39247
+ }
39248
+ return _context2.abrupt("continue", 7);
39249
+ case 6:
39250
+ seenPackages.add(_key2);
39228
39251
  steps.push({
39229
39252
  kind: "widget",
39230
39253
  key: _key2,
@@ -39232,21 +39255,21 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39232
39255
  packageId: w.packageId || "".concat(w.scope, "/").concat(w.packageName),
39233
39256
  selection: _sel
39234
39257
  });
39235
- case 6:
39236
- _context2.next = 3;
39237
- break;
39238
39258
  case 7:
39239
- _context2.next = 9;
39259
+ _context2.next = 3;
39240
39260
  break;
39241
39261
  case 8:
39242
- _context2.prev = 8;
39243
- _t2 = _context2["catch"](2);
39244
- _iterator2.e(_t2);
39262
+ _context2.next = 10;
39263
+ break;
39245
39264
  case 9:
39246
39265
  _context2.prev = 9;
39247
- _iterator2.f();
39248
- return _context2.finish(9);
39266
+ _t2 = _context2["catch"](2);
39267
+ _iterator2.e(_t2);
39249
39268
  case 10:
39269
+ _context2.prev = 10;
39270
+ _iterator2.f();
39271
+ return _context2.finish(10);
39272
+ case 11:
39250
39273
  if (plan.theme && plan.theme.scope && plan.theme.name) {
39251
39274
  key = "".concat(plan.theme.scope, "/").concat(plan.theme.name);
39252
39275
  sel = depSelections[key];
@@ -39260,7 +39283,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39260
39283
  });
39261
39284
  }
39262
39285
  }
39263
- case 11:
39286
+ case 12:
39264
39287
  steps.push({
39265
39288
  kind: "dashboard",
39266
39289
  key: "dashboard",
@@ -39281,11 +39304,11 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39281
39304
  return next;
39282
39305
  });
39283
39306
  };
39284
- _context2.prev = 12;
39307
+ _context2.prev = 13;
39285
39308
  i = 0;
39286
- case 13:
39309
+ case 14:
39287
39310
  if (!(i < steps.length)) {
39288
- _context2.next = 23;
39311
+ _context2.next = 24;
39289
39312
  break;
39290
39313
  }
39291
39314
  _step3 = steps[i];
@@ -39293,7 +39316,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39293
39316
  status: "running"
39294
39317
  });
39295
39318
  if (!(_step3.kind === "widget")) {
39296
- _context2.next = 16;
39319
+ _context2.next = 17;
39297
39320
  break;
39298
39321
  }
39299
39322
  bump = _step3.selection.bump;
@@ -39302,12 +39325,12 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39302
39325
  } : {}), {}, {
39303
39326
  visibility: _step3.selection.visibility
39304
39327
  });
39305
- _context2.next = 14;
39328
+ _context2.next = 15;
39306
39329
  return window.mainApi.registry.publishWidget(appId, _step3.packageId, options);
39307
- case 14:
39330
+ case 15:
39308
39331
  res = _context2.sent;
39309
39332
  if (res !== null && res !== void 0 && res.success) {
39310
- _context2.next = 15;
39333
+ _context2.next = 16;
39311
39334
  break;
39312
39335
  }
39313
39336
  updateStep(i, {
@@ -39320,26 +39343,26 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39320
39343
  });
39321
39344
  setIsPublishing(false);
39322
39345
  return _context2.abrupt("return");
39323
- case 15:
39346
+ case 16:
39324
39347
  updateStep(i, {
39325
39348
  status: "complete",
39326
39349
  message: "v".concat(res.newVersion || ((_res$manifest = res.manifest) === null || _res$manifest === void 0 ? void 0 : _res$manifest.version))
39327
39350
  });
39328
- _context2.next = 22;
39351
+ _context2.next = 23;
39329
39352
  break;
39330
- case 16:
39353
+ case 17:
39331
39354
  if (!(_step3.kind === "theme")) {
39332
- _context2.next = 19;
39355
+ _context2.next = 20;
39333
39356
  break;
39334
39357
  }
39335
- _context2.next = 17;
39358
+ _context2.next = 18;
39336
39359
  return window.mainApi.themes.publishTheme(appId, _step3.themeKey, {
39337
39360
  visibility: _step3.selection.visibility
39338
39361
  });
39339
- case 17:
39362
+ case 18:
39340
39363
  _res = _context2.sent;
39341
39364
  if (_res !== null && _res !== void 0 && _res.success) {
39342
- _context2.next = 18;
39365
+ _context2.next = 19;
39343
39366
  break;
39344
39367
  }
39345
39368
  updateStep(i, {
@@ -39352,16 +39375,16 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39352
39375
  });
39353
39376
  setIsPublishing(false);
39354
39377
  return _context2.abrupt("return");
39355
- case 18:
39378
+ case 19:
39356
39379
  updateStep(i, {
39357
39380
  status: "complete",
39358
39381
  message: "published"
39359
39382
  });
39360
- _context2.next = 22;
39383
+ _context2.next = 23;
39361
39384
  break;
39362
- case 19:
39385
+ case 20:
39363
39386
  if (!(_step3.kind === "dashboard")) {
39364
- _context2.next = 22;
39387
+ _context2.next = 23;
39365
39388
  break;
39366
39389
  }
39367
39390
  _options = {
@@ -39372,12 +39395,12 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39372
39395
  visibility: visibility,
39373
39396
  componentConfigs: collectComponentConfigs()
39374
39397
  };
39375
- _context2.next = 20;
39398
+ _context2.next = 21;
39376
39399
  return window.mainApi.dashboardConfig.prepareDashboardForPublish(appId, workspaceId, _options);
39377
- case 20:
39400
+ case 21:
39378
39401
  _res2 = _context2.sent;
39379
39402
  if (_res2 !== null && _res2 !== void 0 && _res2.success) {
39380
- _context2.next = 21;
39403
+ _context2.next = 22;
39381
39404
  break;
39382
39405
  }
39383
39406
  updateStep(i, {
@@ -39390,35 +39413,35 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39390
39413
  });
39391
39414
  setIsPublishing(false);
39392
39415
  return _context2.abrupt("return");
39393
- case 21:
39416
+ case 22:
39394
39417
  updateStep(i, {
39395
39418
  status: "complete",
39396
39419
  message: "published"
39397
39420
  });
39398
39421
  setResult(_res2);
39399
- case 22:
39400
- i++;
39401
- _context2.next = 13;
39402
- break;
39403
39422
  case 23:
39404
- _context2.next = 25;
39423
+ i++;
39424
+ _context2.next = 14;
39405
39425
  break;
39406
39426
  case 24:
39407
- _context2.prev = 24;
39408
- _t3 = _context2["catch"](12);
39427
+ _context2.next = 26;
39428
+ break;
39429
+ case 25:
39430
+ _context2.prev = 25;
39431
+ _t3 = _context2["catch"](13);
39409
39432
  setResult({
39410
39433
  success: false,
39411
39434
  error: _t3.message || "Failed to prepare dashboard for publish."
39412
39435
  });
39413
- case 25:
39414
- _context2.prev = 25;
39415
- setIsPublishing(false);
39416
- return _context2.finish(25);
39417
39436
  case 26:
39437
+ _context2.prev = 26;
39438
+ setIsPublishing(false);
39439
+ return _context2.finish(26);
39440
+ case 27:
39418
39441
  case "end":
39419
39442
  return _context2.stop();
39420
39443
  }
39421
- }, _callee2, null, [[2, 8, 9, 10], [12, 24, 25, 26]]);
39444
+ }, _callee2, null, [[2, 9, 10, 11], [13, 25, 26, 27]]);
39422
39445
  }));
39423
39446
  return _handlePublish.apply(this, arguments);
39424
39447
  }
@@ -40056,7 +40079,10 @@ function DependencyTable(_ref4) {
40056
40079
  var plan = _ref4.plan,
40057
40080
  selections = _ref4.selections,
40058
40081
  _onChange = _ref4.onChange;
40059
- var rows = [];
40082
+ // Dedupe: multiple widgets from the same package collapse into a single
40083
+ // row. Each row shows the list of component widgets that live inside it
40084
+ // so the user knows what's getting published.
40085
+ var byKey = new Map();
40060
40086
  var _iterator3 = _createForOfIteratorHelper$9(plan.widgets || []),
40061
40087
  _step4;
40062
40088
  try {
@@ -40064,23 +40090,32 @@ function DependencyTable(_ref4) {
40064
40090
  var w = _step4.value;
40065
40091
  if (!w.scope || !w.packageName) continue;
40066
40092
  var _key3 = "".concat(w.scope, "/").concat(w.packageName);
40067
- rows.push({
40093
+ var entry = byKey.get(_key3) || {
40068
40094
  key: _key3,
40069
40095
  kind: "widget",
40070
- data: w
40071
- });
40096
+ data: w,
40097
+ widgetNames: new Set()
40098
+ };
40099
+ if (w.component) entry.widgetNames.add(w.component);
40100
+ byKey.set(_key3, entry);
40072
40101
  }
40073
40102
  } catch (err) {
40074
40103
  _iterator3.e(err);
40075
40104
  } finally {
40076
40105
  _iterator3.f();
40077
40106
  }
40107
+ var rows = Array.from(byKey.values()).map(function (e) {
40108
+ return _objectSpread$o(_objectSpread$o({}, e), {}, {
40109
+ widgetNames: Array.from(e.widgetNames).sort()
40110
+ });
40111
+ });
40078
40112
  if (plan.theme && plan.theme.scope && plan.theme.name) {
40079
40113
  var key = "".concat(plan.theme.scope, "/").concat(plan.theme.name);
40080
40114
  rows.push({
40081
40115
  key: key,
40082
40116
  kind: "theme",
40083
- data: plan.theme
40117
+ data: plan.theme,
40118
+ widgetNames: []
40084
40119
  });
40085
40120
  }
40086
40121
  if (rows.length === 0) {
@@ -40094,7 +40129,8 @@ function DependencyTable(_ref4) {
40094
40129
  children: rows.map(function (_ref5) {
40095
40130
  var key = _ref5.key,
40096
40131
  kind = _ref5.kind,
40097
- data = _ref5.data;
40132
+ data = _ref5.data,
40133
+ widgetNames = _ref5.widgetNames;
40098
40134
  var sel = selections[key];
40099
40135
  if (!sel) return null;
40100
40136
  var reg = data.registry;
@@ -40139,6 +40175,12 @@ function DependencyTable(_ref4) {
40139
40175
  }) : /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
40140
40176
  children: " \xB7 Not yet in registry"
40141
40177
  })]
40178
+ }), kind === "widget" && widgetNames && widgetNames.length > 0 && /*#__PURE__*/jsxRuntime.jsxs("div", {
40179
+ className: "text-[11px] opacity-60 mt-1",
40180
+ children: ["Bundles ", widgetNames.length, " widget", widgetNames.length === 1 ? "" : "s", ":", " ", /*#__PURE__*/jsxRuntime.jsx("span", {
40181
+ className: "opacity-80",
40182
+ children: widgetNames.join(", ")
40183
+ })]
40142
40184
  }), sel.owned && sel.include && /*#__PURE__*/jsxRuntime.jsxs("div", {
40143
40185
  className: "mt-2 flex items-center gap-3 flex-wrap",
40144
40186
  children: [/*#__PURE__*/jsxRuntime.jsxs("label", {