@trops/dash-core 0.1.365 → 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.esm.js CHANGED
@@ -8810,7 +8810,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
8810
8810
  var hasPropertyDescriptors_1 = hasPropertyDescriptors;
8811
8811
 
8812
8812
  var keys = objectKeys$2;
8813
- var hasSymbols$4 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
8813
+ var hasSymbols$5 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
8814
8814
 
8815
8815
  var toStr$4 = Object.prototype.toString;
8816
8816
  var concat = Array.prototype.concat;
@@ -8843,7 +8843,7 @@ var defineProperty$1 = function (object, name, value, predicate) {
8843
8843
  var defineProperties$1 = function (object, map) {
8844
8844
  var predicates = arguments.length > 2 ? arguments[2] : {};
8845
8845
  var props = keys(map);
8846
- if (hasSymbols$4) {
8846
+ if (hasSymbols$5) {
8847
8847
  props = concat.call(props, Object.getOwnPropertySymbols(map));
8848
8848
  }
8849
8849
  for (var i = 0; i < props.length; i += 1) {
@@ -8909,11 +8909,11 @@ var sign$1 = function sign(number) {
8909
8909
  };
8910
8910
 
8911
8911
  var shams$1;
8912
- var hasRequiredShams$1;
8912
+ var hasRequiredShams;
8913
8913
 
8914
- function requireShams$1 () {
8915
- if (hasRequiredShams$1) return shams$1;
8916
- hasRequiredShams$1 = 1;
8914
+ function requireShams () {
8915
+ if (hasRequiredShams) return shams$1;
8916
+ hasRequiredShams = 1;
8917
8917
 
8918
8918
  /** @type {import('./shams')} */
8919
8919
  /* eslint complexity: [2, 18], max-statements: [2, 33] */
@@ -8962,10 +8962,10 @@ function requireShams$1 () {
8962
8962
  }
8963
8963
 
8964
8964
  var origSymbol = typeof Symbol !== 'undefined' && Symbol;
8965
- var hasSymbolSham = requireShams$1();
8965
+ var hasSymbolSham = requireShams();
8966
8966
 
8967
8967
  /** @type {import('.')} */
8968
- var hasSymbols$3 = function hasNativeSymbols() {
8968
+ var hasSymbols$4 = function hasNativeSymbols() {
8969
8969
  if (typeof origSymbol !== 'function') { return false; }
8970
8970
  if (typeof Symbol !== 'function') { return false; }
8971
8971
  if (typeof origSymbol('foo') !== 'symbol') { return false; }
@@ -9269,7 +9269,7 @@ var ThrowTypeError = $gOPD$1
9269
9269
  }())
9270
9270
  : throwTypeError;
9271
9271
 
9272
- var hasSymbols$2 = hasSymbols$3();
9272
+ var hasSymbols$3 = hasSymbols$4();
9273
9273
 
9274
9274
  var getProto$2 = getProto$3;
9275
9275
  var $ObjectGPO = requireObject_getPrototypeOf();
@@ -9287,7 +9287,7 @@ var INTRINSICS = {
9287
9287
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
9288
9288
  '%Array%': Array,
9289
9289
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
9290
- '%ArrayIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
9290
+ '%ArrayIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
9291
9291
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
9292
9292
  '%AsyncFunction%': needsEval,
9293
9293
  '%AsyncGenerator%': needsEval,
@@ -9318,10 +9318,10 @@ var INTRINSICS = {
9318
9318
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
9319
9319
  '%isFinite%': isFinite,
9320
9320
  '%isNaN%': isNaN,
9321
- '%IteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
9321
+ '%IteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
9322
9322
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
9323
9323
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
9324
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
9324
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
9325
9325
  '%Math%': Math,
9326
9326
  '%Number%': Number,
9327
9327
  '%Object%': $Object$2,
@@ -9335,11 +9335,11 @@ var INTRINSICS = {
9335
9335
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
9336
9336
  '%RegExp%': RegExp,
9337
9337
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
9338
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
9338
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
9339
9339
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
9340
9340
  '%String%': String,
9341
- '%StringIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
9342
- '%Symbol%': hasSymbols$2 ? Symbol : undefined$1,
9341
+ '%StringIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
9342
+ '%Symbol%': hasSymbols$3 ? Symbol : undefined$1,
9343
9343
  '%SyntaxError%': $SyntaxError$1,
9344
9344
  '%ThrowTypeError%': ThrowTypeError,
9345
9345
  '%TypedArray%': TypedArray,
@@ -9692,12 +9692,12 @@ var callBound$i = function callBoundIntrinsic(name, allowMissing) {
9692
9692
 
9693
9693
  // modified from https://github.com/es-shims/es6-shim
9694
9694
  var objectKeys$1 = objectKeys$2;
9695
- var hasSymbols$1 = requireShams$1()();
9695
+ var hasSymbols$2 = requireShams()();
9696
9696
  var callBound$h = callBound$i;
9697
9697
  var $Object$1 = esObjectAtoms;
9698
9698
  var $push = callBound$h('Array.prototype.push');
9699
9699
  var $propIsEnumerable = callBound$h('Object.prototype.propertyIsEnumerable');
9700
- var originalGetSymbols = hasSymbols$1 ? $Object$1.getOwnPropertySymbols : null;
9700
+ var originalGetSymbols = hasSymbols$2 ? $Object$1.getOwnPropertySymbols : null;
9701
9701
 
9702
9702
  // eslint-disable-next-line no-unused-vars
9703
9703
  var implementation$8 = function assign(target, source1) {
@@ -9711,7 +9711,7 @@ var implementation$8 = function assign(target, source1) {
9711
9711
 
9712
9712
  // step 3.a.ii:
9713
9713
  var keys = objectKeys$1(from);
9714
- var getSymbols = hasSymbols$1 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
9714
+ var getSymbols = hasSymbols$2 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
9715
9715
  if (getSymbols) {
9716
9716
  var syms = getSymbols(from);
9717
9717
  for (var j = 0; j < syms.length; ++j) {
@@ -10008,23 +10008,14 @@ var regexp_prototype_flags = flagsBound;
10008
10008
 
10009
10009
  var esGetIterator = {exports: {}};
10010
10010
 
10011
- var shams;
10012
- var hasRequiredShams;
10013
-
10014
- function requireShams () {
10015
- if (hasRequiredShams) return shams;
10016
- hasRequiredShams = 1;
10011
+ var hasSymbols$1 = requireShams();
10017
10012
 
10018
- var hasSymbols = requireShams$1();
10019
-
10020
- /** @type {import('.')} */
10021
- shams = function hasToStringTagShams() {
10022
- return hasSymbols() && !!Symbol.toStringTag;
10023
- };
10024
- return shams;
10025
- }
10013
+ /** @type {import('.')} */
10014
+ var shams = function hasToStringTagShams() {
10015
+ return hasSymbols$1() && !!Symbol.toStringTag;
10016
+ };
10026
10017
 
10027
- var hasToStringTag$7 = requireShams()();
10018
+ var hasToStringTag$7 = shams();
10028
10019
  var callBound$f = callBound$i;
10029
10020
 
10030
10021
  var $toString$7 = callBound$f('Object.prototype.toString');
@@ -11061,7 +11052,7 @@ var tryStringObject = function tryStringObject(value) {
11061
11052
  /** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */
11062
11053
  var $toString$6 = callBound$c('Object.prototype.toString');
11063
11054
  var strClass = '[object String]';
11064
- var hasToStringTag$6 = requireShams()();
11055
+ var hasToStringTag$6 = shams();
11065
11056
 
11066
11057
  /** @type {import('.')} */
11067
11058
  var isString$2 = function isString(value) {
@@ -11177,7 +11168,7 @@ var isSet$2 = exported$1 || function isSet(x) {
11177
11168
  var isArguments$1 = isArguments$2;
11178
11169
  var getStopIterationIterator = stopIterationIterator;
11179
11170
 
11180
- if (hasSymbols$3() || requireShams$1()()) {
11171
+ if (hasSymbols$4() || requireShams()()) {
11181
11172
  var $iterator = Symbol.iterator;
11182
11173
  // Symbol is available natively or shammed
11183
11174
  // natively:
@@ -11466,7 +11457,7 @@ var tryDateObject = function tryDateGetDayCall(value) {
11466
11457
  /** @type {(value: unknown) => string} */
11467
11458
  var toStr$2 = callBound$9('Object.prototype.toString');
11468
11459
  var dateClass = '[object Date]';
11469
- var hasToStringTag$5 = requireShams()();
11460
+ var hasToStringTag$5 = shams();
11470
11461
 
11471
11462
  /** @type {import('.')} */
11472
11463
  var isDateObject = function isDateObject(value) {
@@ -11477,7 +11468,7 @@ var isDateObject = function isDateObject(value) {
11477
11468
  };
11478
11469
 
11479
11470
  var callBound$8 = callBound$i;
11480
- var hasToStringTag$4 = requireShams()();
11471
+ var hasToStringTag$4 = shams();
11481
11472
  var hasOwn = hasown;
11482
11473
  var gOPD$1 = gopd$1;
11483
11474
 
@@ -11582,7 +11573,7 @@ var tryNumberObject = function tryNumberObject(value) {
11582
11573
  };
11583
11574
  var $toString$3 = callBound$6('Object.prototype.toString');
11584
11575
  var numClass = '[object Number]';
11585
- var hasToStringTag$3 = requireShams()();
11576
+ var hasToStringTag$3 = shams();
11586
11577
 
11587
11578
  /** @type {import('.')} */
11588
11579
  var isNumberObject = function isNumberObject(value) {
@@ -11609,7 +11600,7 @@ var tryBooleanObject = function booleanBrandCheck(value) {
11609
11600
  }
11610
11601
  };
11611
11602
  var boolClass = '[object Boolean]';
11612
- var hasToStringTag$2 = requireShams()();
11603
+ var hasToStringTag$2 = shams();
11613
11604
 
11614
11605
  /** @type {import('.')} */
11615
11606
  var isBooleanObject = function isBoolean(value) {
@@ -11651,7 +11642,7 @@ function requireSafeRegexTest () {
11651
11642
 
11652
11643
  var callBound$4 = callBound$i;
11653
11644
  var $toString$1 = callBound$4('Object.prototype.toString');
11654
- var hasSymbols = hasSymbols$3();
11645
+ var hasSymbols = hasSymbols$4();
11655
11646
  var safeRegexTest = requireSafeRegexTest();
11656
11647
 
11657
11648
  if (hasSymbols) {
@@ -12097,7 +12088,7 @@ var gOPD = gopd$1;
12097
12088
  var getProto = getProto$3;
12098
12089
 
12099
12090
  var $toString = callBound$2('Object.prototype.toString');
12100
- var hasToStringTag = requireShams()();
12091
+ var hasToStringTag = shams();
12101
12092
 
12102
12093
  var g = typeof globalThis === 'undefined' ? commonjsGlobal : globalThis;
12103
12094
  var typedArrays = availableTypedArrays();
@@ -38827,8 +38818,29 @@ var BUMP_OPTIONS$1 = [{
38827
38818
  label: "Keep current version"
38828
38819
  }];
38829
38820
 
38821
+ // Parse "@scope/name" → { scope, packageName }. Returns empty strings
38822
+ // for unscoped names so callers can use the || fallback chain.
38823
+ function parseScopeAndName(sourcePackage) {
38824
+ if (!sourcePackage) return {
38825
+ scope: "",
38826
+ packageName: ""
38827
+ };
38828
+ var m = sourcePackage.match(/^@([^/]+)\/(.+)$/);
38829
+ if (m) return {
38830
+ scope: m[1],
38831
+ packageName: m[2]
38832
+ };
38833
+ return {
38834
+ scope: "",
38835
+ packageName: sourcePackage
38836
+ };
38837
+ }
38838
+
38830
38839
  // Pulled out as a small helper so the Dependencies loader and the
38831
- // dashboard publish call share the same shape.
38840
+ // dashboard publish call share the same shape. Widgets registered from
38841
+ // a package (via `_sourcePackage`) inherit scope + packageName from that
38842
+ // package ID — otherwise the main-process resolver has no way to map a
38843
+ // bare component name to its owning package.
38832
38844
  function collectComponentConfigs() {
38833
38845
  var configMap = ComponentManager.componentMap();
38834
38846
  var componentConfigs = {};
@@ -38836,13 +38848,15 @@ function collectComponentConfigs() {
38836
38848
  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
38837
38849
  key = _Object$entries$_i[0],
38838
38850
  config = _Object$entries$_i[1];
38839
- if (config && (config.id || config.scope || config.packageName)) {
38840
- componentConfigs[config.name || key] = {
38841
- id: config.id || null,
38842
- scope: config.scope || "",
38843
- packageName: config.packageName || ""
38844
- };
38845
- }
38851
+ if (!config || config.type !== "widget") continue;
38852
+ var hasExplicit = config.id || config.scope || config.packageName || config._sourcePackage;
38853
+ if (!hasExplicit) continue;
38854
+ var parsed = parseScopeAndName(config._sourcePackage);
38855
+ componentConfigs[config.name || key] = {
38856
+ id: config.id || null,
38857
+ scope: config.scope || parsed.scope || "",
38858
+ packageName: config.packageName || parsed.packageName || ""
38859
+ };
38846
38860
  }
38847
38861
  return componentConfigs;
38848
38862
  }
@@ -39164,7 +39178,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39164
39178
  }
39165
39179
  function _handlePublish() {
39166
39180
  _handlePublish = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
39167
- var steps, _iterator2, _step2, w, _key2, _sel, key, sel, updateStep, i, _step3, _res$manifest, bump, options, res, _res, _options, _res2, _t2, _t3;
39181
+ var steps, seenPackages, _iterator2, _step2, w, _key2, _sel, key, sel, updateStep, i, _step3, _res$manifest, bump, options, res, _res, _options, _res2, _t2, _t3;
39168
39182
  return _regeneratorRuntime.wrap(function (_context2) {
39169
39183
  while (1) switch (_context2.prev = _context2.next) {
39170
39184
  case 0:
@@ -39177,19 +39191,21 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39177
39191
  setIsPublishing(true);
39178
39192
  setResult(null);
39179
39193
 
39180
- // Build the ordered step list: each selected owned widget → theme → dashboard.
39181
- // Third-party deps aren't published (they're just referenced by the manifest).
39194
+ // Build the ordered step list: one step per unique widget package,
39195
+ // then theme, then the dashboard itself. Third-party deps aren't
39196
+ // published — they're just referenced by the manifest.
39182
39197
  steps = [];
39183
39198
  if (!plan) {
39184
- _context2.next = 11;
39199
+ _context2.next = 12;
39185
39200
  break;
39186
39201
  }
39202
+ seenPackages = new Set();
39187
39203
  _iterator2 = _createForOfIteratorHelper$9(plan.widgets || []);
39188
39204
  _context2.prev = 2;
39189
39205
  _iterator2.s();
39190
39206
  case 3:
39191
39207
  if ((_step2 = _iterator2.n()).done) {
39192
- _context2.next = 7;
39208
+ _context2.next = 8;
39193
39209
  break;
39194
39210
  }
39195
39211
  w = _step2.value;
@@ -39197,16 +39213,23 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39197
39213
  _context2.next = 4;
39198
39214
  break;
39199
39215
  }
39200
- return _context2.abrupt("continue", 6);
39216
+ return _context2.abrupt("continue", 7);
39201
39217
  case 4:
39202
39218
  _key2 = "".concat(w.scope, "/").concat(w.packageName);
39203
- _sel = depSelections[_key2];
39204
- if (!(!_sel || !_sel.owned || !_sel.include)) {
39219
+ if (!seenPackages.has(_key2)) {
39205
39220
  _context2.next = 5;
39206
39221
  break;
39207
39222
  }
39208
- return _context2.abrupt("continue", 6);
39223
+ return _context2.abrupt("continue", 7);
39209
39224
  case 5:
39225
+ _sel = depSelections[_key2];
39226
+ if (!(!_sel || !_sel.owned || !_sel.include)) {
39227
+ _context2.next = 6;
39228
+ break;
39229
+ }
39230
+ return _context2.abrupt("continue", 7);
39231
+ case 6:
39232
+ seenPackages.add(_key2);
39210
39233
  steps.push({
39211
39234
  kind: "widget",
39212
39235
  key: _key2,
@@ -39214,21 +39237,21 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39214
39237
  packageId: w.packageId || "".concat(w.scope, "/").concat(w.packageName),
39215
39238
  selection: _sel
39216
39239
  });
39217
- case 6:
39218
- _context2.next = 3;
39219
- break;
39220
39240
  case 7:
39221
- _context2.next = 9;
39241
+ _context2.next = 3;
39222
39242
  break;
39223
39243
  case 8:
39224
- _context2.prev = 8;
39225
- _t2 = _context2["catch"](2);
39226
- _iterator2.e(_t2);
39244
+ _context2.next = 10;
39245
+ break;
39227
39246
  case 9:
39228
39247
  _context2.prev = 9;
39229
- _iterator2.f();
39230
- return _context2.finish(9);
39248
+ _t2 = _context2["catch"](2);
39249
+ _iterator2.e(_t2);
39231
39250
  case 10:
39251
+ _context2.prev = 10;
39252
+ _iterator2.f();
39253
+ return _context2.finish(10);
39254
+ case 11:
39232
39255
  if (plan.theme && plan.theme.scope && plan.theme.name) {
39233
39256
  key = "".concat(plan.theme.scope, "/").concat(plan.theme.name);
39234
39257
  sel = depSelections[key];
@@ -39242,7 +39265,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39242
39265
  });
39243
39266
  }
39244
39267
  }
39245
- case 11:
39268
+ case 12:
39246
39269
  steps.push({
39247
39270
  kind: "dashboard",
39248
39271
  key: "dashboard",
@@ -39263,11 +39286,11 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39263
39286
  return next;
39264
39287
  });
39265
39288
  };
39266
- _context2.prev = 12;
39289
+ _context2.prev = 13;
39267
39290
  i = 0;
39268
- case 13:
39291
+ case 14:
39269
39292
  if (!(i < steps.length)) {
39270
- _context2.next = 23;
39293
+ _context2.next = 24;
39271
39294
  break;
39272
39295
  }
39273
39296
  _step3 = steps[i];
@@ -39275,7 +39298,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39275
39298
  status: "running"
39276
39299
  });
39277
39300
  if (!(_step3.kind === "widget")) {
39278
- _context2.next = 16;
39301
+ _context2.next = 17;
39279
39302
  break;
39280
39303
  }
39281
39304
  bump = _step3.selection.bump;
@@ -39284,12 +39307,12 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39284
39307
  } : {}), {}, {
39285
39308
  visibility: _step3.selection.visibility
39286
39309
  });
39287
- _context2.next = 14;
39310
+ _context2.next = 15;
39288
39311
  return window.mainApi.registry.publishWidget(appId, _step3.packageId, options);
39289
- case 14:
39312
+ case 15:
39290
39313
  res = _context2.sent;
39291
39314
  if (res !== null && res !== void 0 && res.success) {
39292
- _context2.next = 15;
39315
+ _context2.next = 16;
39293
39316
  break;
39294
39317
  }
39295
39318
  updateStep(i, {
@@ -39302,26 +39325,26 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39302
39325
  });
39303
39326
  setIsPublishing(false);
39304
39327
  return _context2.abrupt("return");
39305
- case 15:
39328
+ case 16:
39306
39329
  updateStep(i, {
39307
39330
  status: "complete",
39308
39331
  message: "v".concat(res.newVersion || ((_res$manifest = res.manifest) === null || _res$manifest === void 0 ? void 0 : _res$manifest.version))
39309
39332
  });
39310
- _context2.next = 22;
39333
+ _context2.next = 23;
39311
39334
  break;
39312
- case 16:
39335
+ case 17:
39313
39336
  if (!(_step3.kind === "theme")) {
39314
- _context2.next = 19;
39337
+ _context2.next = 20;
39315
39338
  break;
39316
39339
  }
39317
- _context2.next = 17;
39340
+ _context2.next = 18;
39318
39341
  return window.mainApi.themes.publishTheme(appId, _step3.themeKey, {
39319
39342
  visibility: _step3.selection.visibility
39320
39343
  });
39321
- case 17:
39344
+ case 18:
39322
39345
  _res = _context2.sent;
39323
39346
  if (_res !== null && _res !== void 0 && _res.success) {
39324
- _context2.next = 18;
39347
+ _context2.next = 19;
39325
39348
  break;
39326
39349
  }
39327
39350
  updateStep(i, {
@@ -39334,16 +39357,16 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39334
39357
  });
39335
39358
  setIsPublishing(false);
39336
39359
  return _context2.abrupt("return");
39337
- case 18:
39360
+ case 19:
39338
39361
  updateStep(i, {
39339
39362
  status: "complete",
39340
39363
  message: "published"
39341
39364
  });
39342
- _context2.next = 22;
39365
+ _context2.next = 23;
39343
39366
  break;
39344
- case 19:
39367
+ case 20:
39345
39368
  if (!(_step3.kind === "dashboard")) {
39346
- _context2.next = 22;
39369
+ _context2.next = 23;
39347
39370
  break;
39348
39371
  }
39349
39372
  _options = {
@@ -39354,12 +39377,12 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39354
39377
  visibility: visibility,
39355
39378
  componentConfigs: collectComponentConfigs()
39356
39379
  };
39357
- _context2.next = 20;
39380
+ _context2.next = 21;
39358
39381
  return window.mainApi.dashboardConfig.prepareDashboardForPublish(appId, workspaceId, _options);
39359
- case 20:
39382
+ case 21:
39360
39383
  _res2 = _context2.sent;
39361
39384
  if (_res2 !== null && _res2 !== void 0 && _res2.success) {
39362
- _context2.next = 21;
39385
+ _context2.next = 22;
39363
39386
  break;
39364
39387
  }
39365
39388
  updateStep(i, {
@@ -39372,35 +39395,35 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39372
39395
  });
39373
39396
  setIsPublishing(false);
39374
39397
  return _context2.abrupt("return");
39375
- case 21:
39398
+ case 22:
39376
39399
  updateStep(i, {
39377
39400
  status: "complete",
39378
39401
  message: "published"
39379
39402
  });
39380
39403
  setResult(_res2);
39381
- case 22:
39382
- i++;
39383
- _context2.next = 13;
39384
- break;
39385
39404
  case 23:
39386
- _context2.next = 25;
39405
+ i++;
39406
+ _context2.next = 14;
39387
39407
  break;
39388
39408
  case 24:
39389
- _context2.prev = 24;
39390
- _t3 = _context2["catch"](12);
39409
+ _context2.next = 26;
39410
+ break;
39411
+ case 25:
39412
+ _context2.prev = 25;
39413
+ _t3 = _context2["catch"](13);
39391
39414
  setResult({
39392
39415
  success: false,
39393
39416
  error: _t3.message || "Failed to prepare dashboard for publish."
39394
39417
  });
39395
- case 25:
39396
- _context2.prev = 25;
39397
- setIsPublishing(false);
39398
- return _context2.finish(25);
39399
39418
  case 26:
39419
+ _context2.prev = 26;
39420
+ setIsPublishing(false);
39421
+ return _context2.finish(26);
39422
+ case 27:
39400
39423
  case "end":
39401
39424
  return _context2.stop();
39402
39425
  }
39403
- }, _callee2, null, [[2, 8, 9, 10], [12, 24, 25, 26]]);
39426
+ }, _callee2, null, [[2, 9, 10, 11], [13, 25, 26, 27]]);
39404
39427
  }));
39405
39428
  return _handlePublish.apply(this, arguments);
39406
39429
  }
@@ -40038,7 +40061,10 @@ function DependencyTable(_ref4) {
40038
40061
  var plan = _ref4.plan,
40039
40062
  selections = _ref4.selections,
40040
40063
  _onChange = _ref4.onChange;
40041
- var rows = [];
40064
+ // Dedupe: multiple widgets from the same package collapse into a single
40065
+ // row. Each row shows the list of component widgets that live inside it
40066
+ // so the user knows what's getting published.
40067
+ var byKey = new Map();
40042
40068
  var _iterator3 = _createForOfIteratorHelper$9(plan.widgets || []),
40043
40069
  _step4;
40044
40070
  try {
@@ -40046,23 +40072,32 @@ function DependencyTable(_ref4) {
40046
40072
  var w = _step4.value;
40047
40073
  if (!w.scope || !w.packageName) continue;
40048
40074
  var _key3 = "".concat(w.scope, "/").concat(w.packageName);
40049
- rows.push({
40075
+ var entry = byKey.get(_key3) || {
40050
40076
  key: _key3,
40051
40077
  kind: "widget",
40052
- data: w
40053
- });
40078
+ data: w,
40079
+ widgetNames: new Set()
40080
+ };
40081
+ if (w.component) entry.widgetNames.add(w.component);
40082
+ byKey.set(_key3, entry);
40054
40083
  }
40055
40084
  } catch (err) {
40056
40085
  _iterator3.e(err);
40057
40086
  } finally {
40058
40087
  _iterator3.f();
40059
40088
  }
40089
+ var rows = Array.from(byKey.values()).map(function (e) {
40090
+ return _objectSpread$o(_objectSpread$o({}, e), {}, {
40091
+ widgetNames: Array.from(e.widgetNames).sort()
40092
+ });
40093
+ });
40060
40094
  if (plan.theme && plan.theme.scope && plan.theme.name) {
40061
40095
  var key = "".concat(plan.theme.scope, "/").concat(plan.theme.name);
40062
40096
  rows.push({
40063
40097
  key: key,
40064
40098
  kind: "theme",
40065
- data: plan.theme
40099
+ data: plan.theme,
40100
+ widgetNames: []
40066
40101
  });
40067
40102
  }
40068
40103
  if (rows.length === 0) {
@@ -40076,7 +40111,8 @@ function DependencyTable(_ref4) {
40076
40111
  children: rows.map(function (_ref5) {
40077
40112
  var key = _ref5.key,
40078
40113
  kind = _ref5.kind,
40079
- data = _ref5.data;
40114
+ data = _ref5.data,
40115
+ widgetNames = _ref5.widgetNames;
40080
40116
  var sel = selections[key];
40081
40117
  if (!sel) return null;
40082
40118
  var reg = data.registry;
@@ -40121,6 +40157,12 @@ function DependencyTable(_ref4) {
40121
40157
  }) : /*#__PURE__*/jsx(Fragment, {
40122
40158
  children: " \xB7 Not yet in registry"
40123
40159
  })]
40160
+ }), kind === "widget" && widgetNames && widgetNames.length > 0 && /*#__PURE__*/jsxs("div", {
40161
+ className: "text-[11px] opacity-60 mt-1",
40162
+ children: ["Bundles ", widgetNames.length, " widget", widgetNames.length === 1 ? "" : "s", ":", " ", /*#__PURE__*/jsx("span", {
40163
+ className: "opacity-80",
40164
+ children: widgetNames.join(", ")
40165
+ })]
40124
40166
  }), sel.owned && sel.include && /*#__PURE__*/jsxs("div", {
40125
40167
  className: "mt-2 flex items-center gap-3 flex-wrap",
40126
40168
  children: [/*#__PURE__*/jsxs("label", {