@uniformdev/mesh-sdk-react 19.79.1-alpha.13 → 19.79.1-alpha.25

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.mjs CHANGED
@@ -2933,9 +2933,9 @@ import { LoadingIndicator as LoadingIndicator2 } from "@uniformdev/design-system
2933
2933
  import {
2934
2934
  $getNearestNodeFromDOMNode,
2935
2935
  $getNodeByKey as $getNodeByKey2,
2936
- $getSelection,
2936
+ $getSelection as $getSelection2,
2937
2937
  $isDecoratorNode,
2938
- $isNodeSelection,
2938
+ $isNodeSelection as $isNodeSelection2,
2939
2939
  $isRangeSelection,
2940
2940
  COMMAND_PRIORITY_EDITOR,
2941
2941
  COMMAND_PRIORITY_LOW,
@@ -2945,7 +2945,7 @@ import {
2945
2945
  KEY_BACKSPACE_COMMAND,
2946
2946
  KEY_DELETE_COMMAND
2947
2947
  } from "lexical";
2948
- import { useCallback as useCallback2, useEffect as useEffect8 } from "react";
2948
+ import { useCallback as useCallback3, useEffect as useEffect8 } from "react";
2949
2949
 
2950
2950
  // src/components/Variables/util/prettifyBindExpression.tsx
2951
2951
  function prettifyBindExpression(bindExpression) {
@@ -3026,12 +3026,15 @@ import { dequal as dequal2 } from "dequal/lite";
3026
3026
  import {
3027
3027
  $createTextNode,
3028
3028
  $getNodeByKey,
3029
+ $getSelection,
3029
3030
  $insertNodes,
3031
+ $isNodeSelection,
3030
3032
  $nodesOfType as $nodesOfType2,
3033
+ $setSelection,
3031
3034
  COMMAND_PRIORITY_NORMAL,
3032
3035
  createCommand
3033
3036
  } from "lexical";
3034
- import { useCallback, useEffect as useEffect7, useMemo as useMemo8, useRef as useRef10, useState as useState10 } from "react";
3037
+ import { useCallback as useCallback2, useEffect as useEffect7, useMemo as useMemo8, useRef as useRef10, useState as useState10 } from "react";
3035
3038
  import { createPortal } from "react-dom";
3036
3039
 
3037
3040
  // src/components/Variables/toolbox/SelectVariableMenu.styles.ts
@@ -3063,12 +3066,56 @@ var variablesTipText = css18`
3063
3066
  padding: 0 var(--spacing-sm);
3064
3067
  `;
3065
3068
 
3066
- // src/components/Variables/useVariableEditor.ts
3067
- import { useEffect as useEffect6, useState as useState9 } from "react";
3068
-
3069
3069
  // src/components/Variables/VariablesProvider.tsx
3070
3070
  import mitt from "mitt";
3071
- import { createContext as createContext3, useContext as useContext5, useMemo as useMemo7, useState as useState8 } from "react";
3071
+ import { createContext as createContext3, useContext as useContext5, useMemo as useMemo7, useState as useState9 } from "react";
3072
+
3073
+ // src/components/Variables/util/useVariableEditTransaction.ts
3074
+ import { useCallback, useEffect as useEffect6, useState as useState8 } from "react";
3075
+ function useVariableEditTransaction({
3076
+ events,
3077
+ dispatch,
3078
+ isEditing,
3079
+ variables
3080
+ }) {
3081
+ const [isEditingBinding, setIsEditingBinding] = useState8();
3082
+ useEffect6(() => {
3083
+ if (!isEditingBinding) {
3084
+ return;
3085
+ }
3086
+ const fn = (e) => {
3087
+ isEditingBinding.resolve(e);
3088
+ setIsEditingBinding(void 0);
3089
+ };
3090
+ events.on("editCompleted", fn);
3091
+ return () => events.off("editCompleted", fn);
3092
+ }, [events, isEditingBinding, variables]);
3093
+ useEffect6(() => {
3094
+ if (!isEditing) {
3095
+ if (isEditingBinding) {
3096
+ isEditingBinding.resolve({ canceled: true });
3097
+ }
3098
+ setIsEditingBinding(void 0);
3099
+ }
3100
+ }, [isEditing, isEditingBinding]);
3101
+ return useCallback(
3102
+ async function editVariableTxn(variable, context) {
3103
+ if (isEditingBinding) {
3104
+ dispatch({ type: "cancelEdit" });
3105
+ }
3106
+ return new Promise((resolve) => {
3107
+ setTimeout(() => {
3108
+ setIsEditingBinding({
3109
+ resolve,
3110
+ variable
3111
+ });
3112
+ dispatch({ type: "edit", variable, context });
3113
+ });
3114
+ });
3115
+ },
3116
+ [dispatch, isEditingBinding]
3117
+ );
3118
+ }
3072
3119
 
3073
3120
  // src/components/Variables/VariableEditor.tsx
3074
3121
  import { zodResolver } from "@hookform/resolvers/zod";
@@ -3099,9 +3146,10 @@ function VariableEditor({
3099
3146
  variable,
3100
3147
  onSubmit,
3101
3148
  onCancel,
3149
+ showDisplayName,
3102
3150
  disableMeshTip
3103
3151
  }) {
3104
- var _a, _b, _c, _d, _e, _f, _g;
3152
+ var _a, _b, _c, _d, _e, _f, _g, _h;
3105
3153
  const { variables } = useVariables();
3106
3154
  const currentVariable = variables[variable];
3107
3155
  const { register, handleSubmit, formState } = useForm({
@@ -3156,6 +3204,16 @@ function VariableEditor({
3156
3204
  }
3157
3205
  }
3158
3206
  ),
3207
+ showDisplayName ? /* @__PURE__ */ jsx31(
3208
+ Input2,
3209
+ {
3210
+ ...register("displayName"),
3211
+ label: "Display name",
3212
+ autoComplete: "off",
3213
+ caption: "This is the name that will be displayed in the UI. If not provided, the name will be used.",
3214
+ errorMessage: (_f = formState.errors.helpText) == null ? void 0 : _f.message
3215
+ }
3216
+ ) : null,
3159
3217
  /* @__PURE__ */ jsx31(
3160
3218
  Input2,
3161
3219
  {
@@ -3163,7 +3221,7 @@ function VariableEditor({
3163
3221
  label: "Help Text",
3164
3222
  caption: "Appears when entering a value for this variable.",
3165
3223
  autoComplete: "off",
3166
- errorMessage: (_f = formState.errors.helpText) == null ? void 0 : _f.message
3224
+ errorMessage: (_g = formState.errors.helpText) == null ? void 0 : _g.message
3167
3225
  }
3168
3226
  ),
3169
3227
  /* @__PURE__ */ jsx31(
@@ -3172,7 +3230,7 @@ function VariableEditor({
3172
3230
  ...register("default"),
3173
3231
  label: "Default Value",
3174
3232
  autoComplete: "off",
3175
- errorMessage: (_g = formState.errors.default) == null ? void 0 : _g.message
3233
+ errorMessage: (_h = formState.errors.default) == null ? void 0 : _h.message
3176
3234
  }
3177
3235
  ),
3178
3236
  /* @__PURE__ */ jsx31(HorizontalRhythm, { justify: "space-between", children: /* @__PURE__ */ jsxs16(HorizontalRhythm, { gap: "sm", children: [
@@ -3209,8 +3267,8 @@ function VariablesProvider({
3209
3267
  children,
3210
3268
  knownUndefinedValues = {}
3211
3269
  }) {
3212
- const [editing, setEditing] = useState8();
3213
- const [editingContext, setEditingContext] = useState8();
3270
+ const [editing, setEditing] = useState9();
3271
+ const [editingContext, setEditingContext] = useState9();
3214
3272
  const events = useMemo7(
3215
3273
  () => mitt(),
3216
3274
  []
@@ -3257,16 +3315,23 @@ function VariablesProvider({
3257
3315
  }),
3258
3316
  [onChange, readOnly, value]
3259
3317
  );
3318
+ const editVariableTxn = useVariableEditTransaction({
3319
+ events,
3320
+ dispatch: valueBasedContextValue.dispatch,
3321
+ isEditing: typeof editing !== "undefined",
3322
+ variables: value
3323
+ });
3260
3324
  const contextValue = useMemo7(() => {
3261
3325
  return {
3262
3326
  ...valueBasedContextValue,
3327
+ editVariableTxn,
3263
3328
  isEditing: typeof editing !== "undefined",
3264
3329
  events,
3265
3330
  canDispatch: true,
3266
3331
  knownUndefinedValues,
3267
3332
  isLoading: !!isLoading
3268
3333
  };
3269
- }, [editing, events, knownUndefinedValues, valueBasedContextValue, isLoading]);
3334
+ }, [valueBasedContextValue, editVariableTxn, editing, events, knownUndefinedValues, isLoading]);
3270
3335
  return /* @__PURE__ */ jsxs17(VariablesContext.Provider, { value: contextValue, children: [
3271
3336
  children,
3272
3337
  typeof editing !== "undefined" ? /* @__PURE__ */ jsx32(
@@ -3305,6 +3370,9 @@ function useVariables(returnEmptyWithoutProvider = false) {
3305
3370
  dispatch: () => {
3306
3371
  throw new Error("No VariablesProvider present");
3307
3372
  },
3373
+ editVariableTxn: async () => {
3374
+ throw new Error("No VariablesProvider present");
3375
+ },
3308
3376
  events: mitt(),
3309
3377
  isEditing: false,
3310
3378
  variables: {},
@@ -3327,39 +3395,13 @@ function flattenVariables(variables) {
3327
3395
 
3328
3396
  // src/components/Variables/useVariableEditor.ts
3329
3397
  function useVariableEditor() {
3330
- const { variables, events, canDispatch, dispatch, isEditing } = useVariables(true);
3331
- const [isEditingBinding, setIsEditingBinding] = useState9();
3332
- useEffect6(() => {
3333
- if (!canDispatch || !isEditingBinding) {
3334
- return;
3335
- }
3336
- const fn = (e) => {
3337
- isEditingBinding.resolve(e);
3338
- setIsEditingBinding(void 0);
3339
- };
3340
- events.on("editCompleted", fn);
3341
- return () => events.off("editCompleted", fn);
3342
- }, [canDispatch, events, isEditingBinding, variables]);
3343
- useEffect6(() => {
3344
- if (!isEditing) {
3345
- setIsEditingBinding(void 0);
3346
- }
3347
- }, [isEditing]);
3398
+ const { editVariableTxn, canDispatch } = useVariables(true);
3348
3399
  return {
3349
3400
  async editVariable(variable, context) {
3350
3401
  if (!canDispatch) {
3351
3402
  throw new Error("Cannot edit variable. VariablesProvider is not mounted.");
3352
3403
  }
3353
- if (isEditingBinding) {
3354
- throw new Error("Cannot edit variable. Another variable is already being edited.");
3355
- }
3356
- return new Promise((resolve) => {
3357
- setIsEditingBinding({
3358
- resolve,
3359
- variable
3360
- });
3361
- dispatch({ type: "edit", variable, context });
3362
- });
3404
+ return editVariableTxn(variable, context);
3363
3405
  }
3364
3406
  };
3365
3407
  }
@@ -3456,7 +3498,7 @@ function useVariablesMenu({
3456
3498
  getEditorContext
3457
3499
  }) {
3458
3500
  const { variables, canDispatch, readOnly } = useVariables(true);
3459
- const canEditVariable = useCallback(
3501
+ const canEditVariable = useCallback2(
3460
3502
  (name, variable) => (
3461
3503
  // name === '' means new var. Add var perms computed by menu options.
3462
3504
  name === "" || canDispatch && enableEditingVariables && !readOnly && !(variable == null ? void 0 : variable.readOnly)
@@ -3486,7 +3528,7 @@ function useVariablesMenu({
3486
3528
  );
3487
3529
  return { menuOptions: menuOptions2, groupedVariables: groupedVariables2 };
3488
3530
  }, [variables, filterVariable, getEditorContext, canAddVariable, showAddVariableMenuOption]);
3489
- const onSelect = useCallback(
3531
+ const onSelect = useCallback2(
3490
3532
  ({ queryString, value, nodeToReplace, editor, overwriteExistingValue }) => {
3491
3533
  if (value === ADD_VARIABLE_OPTION) {
3492
3534
  editor.update(() => {
@@ -3536,7 +3578,7 @@ function VariablesPlugin({
3536
3578
  const { variables, dispatch, isEditing, canDispatch, readOnly, knownUndefinedValues, isLoading } = useVariables(true);
3537
3579
  const variablesRef = useRef10({ variables, knownUndefinedValues, isLoading });
3538
3580
  variablesRef.current = { variables, knownUndefinedValues, isLoading };
3539
- const canEditVariable = useCallback(
3581
+ const canEditVariable = useCallback2(
3540
3582
  (name, variable) => (
3541
3583
  // name === '' means new var. Add var perms computed by menu options.
3542
3584
  name === "" || canDispatch && enableEditingVariables && !readOnly && !(variable == null ? void 0 : variable.readOnly)
@@ -3570,7 +3612,7 @@ function VariablesPlugin({
3570
3612
  )
3571
3613
  };
3572
3614
  }, [queryString, groupedVariables, menuOptions]);
3573
- const onSelectOption = useCallback(
3615
+ const onSelectOption = useCallback2(
3574
3616
  (selectedOption, nodeToReplace, closeMenu) => {
3575
3617
  onSelect({
3576
3618
  queryString: queryString != null ? queryString : void 0,
@@ -3597,6 +3639,15 @@ function VariablesPlugin({
3597
3639
  editor.dispatchCommand(DISCONNECT_VARIABLE_COMMAND, { sourceKey });
3598
3640
  return;
3599
3641
  }
3642
+ editor.update(() => {
3643
+ const selection = $getSelection();
3644
+ if ($isNodeSelection(selection)) {
3645
+ const selectedNodes = selection.getNodes();
3646
+ if (selectedNodes.every((node) => $isVariableNode(node))) {
3647
+ $setSelection(null);
3648
+ }
3649
+ }
3650
+ });
3600
3651
  return;
3601
3652
  }
3602
3653
  editor.dispatchCommand(INSERT_VARIABLE_COMMAND, {
@@ -3704,7 +3755,7 @@ function VariablesPlugin({
3704
3755
  editVariable,
3705
3756
  replaceValueOnVariableInsert
3706
3757
  ]);
3707
- const updateExistingNodeIfChanged = useCallback(
3758
+ const updateExistingNodeIfChanged = useCallback2(
3708
3759
  (variableNode) => {
3709
3760
  var _a, _b, _c;
3710
3761
  const targetVar = variablesRef.current.variables[variableNode.reference];
@@ -3903,9 +3954,9 @@ function VariableNodeComponent({
3903
3954
  const [editor] = useLexicalComposerContext3();
3904
3955
  const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
3905
3956
  const readOnly = !editor.isEditable();
3906
- const onDelete = useCallback2(
3957
+ const onDelete = useCallback3(
3907
3958
  (event) => {
3908
- if (isSelected && $isNodeSelection($getSelection())) {
3959
+ if (isSelected && $isNodeSelection2($getSelection2())) {
3909
3960
  event.preventDefault();
3910
3961
  const node = $getNodeByKey2(nodeKey);
3911
3962
  if ($isVariableNode(node)) {
@@ -3928,8 +3979,8 @@ function VariableNodeComponent({
3928
3979
  editor.registerCommand(
3929
3980
  KEY_ARROW_LEFT_COMMAND,
3930
3981
  (event) => {
3931
- const selection = $getSelection();
3932
- if ($isNodeSelection(selection)) {
3982
+ const selection = $getSelection2();
3983
+ if ($isNodeSelection2(selection)) {
3933
3984
  const nodes = selection.getNodes();
3934
3985
  if (nodes.length > 0) {
3935
3986
  event.preventDefault();
@@ -3955,8 +4006,8 @@ function VariableNodeComponent({
3955
4006
  editor.registerCommand(
3956
4007
  KEY_ARROW_RIGHT_COMMAND,
3957
4008
  (event) => {
3958
- const selection = $getSelection();
3959
- if ($isNodeSelection(selection) && !$isTargetWithinDecorator(event.target)) {
4009
+ const selection = $getSelection2();
4010
+ if ($isNodeSelection2(selection) && !$isTargetWithinDecorator(event.target)) {
3960
4011
  const nodes = selection.getNodes();
3961
4012
  if (nodes.length > 0) {
3962
4013
  event.preventDefault();
@@ -4004,7 +4055,14 @@ function $isTargetWithinDecorator(target) {
4004
4055
  }
4005
4056
 
4006
4057
  // src/components/Variables/InputVariables.tsx
4007
- import { Caption, ErrorMessage, InfoMessage, WarningMessage } from "@uniformdev/design-system";
4058
+ import { css as css24 } from "@emotion/react";
4059
+ import {
4060
+ Caption,
4061
+ ErrorMessage,
4062
+ HorizontalRhythm as HorizontalRhythm4,
4063
+ InfoMessage,
4064
+ WarningMessage
4065
+ } from "@uniformdev/design-system";
4008
4066
  import { useState as useState13 } from "react";
4009
4067
  import { v4 as v42 } from "uuid";
4010
4068
 
@@ -4025,7 +4083,7 @@ function EditorRefPlugin({
4025
4083
  // src/components/Variables/composer/PasteTransformerPlugin.tsx
4026
4084
  import { useLexicalComposerContext as useLexicalComposerContext5 } from "@lexical/react/LexicalComposerContext";
4027
4085
  import { mergeRegister as mergeRegister3 } from "@lexical/utils";
4028
- import { $getSelection as $getSelection2, $isRangeSelection as $isRangeSelection2, COMMAND_PRIORITY_HIGH, PASTE_COMMAND } from "lexical";
4086
+ import { $getSelection as $getSelection3, $isRangeSelection as $isRangeSelection2, COMMAND_PRIORITY_HIGH, PASTE_COMMAND } from "lexical";
4029
4087
  import { useEffect as useEffect9 } from "react";
4030
4088
  function PasteTransformerPlugin({ transformPaste }) {
4031
4089
  const [editor] = useLexicalComposerContext5();
@@ -4035,7 +4093,7 @@ function PasteTransformerPlugin({ transformPaste }) {
4035
4093
  PASTE_COMMAND,
4036
4094
  (event) => {
4037
4095
  var _a;
4038
- const selection = $getSelection2();
4096
+ const selection = $getSelection3();
4039
4097
  const pastedText = (_a = event.clipboardData) == null ? void 0 : _a.getData("text/plain");
4040
4098
  if (pastedText && transformPaste && $isRangeSelection2(selection)) {
4041
4099
  const result = transformPaste(pastedText);
@@ -4065,32 +4123,41 @@ var menuBtn2 = css21`
4065
4123
  transform: translateY(-50%);
4066
4124
  `;
4067
4125
  var input = css21`
4126
+ --input-padding: 12px var(--spacing-base) 12px var(--spacing-sm);
4068
4127
  appearance: none;
4069
4128
  background-color: var(--white);
4070
- border: 1px solid var(--gray-200);
4129
+ border: 1px solid var(--gray-300);
4071
4130
  border-radius: var(--rounded-sm);
4072
4131
  color: var(--gray-700);
4073
- padding-block: var(--spacing-base);
4074
- padding-left: var(--spacing-base);
4075
- padding-right: var(--spacing-lg);
4076
- line-height: 1.75;
4132
+ padding: var(--input-padding);
4133
+ min-height: 50px;
4077
4134
  width: 100%;
4078
4135
  position: relative;
4079
4136
  transition: background var(--duration-fast) var(--timing-ease-out),
4080
4137
  border-color var(--duration-fast) var(--timing-ease-out),
4081
- color var(--duration-fast) var(--timing-ease-out);
4138
+ color var(--duration-fast) var(--timing-ease-out), box-shadow var(--duration-fast) var(--timing-ease-out);
4139
+
4140
+ &::placeholder {
4141
+ color: var(--gray-400);
4142
+ }
4143
+
4144
+ &:hover {
4145
+ border-color: var(--accent-dark-hover);
4146
+ }
4082
4147
 
4148
+ &[data-focus='true'],
4083
4149
  &:focus,
4084
4150
  &:focus-within {
4085
- border-color: var(--typography-base);
4086
- box-shadow: none;
4151
+ border-color: var(--accent-dark-active);
4152
+ box-shadow: var(--elevation-100);
4087
4153
  outline: none;
4088
4154
  }
4089
4155
 
4156
+ &[data-disabled='true'],
4090
4157
  &:disabled,
4091
4158
  &:disabled::placeholder {
4092
4159
  cursor: not-allowed;
4093
- color: var(--gray-400);
4160
+ color: var(--gray-300);
4094
4161
  border-color: var(--gray-300);
4095
4162
  }
4096
4163
 
@@ -4120,6 +4187,99 @@ var placeholderCompact = css21`
4120
4187
  inset: var(--spacing-sm) var(--spacing-lg) var(--spacing-sm) var(--spacing-base);
4121
4188
  `;
4122
4189
 
4190
+ // src/components/Variables/styles/ParameterVariables.styles.ts
4191
+ import { css as css22 } from "@emotion/react";
4192
+ import { scrollbarStyles as scrollbarStyles3 } from "@uniformdev/design-system";
4193
+ var variableBindButton = css22`
4194
+ align-items: center;
4195
+ border: none;
4196
+ border-radius: var(--rounded-base);
4197
+ background: none;
4198
+ display: flex;
4199
+ height: 1.2rem;
4200
+ padding: var(--spacing-2xs);
4201
+ transition: background var(--duration-fast) var(--timing-ease-out),
4202
+ color var(--duration-fast) var(--timing-ease-out);
4203
+ width: 1.2rem;
4204
+
4205
+ &:hover,
4206
+ &[aria-pressed='true']:not(:disabled) {
4207
+ background: var(--brand-secondary-3);
4208
+ color: var(--white);
4209
+ }
4210
+
4211
+ &[aria-disabled='true'] {
4212
+ background: none;
4213
+ color: currentColor;
4214
+ }
4215
+
4216
+ // fixes menu resizing issue within iframes
4217
+ // see https://linear.app/uniform/issue/UNI-3068/mesh-integration-resizing-with-menus
4218
+ + [role='menu'] {
4219
+ max-height: unset;
4220
+ }
4221
+ `;
4222
+ var input2 = css22`
4223
+ display: block;
4224
+ appearance: none;
4225
+ box-sizing: border-box;
4226
+ background: var(--white);
4227
+ border: 1px solid var(--gray-200);
4228
+ border-radius: var(--rounded-sm);
4229
+ color: var(--gray-700);
4230
+ font-size: var(--fs-sm);
4231
+ line-height: 1.5;
4232
+ min-height: 2rem;
4233
+ padding: var(--spacing-sm);
4234
+ width: 100%;
4235
+ position: relative;
4236
+ white-space: normal;
4237
+ transition-property: background, border-color, color, box-shadow, border-radius;
4238
+ transition-duration: var(--duration-fast);
4239
+ transition-timing-function: var(--timing-ease-out);
4240
+
4241
+ &::placeholder {
4242
+ color: var(--gray-400);
4243
+ }
4244
+
4245
+ &:focus,
4246
+ &:focus-within {
4247
+ border-radius: var(--rounded-sm);
4248
+ box-shadow: var(--elevation-100);
4249
+ border: 1px solid var(--accent-dark-active);
4250
+ outline: none;
4251
+ }
4252
+ &:hover {
4253
+ border: 1px solid var(--accent-dark-hover);
4254
+ }
4255
+
4256
+ &:disabled,
4257
+ &:disabled::placeholder,
4258
+ &:disabled:hover {
4259
+ border-radius: var(--rounded-sm);
4260
+ cursor: not-allowed;
4261
+ color: var(--gray-400);
4262
+ }
4263
+
4264
+ &[readonly],
4265
+ &[contenteditable='false'] {
4266
+ cursor: not-allowed;
4267
+ color: var(--gray-400);
4268
+ }
4269
+
4270
+ > p {
4271
+ margin: 0;
4272
+ }
4273
+ `;
4274
+ var inputMultiLine = (lines) => css22`
4275
+ ${scrollbarStyles3}
4276
+ // 1.5 = line height, spacing-sm = top and bottom padding + spacing-xs to give a slight increase in height
4277
+ // as the text looked to close to the bottom of the input
4278
+ height: calc(${lines * 1.5}em + var(--spacing-sm) + var(--spacing-xs));
4279
+ resize: vertical;
4280
+ overflow: auto;
4281
+ `;
4282
+
4123
4283
  // src/components/Variables/toolbox/InputVariablesProvider.tsx
4124
4284
  import * as React10 from "react";
4125
4285
  import { useMemo as useMemo9 } from "react";
@@ -4198,15 +4358,15 @@ function useInputVariablesState({
4198
4358
  }
4199
4359
 
4200
4360
  // src/components/Variables/toolbox/VariableField.styles.ts
4201
- import { css as css22 } from "@emotion/react";
4202
- var labelText = css22`
4361
+ import { css as css23 } from "@emotion/react";
4362
+ var labelText = css23`
4203
4363
  align-items: center;
4204
4364
  display: flex;
4205
4365
  gap: var(--spacing-xs);
4206
4366
  font-weight: var(--fw-regular);
4207
4367
  margin: 0 0 var(--spacing-xs);
4208
4368
  `;
4209
- var variableBindButton = css22`
4369
+ var variableBindButton2 = css23`
4210
4370
  align-items: center;
4211
4371
  border: none;
4212
4372
  border-radius: var(--rounded-base);
@@ -4249,6 +4409,7 @@ function SelectVariableMenu({
4249
4409
  tip,
4250
4410
  getEditorContext,
4251
4411
  menuTooltip = "Insert variable",
4412
+ portal,
4252
4413
  filterVariable
4253
4414
  }) {
4254
4415
  const { variables, canDispatch, readOnly } = useVariables(true);
@@ -4263,8 +4424,8 @@ function SelectVariableMenu({
4263
4424
  return /* @__PURE__ */ jsxs19(
4264
4425
  Menu2,
4265
4426
  {
4266
- placement: "bottom-start",
4267
- withoutPortal: true,
4427
+ placement: portal ? "bottom-end" : "bottom-start",
4428
+ portal,
4268
4429
  menuTrigger: /* @__PURE__ */ jsx35(
4269
4430
  "button",
4270
4431
  {
@@ -4368,7 +4529,7 @@ function VariableField({
4368
4529
  VariablesComposerVariableMenu,
4369
4530
  {
4370
4531
  ...selectVariableMenuOptions,
4371
- buttonCss: [variableBindButton, selectVariableMenuOptions == null ? void 0 : selectVariableMenuOptions.buttonCss],
4532
+ buttonCss: [variableBindButton2, selectVariableMenuOptions == null ? void 0 : selectVariableMenuOptions.buttonCss],
4372
4533
  buttonProps: isActive ? { "aria-pressed": "true" } : void 0
4373
4534
  }
4374
4535
  ) : null;
@@ -4519,8 +4680,8 @@ import { HistoryPlugin } from "@lexical/react/LexicalHistoryPlugin";
4519
4680
  import { PlainTextPlugin } from "@lexical/react/LexicalPlainTextPlugin";
4520
4681
  import { mergeRegister as mergeRegister4, objectKlassEquals } from "@lexical/utils";
4521
4682
  import {
4522
- $getSelection as $getSelection3,
4523
- $isNodeSelection as $isNodeSelection2,
4683
+ $getSelection as $getSelection4,
4684
+ $isNodeSelection as $isNodeSelection3,
4524
4685
  $isRangeSelection as $isRangeSelection3,
4525
4686
  COMMAND_PRIORITY_HIGH as COMMAND_PRIORITY_HIGH2,
4526
4687
  COPY_COMMAND,
@@ -4530,7 +4691,7 @@ import {
4530
4691
  import { useEffect as useEffect13 } from "react";
4531
4692
  import { Fragment as Fragment9, jsx as jsx39, jsxs as jsxs22 } from "@emotion/react/jsx-runtime";
4532
4693
  function VariablesComposerInput({
4533
- css: css37,
4694
+ css: css38,
4534
4695
  placeholder,
4535
4696
  ...contentEditableProps
4536
4697
  }) {
@@ -4570,10 +4731,10 @@ function RichishCopyAndPastePlugin() {
4570
4731
  objectKlassEquals(event, ClipboardEvent) ? event : null
4571
4732
  );
4572
4733
  editor.update(() => {
4573
- const selection = $getSelection3();
4734
+ const selection = $getSelection4();
4574
4735
  if ($isRangeSelection3(selection)) {
4575
4736
  selection.removeText();
4576
- } else if ($isNodeSelection2(selection)) {
4737
+ } else if ($isNodeSelection3(selection)) {
4577
4738
  selection.getNodes().forEach((node) => node.remove());
4578
4739
  }
4579
4740
  });
@@ -4584,12 +4745,12 @@ function RichishCopyAndPastePlugin() {
4584
4745
  editor.registerCommand(
4585
4746
  PASTE_COMMAND2,
4586
4747
  (event) => {
4587
- const selection = $getSelection3();
4748
+ const selection = $getSelection4();
4588
4749
  if ($isRangeSelection3(selection)) {
4589
4750
  event.preventDefault();
4590
4751
  editor.update(
4591
4752
  () => {
4592
- const selection2 = $getSelection3();
4753
+ const selection2 = $getSelection4();
4593
4754
  const clipboardData = event instanceof InputEvent || event instanceof KeyboardEvent ? null : event.clipboardData;
4594
4755
  if (clipboardData != null && $isRangeSelection3(selection2)) {
4595
4756
  const lexicalString = clipboardData.getData("application/x-lexical-editor");
@@ -4633,6 +4794,7 @@ function InputVariables(props) {
4633
4794
  value,
4634
4795
  enableEditingVariables,
4635
4796
  disableInlineMenu,
4797
+ showMenuPosition,
4636
4798
  onChange,
4637
4799
  transformPaste,
4638
4800
  showAddVariableMenuOption,
@@ -4649,7 +4811,8 @@ function InputVariables(props) {
4649
4811
  disabled,
4650
4812
  editorRef,
4651
4813
  filterVariable,
4652
- styleVariant = "default"
4814
+ styleVariant = "default",
4815
+ renderMenuInPortal
4653
4816
  } = props;
4654
4817
  const [finalId] = useState13(id != null ? id : () => v42());
4655
4818
  const { dispatch, canDispatch, isEditing } = useVariables(true);
@@ -4665,33 +4828,58 @@ function InputVariables(props) {
4665
4828
  },
4666
4829
  css: disabled ? inputDisabled : "",
4667
4830
  children: [
4668
- useInputWithNoVariables ? inputWhenNoVariables : /* @__PURE__ */ jsx40(
4669
- InputVariablesOverlayMenu,
4831
+ /* @__PURE__ */ jsxs23(
4832
+ HorizontalRhythm4,
4670
4833
  {
4671
- ...sharedMenuProps,
4672
- disabled: disableVariablesForReals || disableInlineMenu === true || disableInlineMenu === "by-input",
4673
- replaceValueOnVariableInsert: useInputWithNoVariables,
4674
- useInputWhenNoVariables: useInputWithNoVariables,
4675
- children: /* @__PURE__ */ jsx40(
4676
- VariablesComposerInput,
4677
- {
4678
- id: finalId,
4679
- "aria-label": ariaLabel,
4680
- "data-testid": dataTestId ? dataTestId : "input-container",
4681
- "data-text-value": value,
4682
- css: [input, styleVariant === "compact" ? inputCompact : null],
4683
- placeholder: placeholder ? /* @__PURE__ */ jsx40(
4684
- Caption,
4685
- {
4686
- css: [
4687
- placeholderCaption,
4688
- styleVariant === "compact" ? placeholderCompact : null
4689
- ],
4690
- children: placeholder
4691
- }
4692
- ) : void 0
4693
- }
4694
- )
4834
+ align: "center",
4835
+ gap: "xs",
4836
+ css: css24`
4837
+ & > div:first-child {
4838
+ flex-grow: 1;
4839
+ }
4840
+ `,
4841
+ children: [
4842
+ useInputWithNoVariables ? inputWhenNoVariables : /* @__PURE__ */ jsx40(
4843
+ InputVariablesOverlayMenu,
4844
+ {
4845
+ ...sharedMenuProps,
4846
+ disabled: disableVariablesForReals || showMenuPosition && showMenuPosition !== "label" || disableInlineMenu === true || disableInlineMenu === "by-input",
4847
+ portal: renderMenuInPortal,
4848
+ replaceValueOnVariableInsert: useInputWithNoVariables,
4849
+ useInputWhenNoVariables: useInputWithNoVariables,
4850
+ children: /* @__PURE__ */ jsx40(
4851
+ VariablesComposerInput,
4852
+ {
4853
+ id: finalId,
4854
+ "aria-label": ariaLabel,
4855
+ "data-testid": dataTestId ? dataTestId : "input-container",
4856
+ "data-text-value": value,
4857
+ css: [input, styleVariant === "compact" ? inputCompact : null],
4858
+ placeholder: placeholder ? /* @__PURE__ */ jsx40(
4859
+ Caption,
4860
+ {
4861
+ css: [
4862
+ placeholderCaption,
4863
+ styleVariant === "compact" ? placeholderCompact : null
4864
+ ],
4865
+ children: placeholder
4866
+ }
4867
+ ) : void 0
4868
+ }
4869
+ )
4870
+ }
4871
+ ),
4872
+ disableVariablesForReals || showMenuPosition !== "inline-right" ? null : /* @__PURE__ */ jsx40(
4873
+ VariablesComposerVariableMenu,
4874
+ {
4875
+ ...sharedMenuProps,
4876
+ buttonCss: variableBindButton,
4877
+ tip: useInputWithNoVariables ? void 0 : "Tip: access this list by typing $$",
4878
+ buttonProps: hadVariablesInValue ? { "aria-pressed": "true" } : void 0,
4879
+ replaceValueOnVariableInsert: useInputWithNoVariables
4880
+ }
4881
+ )
4882
+ ]
4695
4883
  }
4696
4884
  ),
4697
4885
  caption ? /* @__PURE__ */ jsx40(Caption, { children: caption }) : null,
@@ -4713,7 +4901,7 @@ function InputVariables(props) {
4713
4901
  },
4714
4902
  id: finalId,
4715
4903
  isActive: hadVariablesInValue,
4716
- disableVariables: disableVariablesForReals || disableInlineMenu === "by-label",
4904
+ disableVariables: disableVariablesForReals || showMenuPosition && showMenuPosition !== "label" || disableInlineMenu === true || disableInlineMenu === "by-label",
4717
4905
  children: input3
4718
4906
  }
4719
4907
  );
@@ -4745,6 +4933,7 @@ function InputVariablesOverlayMenu({
4745
4933
  children,
4746
4934
  disabled,
4747
4935
  useInputWhenNoVariables,
4936
+ portal,
4748
4937
  ...props
4749
4938
  }) {
4750
4939
  if (disabled) {
@@ -4756,6 +4945,7 @@ function InputVariablesOverlayMenu({
4756
4945
  VariablesComposerVariableMenu,
4757
4946
  {
4758
4947
  ...props,
4948
+ portal,
4759
4949
  tip: useInputWhenNoVariables ? void 0 : "Tip: access this list by typing $$",
4760
4950
  buttonCss: menuBtn2
4761
4951
  }
@@ -4766,103 +4956,8 @@ function InputVariablesOverlayMenu({
4766
4956
  // src/components/Variables/ParameterConnectionIndicator.tsx
4767
4957
  import { CgUsbC as CgUsbC2 } from "@react-icons/all-files/cg/CgUsbC";
4768
4958
  import { bindVariablesToObject } from "@uniformdev/canvas";
4769
- import { HorizontalRhythm as HorizontalRhythm4, Menu as Menu3 } from "@uniformdev/design-system";
4959
+ import { HorizontalRhythm as HorizontalRhythm5, Menu as Menu3 } from "@uniformdev/design-system";
4770
4960
  import { useMemo as useMemo11 } from "react";
4771
-
4772
- // src/components/Variables/styles/ParameterVariables.styles.ts
4773
- import { css as css23 } from "@emotion/react";
4774
- import { scrollbarStyles as scrollbarStyles3 } from "@uniformdev/design-system";
4775
- var variableBindButton2 = css23`
4776
- align-items: center;
4777
- border: none;
4778
- border-radius: var(--rounded-base);
4779
- background: none;
4780
- display: flex;
4781
- height: 1.2rem;
4782
- padding: var(--spacing-2xs);
4783
- transition: background var(--duration-fast) var(--timing-ease-out),
4784
- color var(--duration-fast) var(--timing-ease-out);
4785
- width: 1.2rem;
4786
-
4787
- &:hover,
4788
- &[aria-pressed='true']:not(:disabled) {
4789
- background: var(--brand-secondary-3);
4790
- color: var(--white);
4791
- }
4792
-
4793
- &[aria-disabled='true'] {
4794
- background: none;
4795
- color: currentColor;
4796
- }
4797
-
4798
- // fixes menu resizing issue within iframes
4799
- // see https://linear.app/uniform/issue/UNI-3068/mesh-integration-resizing-with-menus
4800
- + [role='menu'] {
4801
- max-height: unset;
4802
- }
4803
- `;
4804
- var input2 = css23`
4805
- display: block;
4806
- appearance: none;
4807
- box-sizing: border-box;
4808
- background: var(--white);
4809
- border: 1px solid var(--gray-200);
4810
- border-radius: var(--rounded-sm);
4811
- color: var(--gray-700);
4812
- font-size: var(--fs-sm);
4813
- line-height: 1.5;
4814
- min-height: 2rem;
4815
- padding: var(--spacing-sm);
4816
- width: 100%;
4817
- position: relative;
4818
- white-space: normal;
4819
- transition-property: background, border-color, color, box-shadow, border-radius;
4820
- transition-duration: var(--duration-fast);
4821
- transition-timing-function: var(--timing-ease-out);
4822
-
4823
- &::placeholder {
4824
- color: var(--gray-400);
4825
- }
4826
-
4827
- &:focus,
4828
- &:focus-within {
4829
- border-radius: var(--rounded-sm);
4830
- box-shadow: var(--elevation-100);
4831
- border: 1px solid var(--accent-dark-active);
4832
- outline: none;
4833
- }
4834
- &:hover {
4835
- border: 1px solid var(--accent-dark-hover);
4836
- }
4837
-
4838
- &:disabled,
4839
- &:disabled::placeholder,
4840
- &:disabled:hover {
4841
- border-radius: var(--rounded-sm);
4842
- cursor: not-allowed;
4843
- color: var(--gray-400);
4844
- }
4845
-
4846
- &[readonly],
4847
- &[contenteditable='false'] {
4848
- cursor: not-allowed;
4849
- color: var(--gray-400);
4850
- }
4851
-
4852
- > p {
4853
- margin: 0;
4854
- }
4855
- `;
4856
- var inputMultiLine = (lines) => css23`
4857
- ${scrollbarStyles3}
4858
- // 1.5 = line height, spacing-sm = top and bottom padding + spacing-xs to give a slight increase in height
4859
- // as the text looked to close to the bottom of the input
4860
- height: calc(${lines * 1.5}em + var(--spacing-sm) + var(--spacing-xs));
4861
- resize: vertical;
4862
- overflow: auto;
4863
- `;
4864
-
4865
- // src/components/Variables/ParameterConnectionIndicator.tsx
4866
4961
  import { jsx as jsx41, jsxs as jsxs24 } from "@emotion/react/jsx-runtime";
4867
4962
  function ParameterConnectionIndicator({
4868
4963
  children,
@@ -4882,7 +4977,7 @@ function ParameterConnectionIndicator({
4882
4977
  });
4883
4978
  return result;
4884
4979
  }, [value]);
4885
- return /* @__PURE__ */ jsxs24(HorizontalRhythm4, { align: "center", gap: "xs", css: { width: "100%" }, children: [
4980
+ return /* @__PURE__ */ jsxs24(HorizontalRhythm5, { align: "center", gap: "xs", css: { width: "100%" }, children: [
4886
4981
  /* @__PURE__ */ jsx41("div", { css: { flex: 1 }, children }),
4887
4982
  disabled ? null : /* @__PURE__ */ jsx41(
4888
4983
  Menu3,
@@ -4894,7 +4989,7 @@ function ParameterConnectionIndicator({
4894
4989
  {
4895
4990
  title: menuTooltip,
4896
4991
  "aria-pressed": hasVariablesInValue,
4897
- css: [menuBtn, variableBindButton2],
4992
+ css: [menuBtn, variableBindButton],
4898
4993
  type: "button",
4899
4994
  children: /* @__PURE__ */ jsx41(CgUsbC2, { size: "1.4rem" })
4900
4995
  }
@@ -4907,8 +5002,8 @@ function ParameterConnectionIndicator({
4907
5002
  }
4908
5003
 
4909
5004
  // src/components/Variables/ParameterOrSingleVariable.tsx
4910
- import { HorizontalRhythm as HorizontalRhythm5 } from "@uniformdev/design-system";
4911
- import { useCallback as useCallback3 } from "react";
5005
+ import { HorizontalRhythm as HorizontalRhythm6 } from "@uniformdev/design-system";
5006
+ import { useCallback as useCallback4 } from "react";
4912
5007
 
4913
5008
  // src/components/Variables/composer/OnDisconnectPlugin.tsx
4914
5009
  import { useLexicalComposerContext as useLexicalComposerContext10 } from "@lexical/react/LexicalComposerContext";
@@ -4967,7 +5062,7 @@ function ParameterOrSingleVariable(props) {
4967
5062
  hasVariablesInValue,
4968
5063
  setHadVariablesInValue
4969
5064
  } = useInputVariablesState(props);
4970
- const handleDisconnect = useCallback3(
5065
+ const handleDisconnect = useCallback4(
4971
5066
  (variable) => {
4972
5067
  setHadVariablesInValue(false);
4973
5068
  if (onDisconnect) {
@@ -4993,7 +5088,7 @@ function ParameterOrSingleVariable(props) {
4993
5088
  /* @__PURE__ */ jsx42(OnDisconnectPlugin, { onDisconnect: handleDisconnect }),
4994
5089
  editorRef ? /* @__PURE__ */ jsx42(EditorRefPlugin, { editorRef }) : null,
4995
5090
  /* @__PURE__ */ jsx42(ControlledValuePlugin, { enabled: true, value }),
4996
- /* @__PURE__ */ jsxs25(HorizontalRhythm5, { align: "center", gap: "xs", css: { width: "100%" }, children: [
5091
+ /* @__PURE__ */ jsxs25(HorizontalRhythm6, { align: "center", gap: "xs", css: { width: "100%" }, children: [
4997
5092
  /* @__PURE__ */ jsx42("div", { css: { flex: 1 }, children: inputWhenNoVariables && !hadVariablesInValue ? inputWhenNoVariables : /* @__PURE__ */ jsx42(
4998
5093
  VariablesComposerInput,
4999
5094
  {
@@ -5006,7 +5101,7 @@ function ParameterOrSingleVariable(props) {
5006
5101
  VariablesComposerVariableMenu,
5007
5102
  {
5008
5103
  ...sharedMenuProps,
5009
- buttonCss: [variableBindButton2],
5104
+ buttonCss: [variableBindButton],
5010
5105
  buttonProps: hasVariablesInValue ? { "aria-pressed": "true" } : void 0,
5011
5106
  replaceValueOnVariableInsert: true,
5012
5107
  filterVariable
@@ -5020,8 +5115,8 @@ function ParameterOrSingleVariable(props) {
5020
5115
  }
5021
5116
 
5022
5117
  // src/components/Variables/ParameterVariables.tsx
5023
- import { css as css24 } from "@emotion/react";
5024
- import { HorizontalRhythm as HorizontalRhythm6 } from "@uniformdev/design-system";
5118
+ import { css as css25 } from "@emotion/react";
5119
+ import { HorizontalRhythm as HorizontalRhythm7 } from "@uniformdev/design-system";
5025
5120
  import { jsx as jsx43, jsxs as jsxs26 } from "@emotion/react/jsx-runtime";
5026
5121
  function ParameterVariables(props) {
5027
5122
  const {
@@ -5060,7 +5155,7 @@ function ParameterVariables(props) {
5060
5155
  editorRef ? /* @__PURE__ */ jsx43(EditorRefPlugin, { editorRef }) : null,
5061
5156
  /* @__PURE__ */ jsx43(ControlledValuePlugin, { value, enabled: useInputWhenNoVariables }),
5062
5157
  /* @__PURE__ */ jsxs26(
5063
- HorizontalRhythm6,
5158
+ HorizontalRhythm7,
5064
5159
  {
5065
5160
  align: "center",
5066
5161
  gap: "xs",
@@ -5079,8 +5174,8 @@ function ParameterVariables(props) {
5079
5174
  "data-text-value": value,
5080
5175
  css: [
5081
5176
  input2,
5082
- typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(2) : css24``,
5083
- inputCss != null ? inputCss : css24``
5177
+ typeof multiLine === "number" ? inputMultiLine(multiLine) : multiLine === true ? inputMultiLine(2) : css25``,
5178
+ inputCss != null ? inputCss : css25``
5084
5179
  ]
5085
5180
  }
5086
5181
  ) }),
@@ -5088,7 +5183,7 @@ function ParameterVariables(props) {
5088
5183
  VariablesComposerVariableMenu,
5089
5184
  {
5090
5185
  ...sharedMenuProps,
5091
- buttonCss: [variableBindButton2],
5186
+ buttonCss: [variableBindButton],
5092
5187
  tip: useInputWhenNoVariables ? void 0 : "Tip: access this list by typing $$",
5093
5188
  buttonProps: hasVariablesInValue ? { "aria-pressed": "true" } : void 0,
5094
5189
  replaceValueOnVariableInsert: useInputWhenNoVariables
@@ -5116,7 +5211,7 @@ ${prettifyBindExpression(bindExpression)}`
5116
5211
  }
5117
5212
 
5118
5213
  // src/components/Variables/VariablesList.tsx
5119
- import { css as css26 } from "@emotion/react";
5214
+ import { css as css27 } from "@emotion/react";
5120
5215
  import {
5121
5216
  AddListButton,
5122
5217
  button,
@@ -5131,8 +5226,8 @@ import {
5131
5226
  import { Draggable as Draggable2, Droppable as Droppable2 } from "react-beautiful-dnd";
5132
5227
 
5133
5228
  // src/components/Variables/styles/VariablesList.styles.ts
5134
- import { css as css25 } from "@emotion/react";
5135
- var tableRow = (isDragging) => css25`
5229
+ import { css as css26 } from "@emotion/react";
5230
+ var tableRow = (isDragging) => css26`
5136
5231
  position: relative;
5137
5232
  ${isDragging ? `
5138
5233
  display: table;
@@ -5140,7 +5235,7 @@ var tableRow = (isDragging) => css25`
5140
5235
  top: auto !important;
5141
5236
  ` : void 0}
5142
5237
  `;
5143
- var tableCellDragIcon = css25`
5238
+ var tableCellDragIcon = css26`
5144
5239
  &::after {
5145
5240
  content: '';
5146
5241
  display: block;
@@ -5158,7 +5253,7 @@ var tableCellDragIcon = css25`
5158
5253
  opacity: 1;
5159
5254
  }
5160
5255
  `;
5161
- var variableName = css25`
5256
+ var variableName = css26`
5162
5257
  border: none;
5163
5258
  font-weight: var(--fw-medium);
5164
5259
  padding: 0;
@@ -5168,7 +5263,7 @@ var variableName = css25`
5168
5263
  white-space: nowrap;
5169
5264
  max-width: 20ch;
5170
5265
  `;
5171
- var variableValue = css25`
5266
+ var variableValue = css26`
5172
5267
  overflow: hidden;
5173
5268
  text-overflow: ellipsis;
5174
5269
  white-space: nowrap;
@@ -5186,13 +5281,13 @@ function VariablesList() {
5186
5281
  const result = [...sorted || []];
5187
5282
  const [removed] = (_b = result == null ? void 0 : result.splice(res.source.index, 1)) != null ? _b : [];
5188
5283
  result == null ? void 0 : result.splice(res.destination.index, 0, removed);
5189
- const resultAsObj = result.reduce(
5190
- (acc, item, index) => ({
5284
+ const resultAsObj = result.reduce((acc, item, index) => {
5285
+ const { name, ...variableDefinition } = item;
5286
+ return {
5191
5287
  ...acc,
5192
- [item.name]: { type: item.type, default: item.default, order: index }
5193
- }),
5194
- {}
5195
- );
5288
+ [item.name]: { ...variableDefinition, order: index }
5289
+ };
5290
+ }, {});
5196
5291
  dispatch({ type: "reorder", result: resultAsObj });
5197
5292
  return result;
5198
5293
  }
@@ -5245,7 +5340,7 @@ function VariablesList() {
5245
5340
  title: `delete ${text}`,
5246
5341
  css: [
5247
5342
  button,
5248
- css26`
5343
+ css27`
5249
5344
  background: transparent;
5250
5345
  `
5251
5346
  ],
@@ -5374,7 +5469,7 @@ function TextVariableRenderer({ definition, value, setValue }) {
5374
5469
  }
5375
5470
 
5376
5471
  // src/components/Request/RequestBody.tsx
5377
- import { css as css28 } from "@emotion/react";
5472
+ import { css as css29 } from "@emotion/react";
5378
5473
  import { InputSelect as InputSelect4, JsonEditor } from "@uniformdev/design-system";
5379
5474
  import { useState as useState14 } from "react";
5380
5475
 
@@ -5460,11 +5555,11 @@ function useRequest() {
5460
5555
  }
5461
5556
 
5462
5557
  // src/components/Request/styles/Request.styles.ts
5463
- import { css as css27 } from "@emotion/react";
5464
- var innerContentStyles = css27`
5558
+ import { css as css28 } from "@emotion/react";
5559
+ var innerContentStyles = css28`
5465
5560
  background: var(--white);
5466
5561
  `;
5467
- var requestTypeContainer = (bgColor) => css27`
5562
+ var requestTypeContainer = (bgColor) => css28`
5468
5563
  align-items: start;
5469
5564
  background: ${bgColor};
5470
5565
  display: grid;
@@ -5506,7 +5601,7 @@ function RequestBody() {
5506
5601
  return /* @__PURE__ */ jsxs28(
5507
5602
  "div",
5508
5603
  {
5509
- css: css28`
5604
+ css: css29`
5510
5605
  background: var(--white);
5511
5606
  `,
5512
5607
  children: [
@@ -5514,7 +5609,7 @@ function RequestBody() {
5514
5609
  RequestTypeContainer,
5515
5610
  {
5516
5611
  bgColor: "var(--gray-100)",
5517
- css: css28`
5612
+ css: css29`
5518
5613
  padding: var(--spacing-sm) var(--spacing-base);
5519
5614
  `,
5520
5615
  children: /* @__PURE__ */ jsx49(
@@ -5803,7 +5898,7 @@ function RequestParameters({
5803
5898
  }
5804
5899
 
5805
5900
  // src/components/Request/RequestUrl.tsx
5806
- import { css as css29 } from "@emotion/react";
5901
+ import { css as css30 } from "@emotion/react";
5807
5902
  import { useMemo as useMemo13 } from "react";
5808
5903
 
5809
5904
  // src/components/Request/urlEncodeRequestParameter.ts
@@ -5840,7 +5935,7 @@ function RequestUrl() {
5840
5935
  return /* @__PURE__ */ jsxs31(
5841
5936
  "small",
5842
5937
  {
5843
- css: css29`
5938
+ css: css30`
5844
5939
  display: inline-block;
5845
5940
  margin-bottom: var(--spacing-xs);
5846
5941
  word-break: break-word;
@@ -6141,7 +6236,7 @@ var MeshApp = ({
6141
6236
  };
6142
6237
 
6143
6238
  // src/components/ObjectSearch/DataRefreshButton.tsx
6144
- import { css as css30 } from "@emotion/react";
6239
+ import { css as css31 } from "@emotion/react";
6145
6240
  import { Button as Button3, LoadingIndicator as LoadingIndicator4 } from "@uniformdev/design-system";
6146
6241
  import { jsx as jsx58, jsxs as jsxs33 } from "@emotion/react/jsx-runtime";
6147
6242
  var DataRefreshButton = ({
@@ -6154,7 +6249,7 @@ var DataRefreshButton = ({
6154
6249
  !isLoading ? null : /* @__PURE__ */ jsx58(
6155
6250
  LoadingIndicator4,
6156
6251
  {
6157
- css: css30`
6252
+ css: css31`
6158
6253
  ${isLoading ? "opacity: 0.2;" : void 0}
6159
6254
  `
6160
6255
  }
@@ -6164,7 +6259,7 @@ var DataRefreshButton = ({
6164
6259
  };
6165
6260
 
6166
6261
  // src/components/ObjectSearch/ObjectSearchContainer.tsx
6167
- import { css as css32 } from "@emotion/react";
6262
+ import { css as css33 } from "@emotion/react";
6168
6263
  import { bindVariables } from "@uniformdev/canvas";
6169
6264
  import { Callout as Callout5, Container, IconsProvider, ScrollableList, VerticalRhythm as VerticalRhythm2 } from "@uniformdev/design-system";
6170
6265
 
@@ -6172,7 +6267,7 @@ import { Callout as Callout5, Container, IconsProvider, ScrollableList, Vertical
6172
6267
  import { bindVariablesToObject as bindVariablesToObject2 } from "@uniformdev/canvas";
6173
6268
  import {
6174
6269
  createContext as createContext5,
6175
- useCallback as useCallback4,
6270
+ useCallback as useCallback5,
6176
6271
  useContext as useContext7,
6177
6272
  useDeferredValue,
6178
6273
  useMemo as useMemo14,
@@ -6209,7 +6304,7 @@ var ObjectSearchProvider = ({
6209
6304
  const querySearchDeferred = useDeferredValue(query);
6210
6305
  const [selectedItems, setSelectedItems] = useState16(currentlySelectedItems != null ? currentlySelectedItems : []);
6211
6306
  const [list, setList] = useState16({});
6212
- const onSetQuery = useCallback4(
6307
+ const onSetQuery = useCallback5(
6213
6308
  (value2) => {
6214
6309
  if (Array.isArray(value2.contentType) && value2.contentType.length > 0) {
6215
6310
  return setQuery({
@@ -6221,7 +6316,7 @@ var ObjectSearchProvider = ({
6221
6316
  },
6222
6317
  [setQuery]
6223
6318
  );
6224
- const onSelectItem = useCallback4(
6319
+ const onSelectItem = useCallback5(
6225
6320
  (selectedResult) => {
6226
6321
  if (Array.isArray(selectedResult)) {
6227
6322
  setSelectedItems(selectedResult);
@@ -6235,10 +6330,10 @@ var ObjectSearchProvider = ({
6235
6330
  },
6236
6331
  [setSelectedItems, selectedItems]
6237
6332
  );
6238
- const onRemoveAllSelectedItems = useCallback4(() => {
6333
+ const onRemoveAllSelectedItems = useCallback5(() => {
6239
6334
  setSelectedItems([]);
6240
6335
  }, [setSelectedItems]);
6241
- const onSetList = useCallback4(
6336
+ const onSetList = useCallback5(
6242
6337
  (value2) => {
6243
6338
  setList(value2);
6244
6339
  },
@@ -6290,9 +6385,9 @@ function bindQuery(query, inputs) {
6290
6385
  import { Chip, Popover } from "@uniformdev/design-system";
6291
6386
 
6292
6387
  // src/components/ObjectSearch/styles/ObjectSearchListItem.styles.ts
6293
- import { css as css31 } from "@emotion/react";
6388
+ import { css as css32 } from "@emotion/react";
6294
6389
  import { skeletonLoading } from "@uniformdev/design-system";
6295
- var ObjectListItemContainer = css31`
6390
+ var ObjectListItemContainer = css32`
6296
6391
  align-items: center;
6297
6392
  border: 1px solid var(--gray-300);
6298
6393
  border-radius: var(--rounded-base);
@@ -6301,11 +6396,11 @@ var ObjectListItemContainer = css31`
6301
6396
  grid-template-columns: 1fr auto;
6302
6397
  padding: var(--spacing-sm);
6303
6398
  `;
6304
- var ObjectListItemContainerDisabled = css31`
6399
+ var ObjectListItemContainerDisabled = css32`
6305
6400
  opacity: var(--opacity-50);
6306
6401
  pointer-events: none;
6307
6402
  `;
6308
- var ObjectListItemLoading = css31`
6403
+ var ObjectListItemLoading = css32`
6309
6404
  animation: ${skeletonLoading} 1s linear infinite alternate;
6310
6405
  border-color: transparent;
6311
6406
  min-height: 42px;
@@ -6329,36 +6424,36 @@ var ObjectListItemLoading = css31`
6329
6424
  width: 1rem;
6330
6425
  }
6331
6426
  `;
6332
- var ObjectListItemHeadingGroup = css31`
6427
+ var ObjectListItemHeadingGroup = css32`
6333
6428
  align-items: center;
6334
6429
  display: grid;
6335
6430
  `;
6336
- var ObjectListItemThumbnail = css31`
6431
+ var ObjectListItemThumbnail = css32`
6337
6432
  width: 30px;
6338
6433
  object-fit: contain;
6339
6434
  `;
6340
- var ObjectListItemTitle = css31`
6435
+ var ObjectListItemTitle = css32`
6341
6436
  color: var(--typography-base);
6342
6437
  display: block;
6343
6438
  font-size: var(--fs-sm);
6344
6439
  `;
6345
- var ObjectListItemSubtitle = css31`
6440
+ var ObjectListItemSubtitle = css32`
6346
6441
  color: var(--gray-500);
6347
6442
  display: block;
6348
6443
  font-size: var(--fs-xs);
6349
6444
  line-height: 1;
6350
6445
  `;
6351
- var ObjectListItemInfoContainer = css31`
6446
+ var ObjectListItemInfoContainer = css32`
6352
6447
  align-items: center;
6353
6448
  display: flex;
6354
6449
  gap: var(--spacing-sm);
6355
6450
  justify-content: center;
6356
6451
  `;
6357
- var ObjectListItemControlledContent = css31`
6452
+ var ObjectListItemControlledContent = css32`
6358
6453
  display: flex;
6359
6454
  gap: var(--spacing-sm);
6360
6455
  `;
6361
- var ObjectListItemUnControlledContent = css31`
6456
+ var ObjectListItemUnControlledContent = css32`
6362
6457
  margin-top: var(--spacing-sm);
6363
6458
  grid-column: 1 / -1;
6364
6459
  `;
@@ -6375,7 +6470,8 @@ var ObjectSearchListItem = ({
6375
6470
  onSelect,
6376
6471
  isMulti,
6377
6472
  disabled,
6378
- children
6473
+ children,
6474
+ ...props
6379
6475
  }) => {
6380
6476
  const { onSelectItem, selectedListItems, isMulti: globalIsMulti } = useObjectSearchContext();
6381
6477
  const formatedContentType = Array.isArray(contentType) ? contentType.join(", ") : contentType;
@@ -6395,6 +6491,7 @@ var ObjectSearchListItem = ({
6395
6491
  role: "listitem",
6396
6492
  css: [ObjectListItemContainer, disabled ? ObjectListItemContainerDisabled : void 0],
6397
6493
  "data-testid": "list-item",
6494
+ ...props,
6398
6495
  children: [
6399
6496
  /* @__PURE__ */ jsxs34(
6400
6497
  "div",
@@ -6443,7 +6540,7 @@ var ObjectSearchContainer = ({
6443
6540
  ScrollableList,
6444
6541
  {
6445
6542
  role: "list",
6446
- css: css32`
6543
+ css: css33`
6447
6544
  > div {
6448
6545
  transition: max-height var(--duration-slow) var(--timing-ease-out);
6449
6546
  max-height: ${selectedListItems.length === 0 ? "50vh" : "184px"};
@@ -6515,12 +6612,12 @@ var DefaultResultList = () => {
6515
6612
  };
6516
6613
 
6517
6614
  // src/components/ObjectSearch/ObjectSearchFilter.tsx
6518
- import { InputKeywordSearch as InputKeywordSearch2, InputSelect as InputSelect6 } from "@uniformdev/design-system";
6615
+ import { DebouncedInputKeywordSearch, InputSelect as InputSelect6 } from "@uniformdev/design-system";
6519
6616
  import { useMemo as useMemo15, useState as useState17 } from "react";
6520
6617
 
6521
6618
  // src/components/ObjectSearch/styles/ObjectSearchFilterContainer.styles.ts
6522
- import { css as css33 } from "@emotion/react";
6523
- var ObjectSearchFilterContainerLabel = css33`
6619
+ import { css as css34 } from "@emotion/react";
6620
+ var ObjectSearchFilterContainerLabel = css34`
6524
6621
  align-items: center;
6525
6622
  display: flex;
6526
6623
  font-size: var(--fs-sm);
@@ -6528,11 +6625,11 @@ var ObjectSearchFilterContainerLabel = css33`
6528
6625
  line-height: 1rem;
6529
6626
  margin-bottom: var(--spacing-sm);
6530
6627
  `;
6531
- var ObjectSearchFilterContainer = css33`
6628
+ var ObjectSearchFilterContainer = css34`
6532
6629
  display: grid;
6533
6630
  gap: var(--spacing-base);
6534
6631
  `;
6535
- var ObjectSearchFilterGrid = (gridColumns) => css33`
6632
+ var ObjectSearchFilterGrid = (gridColumns) => css34`
6536
6633
  display: grid;
6537
6634
  grid-template-columns: ${gridColumns};
6538
6635
  gap: var(--spacing-base);
@@ -6589,14 +6686,14 @@ var ObjectSearchFilter = ({
6589
6686
  }
6590
6687
  ) : null,
6591
6688
  /* @__PURE__ */ jsx62(
6592
- InputKeywordSearch2,
6689
+ DebouncedInputKeywordSearch,
6593
6690
  {
6594
6691
  inputFieldName: searchInputName,
6595
6692
  placeholder: searchInputPlaceholderText,
6596
- onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
6693
+ onSearchTextChanged: (keyword) => handleFilterChange({ keyword }),
6597
6694
  disabledFieldSubmission: true,
6598
- onClear: () => handleFilterChange({ keyword: "" }),
6599
- value: searchState.keyword
6695
+ defaultValue: searchState.keyword,
6696
+ delay: 300
6600
6697
  }
6601
6698
  )
6602
6699
  ]
@@ -6618,9 +6715,9 @@ import { Badge, Button as Button4, Popover as Popover2 } from "@uniformdev/desig
6618
6715
  import { format as timeagoFormat } from "timeago.js";
6619
6716
 
6620
6717
  // src/components/ObjectSearch/styles/ObjectSearchResultItemButton.styles.ts
6621
- import { css as css34 } from "@emotion/react";
6718
+ import { css as css35 } from "@emotion/react";
6622
6719
  import { button as button2 } from "@uniformdev/design-system";
6623
- var ButtonStyles = css34`
6720
+ var ButtonStyles = css35`
6624
6721
  ${button2}
6625
6722
  background: transparent;
6626
6723
  border: 1px solid var(--typography-base);
@@ -6647,7 +6744,7 @@ var ButtonStyles = css34`
6647
6744
  text-decoration: none;
6648
6745
  }
6649
6746
  `;
6650
- var ButtonIcon = css34`
6747
+ var ButtonIcon = css35`
6651
6748
  width: 1rem;
6652
6749
  height: 1rem;
6653
6750
  `;
@@ -6676,8 +6773,8 @@ var LinkButton = ({
6676
6773
  };
6677
6774
 
6678
6775
  // src/components/ObjectSearch/styles/ObjectSearchResultItem.styles.ts
6679
- import { css as css35 } from "@emotion/react";
6680
- var ObjectSearchResultItemContainer = css35`
6776
+ import { css as css36 } from "@emotion/react";
6777
+ var ObjectSearchResultItemContainer = css36`
6681
6778
  align-items: center;
6682
6779
  border: 1px solid var(--gray-300);
6683
6780
  border-radius: var(--rounded-base);
@@ -6693,7 +6790,7 @@ var ObjectSearchResultItemContainer = css35`
6693
6790
  }
6694
6791
  }
6695
6792
  `;
6696
- var ObjectSearchDragHandle = css35`
6793
+ var ObjectSearchDragHandle = css36`
6697
6794
  border-left: 2px dotted var(--gray-300);
6698
6795
  border-right: 2px dotted var(--gray-300);
6699
6796
  position: absolute;
@@ -6702,35 +6799,35 @@ var ObjectSearchDragHandle = css35`
6702
6799
  transition: opacity var(--duration-fast) var(--timing-ease-out);
6703
6800
  opacity: 0;
6704
6801
  `;
6705
- var ObjectSearchResultItemSubtitle = css35`
6802
+ var ObjectSearchResultItemSubtitle = css36`
6706
6803
  color: var(--gray-500);
6707
6804
  display: block;
6708
6805
  font-size: var(--fs-xs);
6709
6806
  line-height: 1;
6710
6807
  `;
6711
- var ObjectSearchResultItemTitle = css35`
6808
+ var ObjectSearchResultItemTitle = css36`
6712
6809
  align-items: center;
6713
6810
  color: var(--typography-base);
6714
6811
  display: flex;
6715
6812
  gap: var(--spacing-xs);
6716
6813
  `;
6717
- var ObjectSearchResultItemTimeStamp = css35`
6814
+ var ObjectSearchResultItemTimeStamp = css36`
6718
6815
  color: var(--gray-500);
6719
6816
  font-size: var(--fs-xs);
6720
6817
  `;
6721
- var ObjectSearchAuthorStateGroup = css35`
6818
+ var ObjectSearchAuthorStateGroup = css36`
6722
6819
  align-items: center;
6723
6820
  display: flex;
6724
6821
  gap: var(--spacing-sm);
6725
6822
  `;
6726
- var ObjectSearchUpdateGroup = css35`
6823
+ var ObjectSearchUpdateGroup = css36`
6727
6824
  display: grid;
6728
6825
  `;
6729
- var ObjectSearchContentContainer = css35`
6826
+ var ObjectSearchContentContainer = css36`
6730
6827
  display: flex;
6731
6828
  gap: var(--spacing-base);
6732
6829
  `;
6733
- var ObjectSearchImage = css35`
6830
+ var ObjectSearchImage = css36`
6734
6831
  width: 56px;
6735
6832
  object-fit: contain;
6736
6833
  `;
@@ -6798,26 +6895,26 @@ import { Button as Button5, Counter } from "@uniformdev/design-system";
6798
6895
  import { Draggable as Draggable3, Droppable as Droppable3 } from "react-beautiful-dnd";
6799
6896
 
6800
6897
  // src/components/ObjectSearch/styles/ObjectSearchResultList.styles.ts
6801
- import { css as css36 } from "@emotion/react";
6802
- var ObjectSearchResultListContainer = css36`
6898
+ import { css as css37 } from "@emotion/react";
6899
+ var ObjectSearchResultListContainer = css37`
6803
6900
  align-items: center;
6804
6901
  display: flex;
6805
6902
  gap: var(--spacing-sm);
6806
6903
  justify-content: space-between;
6807
6904
  `;
6808
- var ObjectSearchDragContainer = css36`
6905
+ var ObjectSearchDragContainer = css37`
6809
6906
  margin: 0 0 var(--spacing-sm);
6810
6907
  `;
6811
- var ObjectSearchContainerDragging = css36`
6908
+ var ObjectSearchContainerDragging = css37`
6812
6909
  box-shadow: var(--shadow-base);
6813
6910
  opacity: var(--opacity-50);
6814
6911
  `;
6815
- var ObjectSearchResultListCounterContainer = css36`
6912
+ var ObjectSearchResultListCounterContainer = css37`
6816
6913
  align-items: center;
6817
6914
  display: flex;
6818
6915
  gap: var(--spacing-sm);
6819
6916
  `;
6820
- var ObjectSearchResultListTitle = css36`
6917
+ var ObjectSearchResultListTitle = css37`
6821
6918
  font-weight: var(--fw-bold);
6822
6919
  line-height: 1;
6823
6920
  `;
@@ -6829,6 +6926,7 @@ function ObjectSearchResultList({
6829
6926
  removeButtonText = "Remove all",
6830
6927
  onRemoveAllSelected,
6831
6928
  hideRemoveButton = false,
6929
+ resultLabelOverride,
6832
6930
  additionalButtons,
6833
6931
  renderResultComponent = (value) => /* @__PURE__ */ jsx66(ObjectSearchResultItem, { ...value }),
6834
6932
  multiSelectId,
@@ -6874,11 +6972,11 @@ function ObjectSearchResultList({
6874
6972
  };
6875
6973
  return /* @__PURE__ */ jsxs40(Fragment13, { children: [
6876
6974
  /* @__PURE__ */ jsxs40("div", { role: "group", css: ObjectSearchResultListContainer, children: [
6877
- /* @__PURE__ */ jsxs40("div", { role: "note", css: ObjectSearchResultListCounterContainer, children: [
6975
+ !resultLabelOverride ? /* @__PURE__ */ jsxs40("div", { role: "note", css: ObjectSearchResultListCounterContainer, children: [
6878
6976
  /* @__PURE__ */ jsx66("span", { css: ObjectSearchResultListTitle, children: resultLabelText }),
6879
6977
  " ",
6880
6978
  !selectedListItems.length ? null : /* @__PURE__ */ jsx66(Counter, { count: selectedListItems.length })
6881
- ] }),
6979
+ ] }) : resultLabelOverride,
6882
6980
  /* @__PURE__ */ jsxs40("div", { css: ObjectSearchResultListCounterContainer, children: [
6883
6981
  additionalButtons,
6884
6982
  hideRemoveButton ? null : /* @__PURE__ */ jsx66(
@@ -6920,7 +7018,7 @@ function ObjectSearchResultList({
6920
7018
  }
6921
7019
 
6922
7020
  // src/components/ObjectSearch/QueryFilter.tsx
6923
- import { Input as Input5, InputKeywordSearch as InputKeywordSearch3, InputSelect as InputSelect7, VerticalRhythm as VerticalRhythm3 } from "@uniformdev/design-system";
7021
+ import { DebouncedInputKeywordSearch as DebouncedInputKeywordSearch2, Input as Input5, InputSelect as InputSelect7, VerticalRhythm as VerticalRhythm3 } from "@uniformdev/design-system";
6924
7022
  import { useEffect as useEffect16, useState as useState18 } from "react";
6925
7023
  import { jsx as jsx67, jsxs as jsxs41 } from "@emotion/react/jsx-runtime";
6926
7024
  var QueryFilter = ({
@@ -6939,26 +7037,24 @@ var QueryFilter = ({
6939
7037
  sortOrderLabel = "Sort Order",
6940
7038
  sortOrderOptions = [
6941
7039
  {
6942
- name: "Ascending",
6943
- id: "asc",
7040
+ value: "asc",
6944
7041
  label: "Ascending"
6945
7042
  },
6946
7043
  {
6947
- name: "Descending",
6948
- id: "desc",
7044
+ value: "desc",
6949
7045
  label: "Descending"
6950
7046
  }
6951
7047
  ],
6952
7048
  children
6953
7049
  }) => {
6954
- var _a, _b, _c, _d, _e, _f;
7050
+ var _a, _b, _c, _d, _e, _f, _g;
6955
7051
  const { query, onSetQuery } = useObjectSearchContext();
6956
7052
  const [queryState, setQueryState] = useState18({
6957
7053
  contentType: (_a = query.contentType) != null ? _a : "",
6958
- keyword: (_b = query.contentType) != null ? _b : "",
6959
- count: countValue != null ? countValue : 5,
6960
- sortBy: (_c = sortOptions[0].id) != null ? _c : "",
6961
- sortOrder: (_d = sortOrderOptions[0].id) != null ? _d : ""
7054
+ keyword: (_b = query.keyword) != null ? _b : "",
7055
+ count: (_c = query.count) != null ? _c : countValue,
7056
+ sortBy: (_d = query.sortBy) != null ? _d : "",
7057
+ sortOrder: (_e = query.sortOrder) != null ? _e : ""
6962
7058
  });
6963
7059
  const handleFilterChange = (value) => {
6964
7060
  setQueryState((prev) => ({ ...prev, ...value }));
@@ -6966,7 +7062,7 @@ var QueryFilter = ({
6966
7062
  };
6967
7063
  useEffect16(() => {
6968
7064
  onSetQuery(queryState);
6969
- }, [onSetQuery, queryState]);
7065
+ }, []);
6970
7066
  return /* @__PURE__ */ jsxs41("fieldset", { children: [
6971
7067
  /* @__PURE__ */ jsx67("span", { css: ObjectSearchFilterContainerLabel, children: queryFilterTitle }),
6972
7068
  /* @__PURE__ */ jsx67("div", { css: ObjectSearchFilterContainer, children: /* @__PURE__ */ jsxs41(VerticalRhythm3, { children: [
@@ -6974,20 +7070,20 @@ var QueryFilter = ({
6974
7070
  InputVariables,
6975
7071
  {
6976
7072
  label: searchInputLabel,
6977
- value: (_e = queryState.keyword) != null ? _e : "",
7073
+ value: (_f = queryState.keyword) != null ? _f : "",
6978
7074
  onChange: (newQuery) => handleFilterChange({ keyword: newQuery }),
6979
7075
  disableInlineMenu: true,
6980
7076
  id: "qf_searchText",
6981
7077
  inputWhenNoVariables: /* @__PURE__ */ jsx67(
6982
- InputKeywordSearch3,
7078
+ DebouncedInputKeywordSearch2,
6983
7079
  {
6984
7080
  id: "qf_searchText",
6985
7081
  inputFieldName: searchInputName,
6986
7082
  placeholder: searchInputPlaceholderText,
6987
- onSearchTextChanged: (e) => handleFilterChange({ keyword: e }),
7083
+ onSearchTextChanged: (keyword) => handleFilterChange({ keyword }),
6988
7084
  disabledFieldSubmission: true,
6989
- onClear: () => handleFilterChange({ keyword: "" }),
6990
- value: queryState.keyword
7085
+ delay: 300,
7086
+ defaultValue: queryState.keyword
6991
7087
  }
6992
7088
  )
6993
7089
  }
@@ -6998,7 +7094,7 @@ var QueryFilter = ({
6998
7094
  {
6999
7095
  label: contentTypeLabel,
7000
7096
  id: "qf_contentType",
7001
- value: (_f = queryState.contentType) != null ? _f : "",
7097
+ value: (_g = queryState.contentType) != null ? _g : "",
7002
7098
  onChange: (newType) => handleFilterChange({ contentType: newType }),
7003
7099
  disableInlineMenu: true,
7004
7100
  inputWhenNoVariables: /* @__PURE__ */ jsx67(
@@ -7007,13 +7103,8 @@ var QueryFilter = ({
7007
7103
  id: "qf_contentType",
7008
7104
  label: contentTypeLabel,
7009
7105
  showLabel: false,
7010
- options: [
7011
- ...!requireContentType ? [{ id: "", label: typeSelectorAllTypesOptionText }] : [],
7012
- ...contentTypeOptions ? contentTypeOptions.map((option) => {
7013
- var _a2;
7014
- return { id: option.id, label: (_a2 = option.label) != null ? _a2 : option.name, name: option.name };
7015
- }) : []
7016
- ],
7106
+ defaultOption: requireContentType ? void 0 : typeSelectorAllTypesOptionText,
7107
+ options: contentTypeOptions != null ? contentTypeOptions : [],
7017
7108
  onChange: (e) => handleFilterChange({ contentType: e.target.value }),
7018
7109
  value: queryState.contentType
7019
7110
  }
@@ -7028,6 +7119,7 @@ var QueryFilter = ({
7028
7119
  value: queryState.count.toString(10),
7029
7120
  onChange: (newCount) => handleFilterChange({ count: newCount }),
7030
7121
  disableInlineMenu: true,
7122
+ valueToResetTo: "5",
7031
7123
  inputWhenNoVariables: /* @__PURE__ */ jsx67(
7032
7124
  Input5,
7033
7125
  {
@@ -7058,16 +7150,8 @@ var QueryFilter = ({
7058
7150
  label: sortLabel,
7059
7151
  id: "qf_sortBy",
7060
7152
  showLabel: false,
7061
- options: [
7062
- {
7063
- label: "Select a sort",
7064
- id: ""
7065
- },
7066
- ...sortOptions ? sortOptions.map((option) => {
7067
- var _a2;
7068
- return { id: option.id, name: option.name, label: (_a2 = option.label) != null ? _a2 : option.name };
7069
- }) : []
7070
- ],
7153
+ defaultOption: "Select a sort",
7154
+ options: sortOptions != null ? sortOptions : [],
7071
7155
  onChange: (e) => handleFilterChange({ sortBy: e.target.value }),
7072
7156
  value: queryState.sortBy
7073
7157
  }
@@ -7088,12 +7172,7 @@ var QueryFilter = ({
7088
7172
  label: sortOrderLabel,
7089
7173
  id: "qf_sortOrder",
7090
7174
  showLabel: false,
7091
- options: [
7092
- ...sortOrderOptions ? sortOrderOptions.map((option) => {
7093
- var _a2;
7094
- return { value: option.id, label: (_a2 = option.label) != null ? _a2 : option.name, name: option.name };
7095
- }) : []
7096
- ],
7175
+ options: sortOrderOptions != null ? sortOrderOptions : [],
7097
7176
  onChange: (e) => handleFilterChange({ sortOrder: e.target.value }),
7098
7177
  value: queryState.sortOrder
7099
7178
  }
@@ -7159,6 +7238,60 @@ var JsonMeshVariableEditor = ({
7159
7238
  return null;
7160
7239
  };
7161
7240
 
7241
+ // src/components/SearchAndFilter/filtersMapper.tsx
7242
+ import {
7243
+ filterMapper,
7244
+ FilterMultiChoiceEditor
7245
+ } from "@uniformdev/design-system";
7246
+ import { DateEditor, FilterSingleChoiceEditor, NumberEditor, TextEditor } from "@uniformdev/design-system";
7247
+ import { jsx as jsx69 } from "@emotion/react/jsx-runtime";
7248
+ function withInputVariables(WrappedComponent) {
7249
+ const WithInputVariables = (props) => {
7250
+ if (Array.isArray(props.value) || !props.bindable || props.disabled || props.readOnly) {
7251
+ return /* @__PURE__ */ jsx69(WrappedComponent, { ...props });
7252
+ }
7253
+ return /* @__PURE__ */ jsx69(
7254
+ InputVariables,
7255
+ {
7256
+ disableInlineMenu: true,
7257
+ showMenuPosition: "inline-right",
7258
+ onChange: (newValue) => props.onChange(newValue != null ? newValue : ""),
7259
+ value: props.value,
7260
+ disabled: props.disabled,
7261
+ inputWhenNoVariables: /* @__PURE__ */ jsx69(WrappedComponent, { ...props })
7262
+ }
7263
+ );
7264
+ };
7265
+ return WithInputVariables;
7266
+ }
7267
+ function withInputVariablesForMultiValue(WrappedComponent) {
7268
+ const WithInputVariables = (props) => {
7269
+ var _a;
7270
+ if (!props.bindable || props.disabled || props.readOnly) {
7271
+ return /* @__PURE__ */ jsx69(WrappedComponent, { ...props });
7272
+ }
7273
+ return /* @__PURE__ */ jsx69(
7274
+ InputVariables,
7275
+ {
7276
+ disableInlineMenu: true,
7277
+ showMenuPosition: "inline-right",
7278
+ onChange: (newValue) => props.onChange(newValue ? [newValue] : []),
7279
+ value: (_a = props.value) == null ? void 0 : _a[0],
7280
+ inputWhenNoVariables: /* @__PURE__ */ jsx69(WrappedComponent, { ...props })
7281
+ }
7282
+ );
7283
+ };
7284
+ return WithInputVariables;
7285
+ }
7286
+ var bindableFiltersMapper = {
7287
+ ...filterMapper,
7288
+ multiChoice: withInputVariablesForMultiValue(FilterMultiChoiceEditor),
7289
+ singleChoice: withInputVariables(FilterSingleChoiceEditor),
7290
+ date: withInputVariables(DateEditor),
7291
+ text: withInputVariables(TextEditor),
7292
+ number: withInputVariables(NumberEditor)
7293
+ };
7294
+
7162
7295
  // src/utils/createLocationValidator.ts
7163
7296
  function createLocationValidator(setValue, validate) {
7164
7297
  return (dispatch) => setValue((previous) => {
@@ -7198,7 +7331,7 @@ import {
7198
7331
  Heading,
7199
7332
  Input as Input6,
7200
7333
  InputComboBox,
7201
- InputKeywordSearch as InputKeywordSearch4,
7334
+ InputKeywordSearch as InputKeywordSearch2,
7202
7335
  InputSelect as InputSelect8,
7203
7336
  InputToggle,
7204
7337
  Label,
@@ -7252,7 +7385,7 @@ export {
7252
7385
  icons_exports as Icons,
7253
7386
  Input6 as Input,
7254
7387
  InputComboBox,
7255
- InputKeywordSearch4 as InputKeywordSearch,
7388
+ InputKeywordSearch2 as InputKeywordSearch,
7256
7389
  InputSelect8 as InputSelect,
7257
7390
  InputToggle,
7258
7391
  InputVariables,
@@ -7322,6 +7455,7 @@ export {
7322
7455
  VariablesPlugin,
7323
7456
  VariablesProvider,
7324
7457
  badgeIcon,
7458
+ bindableFiltersMapper,
7325
7459
  convertConnectedDataToVariable,
7326
7460
  createLocationValidator,
7327
7461
  damSelectItemImage,