@uniformdev/mesh-sdk-react 19.79.1-alpha.11 → 19.79.1-alpha.7

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
@@ -2856,13 +2856,14 @@ function useConnectedDataAsVariables(connectedData) {
2856
2856
  }
2857
2857
 
2858
2858
  // src/hooks/useDynamicInputsAsVariables.tsx
2859
+ var import_canvas = require("@uniformdev/canvas");
2859
2860
  var import_react26 = require("react");
2860
2861
  var import_jsx_runtime26 = require("@emotion/react/jsx-runtime");
2861
2862
  function useDynamicInputsAsVariables(dynamicInputs) {
2862
2863
  return (0, import_react26.useMemo)(() => {
2863
2864
  const result = Object.entries(dynamicInputs).reduce(
2864
2865
  (acc, [name, input3]) => {
2865
- const source = `from ${input3.type === "path" ? "URL path" : "query string"}`;
2866
+ const source = `from ${name === import_canvas.LOCALE_DYNAMIC_INPUT_NAME ? "current locale" : input3.type === "path" ? "URL path" : "query string"}`;
2866
2867
  acc[name] = {
2867
2868
  readOnly: true,
2868
2869
  type: input3.type,
@@ -2981,11 +2982,11 @@ var import_lite = require("dequal/lite");
2981
2982
  var import_react30 = require("react");
2982
2983
 
2983
2984
  // src/components/Variables/util/deserializeVariablesEditorState.ts
2984
- var import_canvas = require("@uniformdev/canvas");
2985
+ var import_canvas2 = require("@uniformdev/canvas");
2985
2986
  var import_lexical = require("lexical");
2986
2987
  function deserializeVariablesEditorState(serialized) {
2987
2988
  const result = [];
2988
- (0, import_canvas.parseVariableExpression)(serialized != null ? serialized : "", (token, type) => {
2989
+ (0, import_canvas2.parseVariableExpression)(serialized != null ? serialized : "", (token, type) => {
2989
2990
  if (type === "text") {
2990
2991
  const node = {
2991
2992
  type: import_lexical.TextNode.getType(),
@@ -3112,7 +3113,7 @@ var import_LexicalComposerContext3 = require("@lexical/react/LexicalComposerCont
3112
3113
  var import_useLexicalNodeSelection = require("@lexical/react/useLexicalNodeSelection");
3113
3114
  var import_selection = require("@lexical/selection");
3114
3115
  var import_utils2 = require("@lexical/utils");
3115
- var import_canvas3 = require("@uniformdev/canvas");
3116
+ var import_canvas4 = require("@uniformdev/canvas");
3116
3117
  var import_design_system18 = require("@uniformdev/design-system");
3117
3118
  var import_lexical4 = require("lexical");
3118
3119
  var import_react39 = require("react");
@@ -3132,6 +3133,7 @@ function VariableChip({
3132
3133
  tooltip,
3133
3134
  reference,
3134
3135
  onClick,
3136
+ clickToEdit,
3135
3137
  isFresh,
3136
3138
  selected,
3137
3139
  disabled
@@ -3139,7 +3141,7 @@ function VariableChip({
3139
3141
  const hasClickEvent = !!onClick;
3140
3142
  const referenceIsValidFr = isFresh ? true : referenceIsValid;
3141
3143
  const Wrapper = referenceIsValidFr === "info" ? InfoVariableReference : referenceIsValidFr ? import_react31.Fragment : UndefinedVariableReference;
3142
- const extraTitle = !referenceIsValidFr ? `${reference} is not defined.` : hasClickEvent ? "Click to edit" : void 0;
3144
+ const extraTitle = !referenceIsValidFr ? `${reference} is not defined.` : hasClickEvent && clickToEdit ? "Click to edit" : void 0;
3143
3145
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3144
3146
  import_design_system15.MultilineChip,
3145
3147
  {
@@ -3186,7 +3188,7 @@ var import_LexicalComposerContext2 = require("@lexical/react/LexicalComposerCont
3186
3188
  var import_LexicalTypeaheadMenuPlugin = require("@lexical/react/LexicalTypeaheadMenuPlugin");
3187
3189
  var import_utils = require("@lexical/utils");
3188
3190
  var import_AiFillPlusCircle = require("@react-icons/all-files/ai/AiFillPlusCircle");
3189
- var import_canvas2 = require("@uniformdev/canvas");
3191
+ var import_canvas3 = require("@uniformdev/canvas");
3190
3192
  var import_design_system17 = require("@uniformdev/design-system");
3191
3193
  var import_lite2 = require("dequal/lite");
3192
3194
  var import_lexical3 = require("lexical");
@@ -3660,7 +3662,7 @@ function useVariablesMenu({
3660
3662
  var _a;
3661
3663
  const targetVariable = variables[value];
3662
3664
  if (overwriteExistingValue) {
3663
- setVariablesEditorValue(editor, (0, import_canvas2.createVariableReference)(value));
3665
+ setVariablesEditorValue(editor, (0, import_canvas3.createVariableReference)(value));
3664
3666
  return true;
3665
3667
  }
3666
3668
  const variableNode = $createVariableNode(value, {
@@ -3830,7 +3832,7 @@ function VariablesPlugin({
3830
3832
  if (!disableVariables) {
3831
3833
  const targetVariable = variablesRef.current.variables[reference];
3832
3834
  if (overwriteExistingValue) {
3833
- setVariablesEditorValue(editor, (0, import_canvas2.createVariableReference)(reference));
3835
+ setVariablesEditorValue(editor, (0, import_canvas3.createVariableReference)(reference));
3834
3836
  return true;
3835
3837
  }
3836
3838
  const variableNode = $createVariableNode(reference, {
@@ -4030,7 +4032,7 @@ var VariableNode = class _VariableNode extends import_lexical4.DecoratorNode {
4030
4032
  * (albeit it won't get the fancy chip-node)
4031
4033
  */
4032
4034
  getTextContent() {
4033
- return (0, import_canvas3.createVariableReference)(this.reference);
4035
+ return (0, import_canvas4.createVariableReference)(this.reference);
4034
4036
  }
4035
4037
  /** Creates the DOM wrapper that hosts the node */
4036
4038
  createDOM() {
@@ -4146,6 +4148,7 @@ function VariableNodeComponent({
4146
4148
  displayName: state.isLoading ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_design_system18.LoadingIndicator, { size: "sm" }) : state.displayName,
4147
4149
  selected: isSelected,
4148
4150
  disabled: readOnly,
4151
+ clickToEdit: state.hasClickEvent,
4149
4152
  onClick: state.hasClickEvent ? () => {
4150
4153
  setSelected(!isSelected);
4151
4154
  editor.dispatchCommand(EDIT_VARIABLE_COMMAND, {
@@ -4283,10 +4286,10 @@ var React10 = __toESM(require("react"));
4283
4286
  var import_react42 = require("react");
4284
4287
 
4285
4288
  // src/components/Variables/util/hasReferencedVariables.ts
4286
- var import_canvas4 = require("@uniformdev/canvas");
4289
+ var import_canvas5 = require("@uniformdev/canvas");
4287
4290
  function hasReferencedVariables(value) {
4288
4291
  let result = false;
4289
- (0, import_canvas4.parseVariableExpression)(value, (token, type) => {
4292
+ (0, import_canvas5.parseVariableExpression)(value, (token, type) => {
4290
4293
  if (type === "variable") {
4291
4294
  result = true;
4292
4295
  return false;
@@ -4530,8 +4533,8 @@ function VariableField({
4530
4533
  buttonProps: isActive ? { "aria-pressed": "true" } : void 0
4531
4534
  }
4532
4535
  ) : null;
4533
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
4534
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("label", { htmlFor: id, css: labelText, children: [
4536
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { "data-testid": "variable-field", children: [
4537
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("label", { htmlFor: id, css: labelText, "data-testid": "field-name", children: [
4535
4538
  variableSelector,
4536
4539
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: label })
4537
4540
  ] }),
@@ -4572,7 +4575,7 @@ function SingleLineTextPlugin() {
4572
4575
  }
4573
4576
 
4574
4577
  // src/components/Variables/util/serializeVariablesEditorState.ts
4575
- var import_canvas5 = require("@uniformdev/canvas");
4578
+ var import_canvas6 = require("@uniformdev/canvas");
4576
4579
  var import_lexical8 = require("lexical");
4577
4580
 
4578
4581
  // src/components/Variables/util/variableExpression.ts
@@ -4591,7 +4594,7 @@ function serializeRecursive(node, buffer) {
4591
4594
  buffer.push(node.text.replace(variablePrefix, "\\${"));
4592
4595
  }
4593
4596
  if (node.type === VariableNode.getType()) {
4594
- buffer.push((0, import_canvas5.createVariableReference)(node.reference));
4597
+ buffer.push((0, import_canvas6.createVariableReference)(node.reference));
4595
4598
  }
4596
4599
  if (node.type === import_lexical8.LineBreakNode.getType()) {
4597
4600
  buffer.push("\n");
@@ -4637,6 +4640,7 @@ function VariablesComposer(props) {
4637
4640
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4638
4641
  import_LexicalOnChangePlugin.OnChangePlugin,
4639
4642
  {
4643
+ ignoreSelectionChange: true,
4640
4644
  onChange: (state) => {
4641
4645
  editorState.current = state;
4642
4646
  if (updateTimeout.current) {
@@ -4910,7 +4914,7 @@ function InputVariablesOverlayMenu({
4910
4914
 
4911
4915
  // src/components/Variables/ParameterConnectionIndicator.tsx
4912
4916
  var import_CgUsbC2 = require("@react-icons/all-files/cg/CgUsbC");
4913
- var import_canvas6 = require("@uniformdev/canvas");
4917
+ var import_canvas7 = require("@uniformdev/canvas");
4914
4918
  var import_design_system22 = require("@uniformdev/design-system");
4915
4919
  var import_react51 = require("react");
4916
4920
 
@@ -5015,7 +5019,7 @@ function ParameterConnectionIndicator({
5015
5019
  }) {
5016
5020
  const hasVariablesInValue = (0, import_react51.useMemo)(() => {
5017
5021
  let result = false;
5018
- (0, import_canvas6.bindVariablesToObject)({
5022
+ (0, import_canvas7.bindVariablesToObject)({
5019
5023
  value,
5020
5024
  variables: {},
5021
5025
  handleBinding: () => {
@@ -5292,7 +5296,6 @@ var tableCellDragIcon = import_react55.css`
5292
5296
  `;
5293
5297
  var variableName = import_react55.css`
5294
5298
  border: none;
5295
- color: var(--brand-secondary-5);
5296
5299
  font-weight: var(--fw-medium);
5297
5300
  padding: 0;
5298
5301
  background: none;
@@ -5402,7 +5405,7 @@ function VariablesList() {
5402
5405
  {
5403
5406
  onButtonClick: () => dispatch({ type: "edit", variable: "" }),
5404
5407
  "aria-label": "Add variable",
5405
- buttonText: "add variable",
5408
+ buttonText: "Add variable",
5406
5409
  icon: "math-plus",
5407
5410
  css: { marginLeft: "var(--spacing-md)" }
5408
5411
  }
@@ -6279,12 +6282,12 @@ var DataRefreshButton = ({
6279
6282
  };
6280
6283
 
6281
6284
  // src/components/ObjectSearch/ObjectSearchContainer.tsx
6282
- var import_react65 = require("@emotion/react");
6283
- var import_canvas8 = require("@uniformdev/canvas");
6284
- var import_design_system33 = require("@uniformdev/design-system");
6285
+ var import_react66 = require("@emotion/react");
6286
+ var import_canvas9 = require("@uniformdev/canvas");
6287
+ var import_design_system35 = require("@uniformdev/design-system");
6285
6288
 
6286
6289
  // src/components/ObjectSearch/hooks/ObjectSearchContext.tsx
6287
- var import_canvas7 = require("@uniformdev/canvas");
6290
+ var import_canvas8 = require("@uniformdev/canvas");
6288
6291
  var import_react64 = require("react");
6289
6292
  var import_jsx_runtime58 = require("@emotion/react/jsx-runtime");
6290
6293
  var ObjectSearchContext = (0, import_react64.createContext)({
@@ -6299,12 +6302,19 @@ var ObjectSearchContext = (0, import_react64.createContext)({
6299
6302
  },
6300
6303
  selectedListItems: [],
6301
6304
  onRemoveAllSelectedItems: () => {
6302
- }
6305
+ },
6306
+ isMulti: false
6303
6307
  });
6304
- var ObjectSearchProvider = ({ currentlySelectedItems, children }) => {
6308
+ var ObjectSearchProvider = ({
6309
+ currentlySelectedItems,
6310
+ isMulti = false,
6311
+ children,
6312
+ defaultQuery
6313
+ }) => {
6305
6314
  const [query, setQuery] = (0, import_react64.useState)({
6306
6315
  contentType: "",
6307
- keyword: ""
6316
+ keyword: "",
6317
+ ...defaultQuery
6308
6318
  });
6309
6319
  const { flatVariables } = useVariables(true);
6310
6320
  const querySearchDeferred = (0, import_react64.useDeferredValue)(query);
@@ -6355,6 +6365,7 @@ var ObjectSearchProvider = ({ currentlySelectedItems, children }) => {
6355
6365
  selectedListItems: selectedItems,
6356
6366
  onRemoveAllSelectedItems,
6357
6367
  list,
6368
+ isMulti,
6358
6369
  onSetList
6359
6370
  }),
6360
6371
  [
@@ -6365,6 +6376,7 @@ var ObjectSearchProvider = ({ currentlySelectedItems, children }) => {
6365
6376
  selectedItems,
6366
6377
  onRemoveAllSelectedItems,
6367
6378
  list,
6379
+ isMulti,
6368
6380
  onSetList
6369
6381
  ]
6370
6382
  );
@@ -6374,7 +6386,7 @@ function useObjectSearchContext() {
6374
6386
  return (0, import_react64.useContext)(ObjectSearchContext);
6375
6387
  }
6376
6388
  function bindQuery(query, inputs) {
6377
- const { result, errors } = (0, import_canvas7.bindVariablesToObject)({
6389
+ const { result, errors } = (0, import_canvas8.bindVariablesToObject)({
6378
6390
  value: query,
6379
6391
  variables: inputs,
6380
6392
  errorPrefix: "Dynamic input"
@@ -6385,8 +6397,148 @@ function bindQuery(query, inputs) {
6385
6397
  return result;
6386
6398
  }
6387
6399
 
6388
- // src/components/ObjectSearch/ObjectSearchContainer.tsx
6400
+ // src/components/ObjectSearch/ObjectSearchListItem.tsx
6401
+ var import_design_system34 = require("@uniformdev/design-system");
6402
+
6403
+ // src/components/ObjectSearch/styles/ObjectSearchListItem.styles.ts
6404
+ var import_react65 = require("@emotion/react");
6405
+ var import_design_system33 = require("@uniformdev/design-system");
6406
+ var ObjectListItemContainer = import_react65.css`
6407
+ align-items: center;
6408
+ border: 1px solid var(--gray-300);
6409
+ border-radius: var(--rounded-base);
6410
+ background: var(--white);
6411
+ display: grid;
6412
+ grid-template-columns: 1fr auto;
6413
+ padding: var(--spacing-sm);
6414
+ `;
6415
+ var ObjectListItemContainerDisabled = import_react65.css`
6416
+ opacity: var(--opacity-50);
6417
+ pointer-events: none;
6418
+ `;
6419
+ var ObjectListItemLoading = import_react65.css`
6420
+ animation: ${import_design_system33.skeletonLoading} 1s linear infinite alternate;
6421
+ border-color: transparent;
6422
+ min-height: 42px;
6423
+ position: relative;
6424
+
6425
+ &:before,
6426
+ &:after {
6427
+ background: var(--gray-200);
6428
+ content: '';
6429
+ display: block;
6430
+ height: 1rem;
6431
+ }
6432
+
6433
+ &:before {
6434
+ border-radius: var(--rounded-base);
6435
+ width: 10rem;
6436
+ }
6437
+
6438
+ &:after {
6439
+ border-radius: var(--rounded-full);
6440
+ width: 1rem;
6441
+ }
6442
+ `;
6443
+ var ObjectListItemHeadingGroup = import_react65.css`
6444
+ align-items: center;
6445
+ display: grid;
6446
+ `;
6447
+ var ObjectListItemThumbnail = import_react65.css`
6448
+ width: 30px;
6449
+ object-fit: contain;
6450
+ `;
6451
+ var ObjectListItemTitle = import_react65.css`
6452
+ color: var(--brand-secondary-1);
6453
+ display: block;
6454
+ font-size: var(--fs-sm);
6455
+ `;
6456
+ var ObjectListItemSubtitle = import_react65.css`
6457
+ color: var(--gray-500);
6458
+ display: block;
6459
+ font-size: var(--fs-xs);
6460
+ line-height: 1;
6461
+ `;
6462
+ var ObjectListItemInfoContainer = import_react65.css`
6463
+ align-items: center;
6464
+ display: flex;
6465
+ gap: var(--spacing-sm);
6466
+ justify-content: center;
6467
+ `;
6468
+ var ObjectListItemControlledContent = import_react65.css`
6469
+ display: flex;
6470
+ gap: var(--spacing-sm);
6471
+ `;
6472
+ var ObjectListItemUnControlledContent = import_react65.css`
6473
+ margin-top: var(--spacing-sm);
6474
+ grid-column: 1 / -1;
6475
+ `;
6476
+
6477
+ // src/components/ObjectSearch/ObjectSearchListItem.tsx
6389
6478
  var import_jsx_runtime59 = require("@emotion/react/jsx-runtime");
6479
+ var ObjectSearchListItem = ({
6480
+ id,
6481
+ title,
6482
+ contentType,
6483
+ image,
6484
+ imageUrl,
6485
+ popoverData,
6486
+ onSelect,
6487
+ isMulti,
6488
+ disabled,
6489
+ children
6490
+ }) => {
6491
+ const { onSelectItem, selectedListItems, isMulti: globalIsMulti } = useObjectSearchContext();
6492
+ const formatedContentType = Array.isArray(contentType) ? contentType.join(", ") : contentType;
6493
+ const handleSelectItem = () => {
6494
+ var _a;
6495
+ const extraData = (_a = onSelect == null ? void 0 : onSelect()) != null ? _a : {};
6496
+ const selectedItem = { id, title, contentType, imageUrl, image, popoverData, ...extraData };
6497
+ if (isMulti === true || globalIsMulti) {
6498
+ return onSelectItem(selectedItem);
6499
+ }
6500
+ return onSelectItem([selectedItem]);
6501
+ };
6502
+ const selected = selectedListItems.some((item) => item.id === id);
6503
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
6504
+ "div",
6505
+ {
6506
+ role: "listitem",
6507
+ css: [ObjectListItemContainer, disabled ? ObjectListItemContainerDisabled : void 0],
6508
+ "data-testid": "list-item",
6509
+ children: [
6510
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
6511
+ "div",
6512
+ {
6513
+ role: "button",
6514
+ onClick: handleSelectItem,
6515
+ css: ObjectListItemControlledContent,
6516
+ "aria-disabled": disabled,
6517
+ children: [
6518
+ !imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("img", { src: imageUrl, alt: `Thumbnail for ${title}`, css: ObjectListItemThumbnail }),
6519
+ !image || imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6520
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { role: "heading", css: ObjectListItemHeadingGroup, children: [
6521
+ !contentType ? null : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { css: ObjectListItemSubtitle, children: formatedContentType }),
6522
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { css: ObjectListItemTitle, "data-testid": "title", children: title })
6523
+ ] })
6524
+ ]
6525
+ }
6526
+ ),
6527
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { css: ObjectListItemInfoContainer, children: [
6528
+ selected ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_design_system34.Chip, { text: "selected", size: "xs" }) : null,
6529
+ !popoverData ? null : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_design_system34.Popover, { baseId: title, ariaLabel: title, buttonText: `See ${title} details`, iconColor: "default", children: popoverData })
6530
+ ] }),
6531
+ !children ? null : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { css: ObjectListItemUnControlledContent, children })
6532
+ ]
6533
+ }
6534
+ );
6535
+ };
6536
+ var ObjectSearchListItemLoadingSkeleton = () => {
6537
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { role: "presentation", css: [ObjectListItemContainer, ObjectListItemLoading] });
6538
+ };
6539
+
6540
+ // src/components/ObjectSearch/ObjectSearchContainer.tsx
6541
+ var import_jsx_runtime60 = require("@emotion/react/jsx-runtime");
6390
6542
  var ObjectSearchContainer = ({
6391
6543
  label,
6392
6544
  enableDynamicInputToResultId,
@@ -6398,21 +6550,22 @@ var ObjectSearchContainer = ({
6398
6550
  const { onSelectItem, selectedListItems, list } = useObjectSearchContext();
6399
6551
  const { flatVariables } = useVariables(true);
6400
6552
  const inputValue = (_b = (_a = selectedListItems == null ? void 0 : selectedListItems[0]) == null ? void 0 : _a.id) != null ? _b : "";
6401
- const body = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_design_system33.VerticalRhythm, { children: [
6553
+ const listItems = resultList != null ? resultList : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6554
+ import_design_system35.ScrollableList,
6555
+ {
6556
+ role: "list",
6557
+ css: import_react66.css`
6558
+ > div {
6559
+ transition: max-height var(--duration-slow) var(--timing-ease-out);
6560
+ max-height: ${selectedListItems.length === 0 ? "50vh" : "184px"};
6561
+ }
6562
+ `,
6563
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(DefaultResultList, {})
6564
+ }
6565
+ );
6566
+ const body = /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_design_system35.VerticalRhythm, { children: [
6402
6567
  searchFilters,
6403
- !resultList ? null : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
6404
- import_design_system33.ScrollableList,
6405
- {
6406
- role: "list",
6407
- css: import_react65.css`
6408
- > div {
6409
- transition: max-height var(--duration-slow) var(--timing-ease-out);
6410
- max-height: ${selectedListItems.length === 0 ? "50vh" : "184px"};
6411
- }
6412
- `,
6413
- children: resultList
6414
- }
6415
- )
6568
+ listItems
6416
6569
  ] });
6417
6570
  const handleSelectedVariableChange = (selectedValue) => {
6418
6571
  var _a2;
@@ -6420,7 +6573,7 @@ var ObjectSearchContainer = ({
6420
6573
  onSelectItem([]);
6421
6574
  return;
6422
6575
  }
6423
- const { result, errors } = (0, import_canvas8.bindVariables)({
6576
+ const { result, errors } = (0, import_canvas9.bindVariables)({
6424
6577
  value: selectedValue,
6425
6578
  variables: flatVariables,
6426
6579
  errorPrefix: "Dynamic input"
@@ -6441,8 +6594,8 @@ var ObjectSearchContainer = ({
6441
6594
  }
6442
6595
  ]);
6443
6596
  };
6444
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_design_system33.IconsProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_design_system33.VerticalRhythm, { children: [
6445
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_design_system33.Container, { backgroundColor: "gray-50", padding: "var(--spacing-base)", border: true, children: label ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
6597
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_design_system35.IconsProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_design_system35.VerticalRhythm, { children: [
6598
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_design_system35.Container, { backgroundColor: "gray-50", padding: "var(--spacing-base)", border: true, children: label ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6446
6599
  InputVariables,
6447
6600
  {
6448
6601
  label,
@@ -6460,14 +6613,25 @@ var ObjectSearchContainer = ({
6460
6613
  children
6461
6614
  ] }) });
6462
6615
  };
6616
+ var DefaultResultList = () => {
6617
+ var _a;
6618
+ const { list } = useObjectSearchContext();
6619
+ if (!list.items) {
6620
+ return Array.from(Array(5).keys()).map((i) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(ObjectSearchListItemLoadingSkeleton, {}, i));
6621
+ }
6622
+ if (list.items.length === 0) {
6623
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_design_system35.Callout, { type: "info", children: "No results were found" });
6624
+ }
6625
+ return (_a = list.items) == null ? void 0 : _a.map((item) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(ObjectSearchListItem, { ...item }, item.id));
6626
+ };
6463
6627
 
6464
6628
  // src/components/ObjectSearch/ObjectSearchFilter.tsx
6465
- var import_design_system34 = require("@uniformdev/design-system");
6466
- var import_react67 = require("react");
6629
+ var import_design_system36 = require("@uniformdev/design-system");
6630
+ var import_react68 = require("react");
6467
6631
 
6468
6632
  // src/components/ObjectSearch/styles/ObjectSearchFilterContainer.styles.ts
6469
- var import_react66 = require("@emotion/react");
6470
- var ObjectSearchFilterContainerLabel = import_react66.css`
6633
+ var import_react67 = require("@emotion/react");
6634
+ var ObjectSearchFilterContainerLabel = import_react67.css`
6471
6635
  align-items: center;
6472
6636
  display: flex;
6473
6637
  font-size: var(--fs-sm);
@@ -6475,18 +6639,18 @@ var ObjectSearchFilterContainerLabel = import_react66.css`
6475
6639
  line-height: 1rem;
6476
6640
  margin-bottom: var(--spacing-sm);
6477
6641
  `;
6478
- var ObjectSearchFilterContainer = import_react66.css`
6642
+ var ObjectSearchFilterContainer = import_react67.css`
6479
6643
  display: grid;
6480
6644
  gap: var(--spacing-base);
6481
6645
  `;
6482
- var ObjectSearchFilterGrid = (gridColumns) => import_react66.css`
6646
+ var ObjectSearchFilterGrid = (gridColumns) => import_react67.css`
6483
6647
  display: grid;
6484
6648
  grid-template-columns: ${gridColumns};
6485
6649
  gap: var(--spacing-base);
6486
6650
  `;
6487
6651
 
6488
6652
  // src/components/ObjectSearch/ObjectSearchFilter.tsx
6489
- var import_jsx_runtime60 = require("@emotion/react/jsx-runtime");
6653
+ var import_jsx_runtime61 = require("@emotion/react/jsx-runtime");
6490
6654
  var ObjectSearchFilter = ({
6491
6655
  requireContentType,
6492
6656
  typeSelectorAllTypesOptionText = "All content types",
@@ -6495,10 +6659,11 @@ var ObjectSearchFilter = ({
6495
6659
  selectLabel = "Content Type Select",
6496
6660
  selectOptions
6497
6661
  }) => {
6662
+ var _a, _b;
6498
6663
  const { query, onSetQuery } = useObjectSearchContext();
6499
- const [searchState, setSearchState] = (0, import_react67.useState)({
6500
- contentType: "",
6501
- keyword: ""
6664
+ const [searchState, setSearchState] = (0, import_react68.useState)({
6665
+ contentType: (_a = query.contentType) != null ? _a : "",
6666
+ keyword: (_b = query.keyword) != null ? _b : ""
6502
6667
  });
6503
6668
  const handleFilterChange = (value) => {
6504
6669
  setSearchState((prev) => {
@@ -6506,20 +6671,20 @@ var ObjectSearchFilter = ({
6506
6671
  });
6507
6672
  onSetQuery({ ...query, ...value });
6508
6673
  };
6509
- const memoizedSelectOptions = (0, import_react67.useMemo)(() => {
6674
+ const memoizedSelectOptions = (0, import_react68.useMemo)(() => {
6510
6675
  if (!requireContentType && !(selectOptions == null ? void 0 : selectOptions.length)) {
6511
6676
  return [];
6512
6677
  }
6513
6678
  return [
6514
6679
  ...!requireContentType ? [{ value: "any", label: typeSelectorAllTypesOptionText }] : [],
6515
6680
  ...selectOptions ? selectOptions.map((option) => {
6516
- var _a;
6517
- return { name: option == null ? void 0 : option.name, label: (_a = option.label) != null ? _a : option == null ? void 0 : option.name, id: option.id };
6681
+ var _a2;
6682
+ return { name: option == null ? void 0 : option.name, label: (_a2 = option.label) != null ? _a2 : option == null ? void 0 : option.name, id: option.id };
6518
6683
  }) : []
6519
6684
  ];
6520
6685
  }, [requireContentType, typeSelectorAllTypesOptionText, selectOptions]);
6521
6686
  const shouldRenderSelect = memoizedSelectOptions.length > 0;
6522
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
6687
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
6523
6688
  "fieldset",
6524
6689
  {
6525
6690
  css: [
@@ -6527,8 +6692,8 @@ var ObjectSearchFilter = ({
6527
6692
  ObjectSearchFilterGrid(shouldRenderSelect ? "1fr 2fr" : "1fr")
6528
6693
  ],
6529
6694
  children: [
6530
- memoizedSelectOptions.length ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6531
- import_design_system34.InputSelect,
6695
+ memoizedSelectOptions.length ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
6696
+ import_design_system36.InputSelect,
6532
6697
  {
6533
6698
  label: selectLabel,
6534
6699
  showLabel: false,
@@ -6537,8 +6702,8 @@ var ObjectSearchFilter = ({
6537
6702
  value: query.contentType
6538
6703
  }
6539
6704
  ) : null,
6540
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
6541
- import_design_system34.InputKeywordSearch,
6705
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
6706
+ import_design_system36.InputKeywordSearch,
6542
6707
  {
6543
6708
  inputFieldName: searchInputName,
6544
6709
  placeholder: searchInputPlaceholderText,
@@ -6554,154 +6719,14 @@ var ObjectSearchFilter = ({
6554
6719
  };
6555
6720
 
6556
6721
  // src/components/ObjectSearch/ObjectSearchFilterContainer.tsx
6557
- var import_jsx_runtime61 = require("@emotion/react/jsx-runtime");
6722
+ var import_jsx_runtime62 = require("@emotion/react/jsx-runtime");
6558
6723
  var ObjectSearchFilterContainer2 = ({ label, children }) => {
6559
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { children: [
6560
- label ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { css: ObjectSearchFilterContainerLabel, children: label }) : null,
6561
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { css: ObjectSearchFilterContainer, children })
6724
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { children: [
6725
+ label ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { css: ObjectSearchFilterContainerLabel, children: label }) : null,
6726
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { css: ObjectSearchFilterContainer, children })
6562
6727
  ] });
6563
6728
  };
6564
6729
 
6565
- // src/components/ObjectSearch/ObjectSearchListItem.tsx
6566
- var import_design_system36 = require("@uniformdev/design-system");
6567
-
6568
- // src/components/ObjectSearch/styles/ObjectSearchListItem.styles.ts
6569
- var import_react68 = require("@emotion/react");
6570
- var import_design_system35 = require("@uniformdev/design-system");
6571
- var ObjectListItemContainer = import_react68.css`
6572
- align-items: center;
6573
- border: 1px solid var(--gray-300);
6574
- border-radius: var(--rounded-base);
6575
- background: var(--white);
6576
- display: grid;
6577
- grid-template-columns: 1fr auto;
6578
- padding: var(--spacing-sm);
6579
- `;
6580
- var ObjectListItemContainerDisabled = import_react68.css`
6581
- opacity: var(--opacity-50);
6582
- pointer-events: none;
6583
- `;
6584
- var ObjectListItemLoading = import_react68.css`
6585
- animation: ${import_design_system35.skeletonLoading} 1s linear infinite alternate;
6586
- border-color: transparent;
6587
- min-height: 42px;
6588
- position: relative;
6589
-
6590
- &:before,
6591
- &:after {
6592
- background: var(--gray-200);
6593
- content: '';
6594
- display: block;
6595
- height: 1rem;
6596
- }
6597
-
6598
- &:before {
6599
- border-radius: var(--rounded-base);
6600
- width: 10rem;
6601
- }
6602
-
6603
- &:after {
6604
- border-radius: var(--rounded-full);
6605
- width: 1rem;
6606
- }
6607
- `;
6608
- var ObjectListItemHeadingGroup = import_react68.css`
6609
- align-items: center;
6610
- display: grid;
6611
- `;
6612
- var ObjectListItemThumbnail = import_react68.css`
6613
- width: 30px;
6614
- object-fit: contain;
6615
- `;
6616
- var ObjectListItemTitle = import_react68.css`
6617
- color: var(--brand-secondary-1);
6618
- display: block;
6619
- font-size: var(--fs-sm);
6620
- `;
6621
- var ObjectListItemSubtitle = import_react68.css`
6622
- color: var(--gray-500);
6623
- display: block;
6624
- font-size: var(--fs-xs);
6625
- line-height: 1;
6626
- `;
6627
- var ObjectListItemInfoContainer = import_react68.css`
6628
- align-items: center;
6629
- display: flex;
6630
- gap: var(--spacing-sm);
6631
- justify-content: center;
6632
- `;
6633
- var ObjectListItemControlledContent = import_react68.css`
6634
- display: flex;
6635
- gap: var(--spacing-sm);
6636
- `;
6637
- var ObjectListItemUnControlledContent = import_react68.css`
6638
- margin-top: var(--spacing-sm);
6639
- grid-column: 1 / -1;
6640
- `;
6641
-
6642
- // src/components/ObjectSearch/ObjectSearchListItem.tsx
6643
- var import_jsx_runtime62 = require("@emotion/react/jsx-runtime");
6644
- var ObjectSearchListItem = ({
6645
- id,
6646
- title,
6647
- contentType,
6648
- image,
6649
- imageUrl,
6650
- popoverData,
6651
- onSelect,
6652
- isMulti = false,
6653
- disabled,
6654
- children
6655
- }) => {
6656
- const { onSelectItem, selectedListItems } = useObjectSearchContext();
6657
- const formatedContentType = Array.isArray(contentType) ? contentType.join(", ") : contentType;
6658
- const handleSelectItem = () => {
6659
- var _a;
6660
- const extraData = (_a = onSelect == null ? void 0 : onSelect()) != null ? _a : {};
6661
- const selectedItem = { id, title, contentType, imageUrl, image, popoverData, ...extraData };
6662
- if (isMulti) {
6663
- return onSelectItem(selectedItem);
6664
- }
6665
- return onSelectItem([selectedItem]);
6666
- };
6667
- const selected = selectedListItems.some((item) => item.id === id);
6668
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
6669
- "div",
6670
- {
6671
- role: "listitem",
6672
- css: [ObjectListItemContainer, disabled ? ObjectListItemContainerDisabled : void 0],
6673
- "data-testid": "list-item",
6674
- children: [
6675
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
6676
- "div",
6677
- {
6678
- role: "button",
6679
- onClick: handleSelectItem,
6680
- css: ObjectListItemControlledContent,
6681
- "aria-disabled": disabled,
6682
- children: [
6683
- !imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("img", { src: imageUrl, alt: `Thumbnail for ${title}`, css: ObjectListItemThumbnail }),
6684
- !image || imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("img", { ...image, loading: (image == null ? void 0 : image.width) && image.height ? "lazy" : "eager" }),
6685
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { role: "heading", css: ObjectListItemHeadingGroup, children: [
6686
- !contentType ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { css: ObjectListItemSubtitle, children: formatedContentType }),
6687
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { css: ObjectListItemTitle, "data-testid": "title", children: title })
6688
- ] })
6689
- ]
6690
- }
6691
- ),
6692
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { css: ObjectListItemInfoContainer, children: [
6693
- selected ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_design_system36.Chip, { text: "selected", size: "xs" }) : null,
6694
- !popoverData ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_design_system36.Popover, { baseId: title, ariaLabel: title, buttonText: `See ${title} details`, iconColor: "default", children: popoverData })
6695
- ] }),
6696
- !children ? null : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { css: ObjectListItemUnControlledContent, children })
6697
- ]
6698
- }
6699
- );
6700
- };
6701
- var ObjectSearchListItemLoadingSkeleton = () => {
6702
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { role: "presentation", css: [ObjectListItemContainer, ObjectListItemLoading] });
6703
- };
6704
-
6705
6730
  // src/components/ObjectSearch/ObjectSearchResultItem.tsx
6706
6731
  var import_design_system38 = require("@uniformdev/design-system");
6707
6732
  var import_timeago3 = require("timeago.js");
@@ -6849,13 +6874,13 @@ var ObjectSearchResultItem = ({
6849
6874
  onSelectItem({ id, title: id });
6850
6875
  onRemove == null ? void 0 : onRemove();
6851
6876
  };
6852
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { css: ObjectSearchResultItemContainer, children: [
6877
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { css: ObjectSearchResultItemContainer, "data-testid": "search-result-item", children: [
6853
6878
  disableDnD ? null : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { role: "presentation", className: "drag-handle", css: ObjectSearchDragHandle }),
6854
6879
  /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { css: ObjectSearchContentContainer, children: [
6855
6880
  !imageUrl ? null : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: imageUrl, alt: `Thumbnail for ${title}`, css: ObjectSearchImage }),
6856
6881
  /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { children: [
6857
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { css: ObjectSearchResultItemSubtitle, children: formatedContentType }),
6858
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { role: "heading", css: ObjectSearchResultItemTitle, children: [
6882
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { css: ObjectSearchResultItemSubtitle, "data-testid": "sub-title", children: formatedContentType }),
6883
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { role: "heading", css: ObjectSearchResultItemTitle, "data-testid": "title", children: [
6859
6884
  title != null ? title : name,
6860
6885
  !popoverData ? null : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_design_system38.Popover, { baseId: title, ariaLabel: title, buttonText: `See ${title} details`, children: popoverData })
6861
6886
  ] }),
@@ -7025,14 +7050,14 @@ var QueryFilter = ({
7025
7050
  ],
7026
7051
  children
7027
7052
  }) => {
7028
- var _a, _b, _c, _d;
7053
+ var _a, _b, _c, _d, _e, _f;
7029
7054
  const { query, onSetQuery } = useObjectSearchContext();
7030
7055
  const [queryState, setQueryState] = (0, import_react72.useState)({
7031
- contentType: "",
7032
- keyword: "",
7056
+ contentType: (_a = query.contentType) != null ? _a : "",
7057
+ keyword: (_b = query.contentType) != null ? _b : "",
7033
7058
  count: countValue != null ? countValue : 5,
7034
- sortBy: (_a = sortOptions[0].id) != null ? _a : "",
7035
- sortOrder: (_b = sortOrderOptions[0].id) != null ? _b : ""
7059
+ sortBy: (_c = sortOptions[0].id) != null ? _c : "",
7060
+ sortOrder: (_d = sortOrderOptions[0].id) != null ? _d : ""
7036
7061
  });
7037
7062
  const handleFilterChange = (value) => {
7038
7063
  setQueryState((prev) => ({ ...prev, ...value }));
@@ -7048,7 +7073,7 @@ var QueryFilter = ({
7048
7073
  InputVariables,
7049
7074
  {
7050
7075
  label: searchInputLabel,
7051
- value: (_c = queryState.keyword) != null ? _c : "",
7076
+ value: (_e = queryState.keyword) != null ? _e : "",
7052
7077
  onChange: (newQuery) => handleFilterChange({ keyword: newQuery }),
7053
7078
  disableInlineMenu: true,
7054
7079
  id: "qf_searchText",
@@ -7072,7 +7097,7 @@ var QueryFilter = ({
7072
7097
  {
7073
7098
  label: contentTypeLabel,
7074
7099
  id: "qf_contentType",
7075
- value: (_d = queryState.contentType) != null ? _d : "",
7100
+ value: (_f = queryState.contentType) != null ? _f : "",
7076
7101
  onChange: (newType) => handleFilterChange({ contentType: newType }),
7077
7102
  disableInlineMenu: true,
7078
7103
  inputWhenNoVariables: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(