@trops/dash-core 0.1.275 → 0.1.277

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
@@ -8575,7 +8575,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
8575
8575
  var hasPropertyDescriptors_1 = hasPropertyDescriptors;
8576
8576
 
8577
8577
  var keys = objectKeys$2;
8578
- var hasSymbols$4 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
8578
+ var hasSymbols$5 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
8579
8579
 
8580
8580
  var toStr$4 = Object.prototype.toString;
8581
8581
  var concat = Array.prototype.concat;
@@ -8608,7 +8608,7 @@ var defineProperty$1 = function (object, name, value, predicate) {
8608
8608
  var defineProperties$1 = function (object, map) {
8609
8609
  var predicates = arguments.length > 2 ? arguments[2] : {};
8610
8610
  var props = keys(map);
8611
- if (hasSymbols$4) {
8611
+ if (hasSymbols$5) {
8612
8612
  props = concat.call(props, Object.getOwnPropertySymbols(map));
8613
8613
  }
8614
8614
  for (var i = 0; i < props.length; i += 1) {
@@ -8674,11 +8674,11 @@ var sign$1 = function sign(number) {
8674
8674
  };
8675
8675
 
8676
8676
  var shams$1;
8677
- var hasRequiredShams$1;
8677
+ var hasRequiredShams;
8678
8678
 
8679
- function requireShams$1 () {
8680
- if (hasRequiredShams$1) return shams$1;
8681
- hasRequiredShams$1 = 1;
8679
+ function requireShams () {
8680
+ if (hasRequiredShams) return shams$1;
8681
+ hasRequiredShams = 1;
8682
8682
 
8683
8683
  /** @type {import('./shams')} */
8684
8684
  /* eslint complexity: [2, 18], max-statements: [2, 33] */
@@ -8727,10 +8727,10 @@ function requireShams$1 () {
8727
8727
  }
8728
8728
 
8729
8729
  var origSymbol = typeof Symbol !== 'undefined' && Symbol;
8730
- var hasSymbolSham = requireShams$1();
8730
+ var hasSymbolSham = requireShams();
8731
8731
 
8732
8732
  /** @type {import('.')} */
8733
- var hasSymbols$3 = function hasNativeSymbols() {
8733
+ var hasSymbols$4 = function hasNativeSymbols() {
8734
8734
  if (typeof origSymbol !== 'function') { return false; }
8735
8735
  if (typeof Symbol !== 'function') { return false; }
8736
8736
  if (typeof origSymbol('foo') !== 'symbol') { return false; }
@@ -9034,7 +9034,7 @@ var ThrowTypeError = $gOPD$1
9034
9034
  }())
9035
9035
  : throwTypeError;
9036
9036
 
9037
- var hasSymbols$2 = hasSymbols$3();
9037
+ var hasSymbols$3 = hasSymbols$4();
9038
9038
 
9039
9039
  var getProto$2 = getProto$3;
9040
9040
  var $ObjectGPO = requireObject_getPrototypeOf();
@@ -9052,7 +9052,7 @@ var INTRINSICS = {
9052
9052
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
9053
9053
  '%Array%': Array,
9054
9054
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
9055
- '%ArrayIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
9055
+ '%ArrayIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
9056
9056
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
9057
9057
  '%AsyncFunction%': needsEval,
9058
9058
  '%AsyncGenerator%': needsEval,
@@ -9083,10 +9083,10 @@ var INTRINSICS = {
9083
9083
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
9084
9084
  '%isFinite%': isFinite,
9085
9085
  '%isNaN%': isNaN,
9086
- '%IteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
9086
+ '%IteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
9087
9087
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
9088
9088
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
9089
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
9089
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
9090
9090
  '%Math%': Math,
9091
9091
  '%Number%': Number,
9092
9092
  '%Object%': $Object$2,
@@ -9100,11 +9100,11 @@ var INTRINSICS = {
9100
9100
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
9101
9101
  '%RegExp%': RegExp,
9102
9102
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
9103
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
9103
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
9104
9104
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
9105
9105
  '%String%': String,
9106
- '%StringIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
9107
- '%Symbol%': hasSymbols$2 ? Symbol : undefined$1,
9106
+ '%StringIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
9107
+ '%Symbol%': hasSymbols$3 ? Symbol : undefined$1,
9108
9108
  '%SyntaxError%': $SyntaxError$1,
9109
9109
  '%ThrowTypeError%': ThrowTypeError,
9110
9110
  '%TypedArray%': TypedArray,
@@ -9457,12 +9457,12 @@ var callBound$i = function callBoundIntrinsic(name, allowMissing) {
9457
9457
 
9458
9458
  // modified from https://github.com/es-shims/es6-shim
9459
9459
  var objectKeys$1 = objectKeys$2;
9460
- var hasSymbols$1 = requireShams$1()();
9460
+ var hasSymbols$2 = requireShams()();
9461
9461
  var callBound$h = callBound$i;
9462
9462
  var $Object$1 = esObjectAtoms;
9463
9463
  var $push = callBound$h('Array.prototype.push');
9464
9464
  var $propIsEnumerable = callBound$h('Object.prototype.propertyIsEnumerable');
9465
- var originalGetSymbols = hasSymbols$1 ? $Object$1.getOwnPropertySymbols : null;
9465
+ var originalGetSymbols = hasSymbols$2 ? $Object$1.getOwnPropertySymbols : null;
9466
9466
 
9467
9467
  // eslint-disable-next-line no-unused-vars
9468
9468
  var implementation$8 = function assign(target, source1) {
@@ -9476,7 +9476,7 @@ var implementation$8 = function assign(target, source1) {
9476
9476
 
9477
9477
  // step 3.a.ii:
9478
9478
  var keys = objectKeys$1(from);
9479
- var getSymbols = hasSymbols$1 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
9479
+ var getSymbols = hasSymbols$2 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
9480
9480
  if (getSymbols) {
9481
9481
  var syms = getSymbols(from);
9482
9482
  for (var j = 0; j < syms.length; ++j) {
@@ -9773,23 +9773,14 @@ var regexp_prototype_flags = flagsBound;
9773
9773
 
9774
9774
  var esGetIterator = {exports: {}};
9775
9775
 
9776
- var shams;
9777
- var hasRequiredShams;
9778
-
9779
- function requireShams () {
9780
- if (hasRequiredShams) return shams;
9781
- hasRequiredShams = 1;
9782
-
9783
- var hasSymbols = requireShams$1();
9776
+ var hasSymbols$1 = requireShams();
9784
9777
 
9785
- /** @type {import('.')} */
9786
- shams = function hasToStringTagShams() {
9787
- return hasSymbols() && !!Symbol.toStringTag;
9788
- };
9789
- return shams;
9790
- }
9778
+ /** @type {import('.')} */
9779
+ var shams = function hasToStringTagShams() {
9780
+ return hasSymbols$1() && !!Symbol.toStringTag;
9781
+ };
9791
9782
 
9792
- var hasToStringTag$7 = requireShams()();
9783
+ var hasToStringTag$7 = shams();
9793
9784
  var callBound$f = callBound$i;
9794
9785
 
9795
9786
  var $toString$7 = callBound$f('Object.prototype.toString');
@@ -10826,7 +10817,7 @@ var tryStringObject = function tryStringObject(value) {
10826
10817
  /** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */
10827
10818
  var $toString$6 = callBound$c('Object.prototype.toString');
10828
10819
  var strClass = '[object String]';
10829
- var hasToStringTag$6 = requireShams()();
10820
+ var hasToStringTag$6 = shams();
10830
10821
 
10831
10822
  /** @type {import('.')} */
10832
10823
  var isString$2 = function isString(value) {
@@ -10942,7 +10933,7 @@ var isSet$2 = exported$1 || function isSet(x) {
10942
10933
  var isArguments$1 = isArguments$2;
10943
10934
  var getStopIterationIterator = stopIterationIterator;
10944
10935
 
10945
- if (hasSymbols$3() || requireShams$1()()) {
10936
+ if (hasSymbols$4() || requireShams()()) {
10946
10937
  var $iterator = Symbol.iterator;
10947
10938
  // Symbol is available natively or shammed
10948
10939
  // natively:
@@ -11231,7 +11222,7 @@ var tryDateObject = function tryDateGetDayCall(value) {
11231
11222
  /** @type {(value: unknown) => string} */
11232
11223
  var toStr$2 = callBound$9('Object.prototype.toString');
11233
11224
  var dateClass = '[object Date]';
11234
- var hasToStringTag$5 = requireShams()();
11225
+ var hasToStringTag$5 = shams();
11235
11226
 
11236
11227
  /** @type {import('.')} */
11237
11228
  var isDateObject = function isDateObject(value) {
@@ -11242,7 +11233,7 @@ var isDateObject = function isDateObject(value) {
11242
11233
  };
11243
11234
 
11244
11235
  var callBound$8 = callBound$i;
11245
- var hasToStringTag$4 = requireShams()();
11236
+ var hasToStringTag$4 = shams();
11246
11237
  var hasOwn = hasown;
11247
11238
  var gOPD$1 = gopd$1;
11248
11239
 
@@ -11347,7 +11338,7 @@ var tryNumberObject = function tryNumberObject(value) {
11347
11338
  };
11348
11339
  var $toString$3 = callBound$6('Object.prototype.toString');
11349
11340
  var numClass = '[object Number]';
11350
- var hasToStringTag$3 = requireShams()();
11341
+ var hasToStringTag$3 = shams();
11351
11342
 
11352
11343
  /** @type {import('.')} */
11353
11344
  var isNumberObject = function isNumberObject(value) {
@@ -11374,7 +11365,7 @@ var tryBooleanObject = function booleanBrandCheck(value) {
11374
11365
  }
11375
11366
  };
11376
11367
  var boolClass = '[object Boolean]';
11377
- var hasToStringTag$2 = requireShams()();
11368
+ var hasToStringTag$2 = shams();
11378
11369
 
11379
11370
  /** @type {import('.')} */
11380
11371
  var isBooleanObject = function isBoolean(value) {
@@ -11416,7 +11407,7 @@ function requireSafeRegexTest () {
11416
11407
 
11417
11408
  var callBound$4 = callBound$i;
11418
11409
  var $toString$1 = callBound$4('Object.prototype.toString');
11419
- var hasSymbols = hasSymbols$3();
11410
+ var hasSymbols = hasSymbols$4();
11420
11411
  var safeRegexTest = requireSafeRegexTest();
11421
11412
 
11422
11413
  if (hasSymbols) {
@@ -11862,7 +11853,7 @@ var gOPD = gopd$1;
11862
11853
  var getProto = getProto$3;
11863
11854
 
11864
11855
  var $toString = callBound$2('Object.prototype.toString');
11865
- var hasToStringTag = requireShams()();
11856
+ var hasToStringTag = shams();
11866
11857
 
11867
11858
  var g = typeof globalThis === 'undefined' ? commonjsGlobal : globalThis;
11868
11859
  var typedArrays = availableTypedArrays();
@@ -29459,6 +29450,11 @@ var ComponentManager = {
29459
29450
  // otherwise fall back to the provided widgetKey for backward compatibility
29460
29451
  var registrationKey = config.id || widgetKey;
29461
29452
  tempComponentMap[registrationKey] = ComponentConfigModel(config);
29453
+ // Also register under plain component name for backward compat
29454
+ // (dashboards may reference "SlackWidget" instead of "trops.slack.SlackWidget")
29455
+ if (config.id && config.id !== widgetKey && !tempComponentMap[widgetKey]) {
29456
+ tempComponentMap[widgetKey] = tempComponentMap[registrationKey];
29457
+ }
29462
29458
  this.setComponentMap(tempComponentMap);
29463
29459
  },
29464
29460
  /**
@@ -45649,15 +45645,25 @@ var WidgetsSection = function WidgetsSection(_ref) {
45649
45645
  // ── Uninstall with usage check ──────────────────────────────────────
45650
45646
 
45651
45647
  function handleDeleteRequest(widget) {
45652
- var usage = findWidgetUsage(widget.componentNames, workspaces);
45648
+ // Find all sibling widgets in the same package (uninstall is package-level)
45649
+ var siblings = widget.packageId && widget.source === "installed" ? widgets.filter(function (w) {
45650
+ return w.packageId === widget.packageId && w.name !== widget.name;
45651
+ }) : [];
45652
+ var allComponentNames = [].concat(_toConsumableArray(widget.componentNames), _toConsumableArray(siblings.flatMap(function (s) {
45653
+ return s.componentNames;
45654
+ })));
45655
+ var usage = findWidgetUsage(allComponentNames, workspaces);
45653
45656
  setDeleteUsage(usage);
45654
- setDeleteTarget(widget);
45657
+ setDeleteTarget(_objectSpread$6(_objectSpread$6({}, widget), {}, {
45658
+ _siblings: siblings
45659
+ }));
45655
45660
  }
45656
45661
  function handleConfirmDelete() {
45657
45662
  return _handleConfirmDelete.apply(this, arguments);
45658
45663
  }
45659
45664
  function _handleConfirmDelete() {
45660
45665
  _handleConfirmDelete = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
45666
+ var allNames;
45661
45667
  return _regeneratorRuntime.wrap(function (_context) {
45662
45668
  while (1) switch (_context.prev = _context.next) {
45663
45669
  case 0:
@@ -45671,7 +45677,11 @@ var WidgetsSection = function WidgetsSection(_ref) {
45671
45677
  _context.next = 2;
45672
45678
  return uninstallWidget(deleteTarget.name);
45673
45679
  case 2:
45674
- if (selectedWidgetName === deleteTarget.name) {
45680
+ // Clear selection if it was the target or any sibling
45681
+ allNames = [deleteTarget.name].concat(_toConsumableArray((deleteTarget._siblings || []).map(function (s) {
45682
+ return s.name;
45683
+ })));
45684
+ if (allNames.includes(selectedWidgetName)) {
45675
45685
  setSelectedWidgetName(null);
45676
45686
  }
45677
45687
  _context.next = 4;
@@ -46140,6 +46150,9 @@ var WidgetsSection = function WidgetsSection(_ref) {
46140
46150
 
46141
46151
  var paragraphStyles = DashReact.getStylesForItem(DashReact.themeObjects.PARAGRAPH, currentTheme);
46142
46152
  var deleteWidgetLabel = (deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.displayName) || (deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.name) || "";
46153
+ var deleteSiblings = (deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget._siblings) || [];
46154
+ var deletePackageLabel = deleteTarget !== null && deleteTarget !== void 0 && deleteTarget.packageId ? deleteTarget.packageId.replace(/^@[^/]+\//, "") : "";
46155
+ var hasPackageSiblings = deleteSiblings.length > 0;
46143
46156
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
46144
46157
  children: [/*#__PURE__*/jsxRuntime.jsx(SectionLayout, {
46145
46158
  listContent: listContent,
@@ -46157,8 +46170,8 @@ var WidgetsSection = function WidgetsSection(_ref) {
46157
46170
  setDeleteTarget(null);
46158
46171
  setDeleteUsage([]);
46159
46172
  },
46160
- title: "Uninstall Widget"
46161
- }, deleteUsage.length === 0 ? {
46173
+ title: hasPackageSiblings ? "Uninstall Package" : "Uninstall Widget"
46174
+ }, !hasPackageSiblings && deleteUsage.length === 0 ? {
46162
46175
  message: "Are you sure you want to uninstall \"".concat(deleteWidgetLabel, "\"?")
46163
46176
  } : {}), {}, {
46164
46177
  confirmLabel: "Uninstall",
@@ -46168,27 +46181,48 @@ var WidgetsSection = function WidgetsSection(_ref) {
46168
46181
  setDeleteTarget(null);
46169
46182
  setDeleteUsage([]);
46170
46183
  },
46171
- children: deleteUsage.length > 0 && /*#__PURE__*/jsxRuntime.jsxs("div", {
46184
+ children: (hasPackageSiblings || deleteUsage.length > 0) && /*#__PURE__*/jsxRuntime.jsxs("div", {
46172
46185
  className: paragraphStyles.textColor || "",
46173
- children: [/*#__PURE__*/jsxRuntime.jsxs("p", {
46174
- className: "text-sm leading-relaxed",
46175
- children: ["\"", deleteWidgetLabel, "\" is currently used in ", deleteUsage.length, " ", "dashboard", deleteUsage.length !== 1 ? "s" : "", ". Uninstalling will leave orphaned layout items on these dashboards."]
46176
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
46177
- className: "mt-2 space-y-1",
46178
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
46179
- className: "text-xs font-semibold opacity-70",
46180
- children: "Affected dashboards:"
46181
- }), deleteUsage.map(function (u) {
46182
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
46183
- className: "text-xs opacity-60 flex items-center gap-1.5 pl-2",
46184
- children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
46185
- icon: "triangle-exclamation",
46186
- className: "h-3 w-3 text-yellow-500"
46187
- }), u.workspaceName, " ", /*#__PURE__*/jsxRuntime.jsxs("span", {
46188
- className: "opacity-50",
46189
- children: ["(", u.count, " instance", u.count !== 1 ? "s" : "", ")"]
46190
- })]
46191
- }, u.workspaceId);
46186
+ children: [hasPackageSiblings && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
46187
+ children: [/*#__PURE__*/jsxRuntime.jsxs("p", {
46188
+ className: "text-sm leading-relaxed",
46189
+ children: ["\"", deleteWidgetLabel, "\" is part of the", " ", /*#__PURE__*/jsxRuntime.jsx("span", {
46190
+ className: "font-semibold",
46191
+ children: deletePackageLabel
46192
+ }), " ", "package. Uninstalling will remove all", " ", deleteSiblings.length + 1, " widgets in this package:"]
46193
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
46194
+ className: "mt-2 mb-2 space-y-1",
46195
+ children: [deleteTarget].concat(_toConsumableArray(deleteSiblings)).map(function (w) {
46196
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
46197
+ className: "text-xs opacity-60 flex items-center gap-1.5 pl-2",
46198
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
46199
+ icon: "puzzle-piece",
46200
+ className: "h-3 w-3"
46201
+ }), w.displayName || w.name]
46202
+ }, w.name);
46203
+ })
46204
+ })]
46205
+ }), deleteUsage.length > 0 && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
46206
+ children: [/*#__PURE__*/jsxRuntime.jsxs("p", {
46207
+ className: "text-sm leading-relaxed",
46208
+ children: [hasPackageSiblings ? "These widgets are" : "\"".concat(deleteWidgetLabel, "\" is"), " ", "currently used in ", deleteUsage.length, " dashboard", deleteUsage.length !== 1 ? "s" : "", ". Uninstalling will leave orphaned layout items on these dashboards."]
46209
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
46210
+ className: "mt-2 space-y-1",
46211
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
46212
+ className: "text-xs font-semibold opacity-70",
46213
+ children: "Affected dashboards:"
46214
+ }), deleteUsage.map(function (u) {
46215
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
46216
+ className: "text-xs opacity-60 flex items-center gap-1.5 pl-2",
46217
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
46218
+ icon: "triangle-exclamation",
46219
+ className: "h-3 w-3 text-yellow-500"
46220
+ }), u.workspaceName, " ", /*#__PURE__*/jsxRuntime.jsxs("span", {
46221
+ className: "opacity-50",
46222
+ children: ["(", u.count, " instance", u.count !== 1 ? "s" : "", ")"]
46223
+ })]
46224
+ }, u.workspaceId);
46225
+ })]
46192
46226
  })]
46193
46227
  })]
46194
46228
  })