@fluentui/react-utilities 9.3.0 → 9.4.0

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.
Files changed (143) hide show
  1. package/CHANGELOG.json +45 -1
  2. package/CHANGELOG.md +20 -2
  3. package/dist/index.d.ts +18 -2
  4. package/lib/compose/getSlots.js +0 -8
  5. package/lib/compose/getSlots.js.map +1 -1
  6. package/lib/compose/isResolvedShorthand.js +0 -1
  7. package/lib/compose/isResolvedShorthand.js.map +1 -1
  8. package/lib/compose/resolveShorthand.js +2 -6
  9. package/lib/compose/resolveShorthand.js.map +1 -1
  10. package/lib/hooks/index.js +1 -0
  11. package/lib/hooks/index.js.map +1 -1
  12. package/lib/hooks/useControllableState.js +6 -12
  13. package/lib/hooks/useControllableState.js.map +1 -1
  14. package/lib/hooks/useEventCallback.js +0 -1
  15. package/lib/hooks/useEventCallback.js.map +1 -1
  16. package/lib/hooks/useFirstMount.js +0 -3
  17. package/lib/hooks/useFirstMount.js.map +1 -1
  18. package/lib/hooks/useForceUpdate.js +0 -1
  19. package/lib/hooks/useForceUpdate.js.map +1 -1
  20. package/lib/hooks/useId.js +0 -3
  21. package/lib/hooks/useId.js.map +1 -1
  22. package/lib/hooks/useIsomorphicLayoutEffect.js +0 -1
  23. package/lib/hooks/useIsomorphicLayoutEffect.js.map +1 -1
  24. package/lib/hooks/useMergedRefs.js +2 -3
  25. package/lib/hooks/useMergedRefs.js.map +1 -1
  26. package/lib/hooks/useOnClickOutside.js +8 -26
  27. package/lib/hooks/useOnClickOutside.js.map +1 -1
  28. package/lib/hooks/useOnScrollOutside.js +0 -4
  29. package/lib/hooks/useOnScrollOutside.js.map +1 -1
  30. package/lib/hooks/usePrevious.js +0 -1
  31. package/lib/hooks/usePrevious.js.map +1 -1
  32. package/lib/hooks/useScrollbarWidth.js +30 -0
  33. package/lib/hooks/useScrollbarWidth.js.map +1 -0
  34. package/lib/hooks/useTimeout.js +2 -3
  35. package/lib/hooks/useTimeout.js.map +1 -1
  36. package/lib/index.js +1 -1
  37. package/lib/index.js.map +1 -1
  38. package/lib/ssr/SSRContext.js +4 -11
  39. package/lib/ssr/SSRContext.js.map +1 -1
  40. package/lib/ssr/canUseDOM.js +2 -1
  41. package/lib/ssr/canUseDOM.js.map +1 -1
  42. package/lib/trigger/applyTriggerPropsToChildren.js +2 -6
  43. package/lib/trigger/applyTriggerPropsToChildren.js.map +1 -1
  44. package/lib/trigger/getTriggerChild.js +2 -3
  45. package/lib/trigger/getTriggerChild.js.map +1 -1
  46. package/lib/trigger/isFluentTrigger.js.map +1 -1
  47. package/lib/utils/getNativeElementProps.js +0 -2
  48. package/lib/utils/getNativeElementProps.js.map +1 -1
  49. package/lib/utils/getRTLSafeKey.js +0 -2
  50. package/lib/utils/getRTLSafeKey.js.map +1 -1
  51. package/lib/utils/getReactCallbackName.js +0 -3
  52. package/lib/utils/getReactCallbackName.js.map +1 -1
  53. package/lib/utils/isHTMLElement.js +2 -2
  54. package/lib/utils/isHTMLElement.js.map +1 -1
  55. package/lib/utils/isInteractiveHTMLElement.js +0 -4
  56. package/lib/utils/isInteractiveHTMLElement.js.map +1 -1
  57. package/lib/utils/mergeCallbacks.js.map +1 -1
  58. package/lib/utils/omit.js +0 -2
  59. package/lib/utils/omit.js.map +1 -1
  60. package/lib/utils/properties.js +7 -36
  61. package/lib/utils/properties.js.map +1 -1
  62. package/lib-amd/hooks/index.js +2 -1
  63. package/lib-amd/hooks/index.js.map +1 -1
  64. package/lib-amd/hooks/useScrollbarWidth.js +32 -0
  65. package/lib-amd/hooks/useScrollbarWidth.js.map +1 -0
  66. package/lib-amd/index.js +2 -1
  67. package/lib-amd/index.js.map +1 -1
  68. package/lib-amd/utils/isHTMLElement.js +4 -3
  69. package/lib-amd/utils/isHTMLElement.js.map +1 -1
  70. package/lib-amd/utils/isInteractiveHTMLElement.js.map +1 -1
  71. package/lib-commonjs/compose/getSlots.js +0 -12
  72. package/lib-commonjs/compose/getSlots.js.map +1 -1
  73. package/lib-commonjs/compose/index.js +0 -5
  74. package/lib-commonjs/compose/index.js.map +1 -1
  75. package/lib-commonjs/compose/isResolvedShorthand.js +0 -4
  76. package/lib-commonjs/compose/isResolvedShorthand.js.map +1 -1
  77. package/lib-commonjs/compose/resolveShorthand.js +2 -9
  78. package/lib-commonjs/compose/resolveShorthand.js.map +1 -1
  79. package/lib-commonjs/compose/types.js.map +1 -1
  80. package/lib-commonjs/hooks/index.js +1 -12
  81. package/lib-commonjs/hooks/index.js.map +1 -1
  82. package/lib-commonjs/hooks/useControllableState.js +6 -14
  83. package/lib-commonjs/hooks/useControllableState.js.map +1 -1
  84. package/lib-commonjs/hooks/useEventCallback.js +0 -5
  85. package/lib-commonjs/hooks/useEventCallback.js.map +1 -1
  86. package/lib-commonjs/hooks/useFirstMount.js +0 -6
  87. package/lib-commonjs/hooks/useFirstMount.js.map +1 -1
  88. package/lib-commonjs/hooks/useForceUpdate.js +0 -4
  89. package/lib-commonjs/hooks/useForceUpdate.js.map +1 -1
  90. package/lib-commonjs/hooks/useId.js +0 -8
  91. package/lib-commonjs/hooks/useId.js.map +1 -1
  92. package/lib-commonjs/hooks/useIsomorphicLayoutEffect.js +0 -4
  93. package/lib-commonjs/hooks/useIsomorphicLayoutEffect.js.map +1 -1
  94. package/lib-commonjs/hooks/useMergedRefs.js +2 -6
  95. package/lib-commonjs/hooks/useMergedRefs.js.map +1 -1
  96. package/lib-commonjs/hooks/useOnClickOutside.js +8 -30
  97. package/lib-commonjs/hooks/useOnClickOutside.js.map +1 -1
  98. package/lib-commonjs/hooks/useOnScrollOutside.js +0 -8
  99. package/lib-commonjs/hooks/useOnScrollOutside.js.map +1 -1
  100. package/lib-commonjs/hooks/usePrevious.js +0 -4
  101. package/lib-commonjs/hooks/usePrevious.js.map +1 -1
  102. package/lib-commonjs/hooks/useScrollbarWidth.js +37 -0
  103. package/lib-commonjs/hooks/useScrollbarWidth.js.map +1 -0
  104. package/lib-commonjs/hooks/useTimeout.js +2 -6
  105. package/lib-commonjs/hooks/useTimeout.js.map +1 -1
  106. package/lib-commonjs/index.js +7 -11
  107. package/lib-commonjs/index.js.map +1 -1
  108. package/lib-commonjs/ssr/SSRContext.js +4 -17
  109. package/lib-commonjs/ssr/SSRContext.js.map +1 -1
  110. package/lib-commonjs/ssr/canUseDOM.js +2 -3
  111. package/lib-commonjs/ssr/canUseDOM.js.map +1 -1
  112. package/lib-commonjs/ssr/index.js +0 -3
  113. package/lib-commonjs/ssr/index.js.map +1 -1
  114. package/lib-commonjs/trigger/applyTriggerPropsToChildren.js +2 -10
  115. package/lib-commonjs/trigger/applyTriggerPropsToChildren.js.map +1 -1
  116. package/lib-commonjs/trigger/getTriggerChild.js +2 -7
  117. package/lib-commonjs/trigger/getTriggerChild.js.map +1 -1
  118. package/lib-commonjs/trigger/index.js +0 -5
  119. package/lib-commonjs/trigger/index.js.map +1 -1
  120. package/lib-commonjs/trigger/isFluentTrigger.js +0 -2
  121. package/lib-commonjs/trigger/isFluentTrigger.js.map +1 -1
  122. package/lib-commonjs/trigger/types.js.map +1 -1
  123. package/lib-commonjs/utils/clamp.js +0 -2
  124. package/lib-commonjs/utils/clamp.js.map +1 -1
  125. package/lib-commonjs/utils/getNativeElementProps.js +0 -6
  126. package/lib-commonjs/utils/getNativeElementProps.js.map +1 -1
  127. package/lib-commonjs/utils/getRTLSafeKey.js +0 -4
  128. package/lib-commonjs/utils/getRTLSafeKey.js.map +1 -1
  129. package/lib-commonjs/utils/getReactCallbackName.js +0 -5
  130. package/lib-commonjs/utils/getReactCallbackName.js.map +1 -1
  131. package/lib-commonjs/utils/index.js +0 -9
  132. package/lib-commonjs/utils/index.js.map +1 -1
  133. package/lib-commonjs/utils/isHTMLElement.js +2 -4
  134. package/lib-commonjs/utils/isHTMLElement.js.map +1 -1
  135. package/lib-commonjs/utils/isInteractiveHTMLElement.js +0 -7
  136. package/lib-commonjs/utils/isInteractiveHTMLElement.js.map +1 -1
  137. package/lib-commonjs/utils/mergeCallbacks.js +0 -2
  138. package/lib-commonjs/utils/mergeCallbacks.js.map +1 -1
  139. package/lib-commonjs/utils/omit.js +0 -4
  140. package/lib-commonjs/utils/omit.js.map +1 -1
  141. package/lib-commonjs/utils/properties.js +7 -38
  142. package/lib-commonjs/utils/properties.js.map +1 -1
  143. package/package.json +2 -2
@@ -4,18 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getNativeProps = exports.divProperties = exports.dialogProperties = exports.imgProperties = exports.iframeProperties = exports.formProperties = exports.fieldsetProperties = exports.colProperties = exports.colGroupProperties = exports.tdProperties = exports.thProperties = exports.trProperties = exports.tableProperties = exports.optionProperties = exports.selectProperties = exports.textAreaProperties = exports.inputProperties = exports.buttonProperties = exports.timeProperties = exports.anchorProperties = exports.liProperties = exports.olProperties = exports.videoProperties = exports.audioProperties = exports.labelProperties = exports.htmlElementProperties = exports.microdataProperties = exports.baseElementProperties = exports.baseElementEvents = void 0;
7
-
8
7
  const toObjectMap = (...items) => {
9
8
  const result = {};
10
-
11
9
  for (const item of items) {
12
10
  const keys = Array.isArray(item) ? item : Object.keys(item);
13
-
14
11
  for (const key of keys) {
15
12
  result[key] = 1;
16
13
  }
17
14
  }
18
-
19
15
  return result;
20
16
  };
21
17
  /**
@@ -23,15 +19,12 @@ const toObjectMap = (...items) => {
23
19
  *
24
20
  * @public
25
21
  */
26
-
27
-
28
22
  exports.baseElementEvents = /*#__PURE__*/toObjectMap(['onAuxClick', 'onCopy', 'onCut', 'onPaste', 'onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onInput', 'onSubmit', 'onLoad', 'onError', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyUp', 'onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting', 'onClick', 'onClickCapture', 'onContextMenu', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart', 'onScroll', 'onWheel', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onGotPointerCapture', 'onLostPointerCapture']);
29
23
  /**
30
24
  * An array of element attributes which are allowed on every html element type.
31
25
  *
32
26
  * @public
33
27
  */
34
-
35
28
  exports.baseElementProperties = /*#__PURE__*/toObjectMap(['accessKey', 'children', 'className', 'contentEditable', 'dir', 'draggable', 'hidden', 'htmlFor', 'id', 'lang', 'ref', 'role', 'style', 'tabIndex', 'title', 'translate', 'spellCheck', 'name' // global
36
29
  ]);
37
30
  /**
@@ -39,7 +32,6 @@ exports.baseElementProperties = /*#__PURE__*/toObjectMap(['accessKey', 'children
39
32
  *
40
33
  * @public
41
34
  */
42
-
43
35
  exports.microdataProperties = /*#__PURE__*/toObjectMap(['itemID', 'itemProp', 'itemRef', 'itemScope', 'itemType' // global
44
36
  ]);
45
37
  /**
@@ -47,14 +39,12 @@ exports.microdataProperties = /*#__PURE__*/toObjectMap(['itemID', 'itemProp', 'i
47
39
  *
48
40
  * @public
49
41
  */
50
-
51
42
  exports.htmlElementProperties = /*#__PURE__*/toObjectMap(exports.baseElementProperties, exports.baseElementEvents, exports.microdataProperties);
52
43
  /**
53
44
  * An array of LABEL tag properties and events.
54
45
  *
55
46
  * @public
56
47
  */
57
-
58
48
  exports.labelProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['form' // button, fieldset, input, label, meter, object, output, select, textarea
59
49
  ]);
60
50
  /**
@@ -62,7 +52,6 @@ exports.labelProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties
62
52
 
63
53
  * @public
64
54
  */
65
-
66
55
  exports.audioProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['height', 'loop', 'muted', 'preload', 'src', 'width' // canvas, embed, iframe, img, input, object, video
67
56
  ]);
68
57
  /**
@@ -70,7 +59,6 @@ exports.audioProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties
70
59
  *
71
60
  * @public
72
61
  */
73
-
74
62
  exports.videoProperties = /*#__PURE__*/toObjectMap(exports.audioProperties, ['poster' // video
75
63
  ]);
76
64
  /**
@@ -78,7 +66,6 @@ exports.videoProperties = /*#__PURE__*/toObjectMap(exports.audioProperties, ['po
78
66
  *
79
67
  * @public
80
68
  */
81
-
82
69
  exports.olProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['start' // ol
83
70
  ]);
84
71
  /**
@@ -86,7 +73,6 @@ exports.olProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, [
86
73
  *
87
74
  * @public
88
75
  */
89
-
90
76
  exports.liProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['value' // button, input, li, option, meter, progress, param
91
77
  ]);
92
78
  /**
@@ -94,7 +80,6 @@ exports.liProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, [
94
80
  *
95
81
  * @public
96
82
  */
97
-
98
83
  exports.anchorProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['download', 'href', 'hrefLang', 'media', 'rel', 'target', 'type' // a, button, input, link, menu, object, script, source, style
99
84
  ]);
100
85
  /**
@@ -102,7 +87,6 @@ exports.anchorProperties = /*#__PURE__*/toObjectMap(exports.htmlElementPropertie
102
87
  *
103
88
  * @public
104
89
  */
105
-
106
90
  exports.timeProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['dateTime' // time
107
91
  ]);
108
92
  /**
@@ -110,7 +94,6 @@ exports.timeProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties,
110
94
  *
111
95
  * @public
112
96
  */
113
-
114
97
  exports.buttonProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'type', 'value' // button, input, li, option, meter, progress, param,
115
98
  ]);
116
99
  /**
@@ -118,7 +101,6 @@ exports.buttonProperties = /*#__PURE__*/toObjectMap(exports.htmlElementPropertie
118
101
  *
119
102
  * @public
120
103
  */
121
-
122
104
  exports.inputProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['accept', 'alt', 'autoCapitalize', 'autoComplete', 'checked', 'dirname', 'form', 'height', 'inputMode', 'list', 'max', 'maxLength', 'min', 'multiple', 'pattern', 'placeholder', 'readOnly', 'required', 'src', 'step', 'size', 'type', 'value', 'width' // canvas, embed, iframe, img, input, object, video
123
105
  ]);
124
106
  /**
@@ -126,7 +108,6 @@ exports.inputProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['a
126
108
  *
127
109
  * @public
128
110
  */
129
-
130
111
  exports.textAreaProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['autoCapitalize', 'cols', 'dirname', 'form', 'maxLength', 'placeholder', 'readOnly', 'required', 'rows', 'wrap' // textarea
131
112
  ]);
132
113
  /**
@@ -134,9 +115,9 @@ exports.textAreaProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties,
134
115
  *
135
116
  * @public
136
117
  */
137
-
138
118
  exports.selectProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['form', 'multiple', 'required' // input, select, textarea
139
119
  ]);
120
+
140
121
  exports.optionProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['selected', 'value' // button, input, li, option, meter, progress, param
141
122
  ]);
142
123
  /**
@@ -144,7 +125,6 @@ exports.optionProperties = /*#__PURE__*/toObjectMap(exports.htmlElementPropertie
144
125
  *
145
126
  * @public
146
127
  */
147
-
148
128
  exports.tableProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['cellPadding', 'cellSpacing' // table
149
129
  ]);
150
130
  /**
@@ -152,14 +132,12 @@ exports.tableProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties
152
132
  *
153
133
  * @public
154
134
  */
155
-
156
135
  exports.trProperties = exports.htmlElementProperties;
157
136
  /**
158
137
  * An array of TH tag properties and events.
159
138
  *
160
139
  * @public
161
140
  */
162
-
163
141
  exports.thProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['colSpan', 'rowSpan', 'scope' // th
164
142
  ]);
165
143
  /**
@@ -167,11 +145,12 @@ exports.thProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, [
167
145
  *
168
146
  * @public
169
147
  */
170
-
171
148
  exports.tdProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['colSpan', 'headers', 'rowSpan', 'scope' // th
172
149
  ]);
150
+
173
151
  exports.colGroupProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['span' // col, colgroup
174
152
  ]);
153
+
175
154
  exports.colProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['span' // col, colgroup
176
155
  ]);
177
156
  /**
@@ -179,7 +158,6 @@ exports.colProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties,
179
158
  *
180
159
  * @public
181
160
  */
182
-
183
161
  exports.fieldsetProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['disabled', 'form' // button, fieldset, input, label, meter, object, output, select, textarea
184
162
  ]);
185
163
  /**
@@ -187,7 +165,6 @@ exports.fieldsetProperties = /*#__PURE__*/toObjectMap(exports.htmlElementPropert
187
165
  *
188
166
  * @public
189
167
  */
190
-
191
168
  exports.formProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['acceptCharset', 'action', 'encType', 'encType', 'method', 'noValidate', 'target' // form
192
169
  ]);
193
170
  /**
@@ -195,7 +172,6 @@ exports.formProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties,
195
172
  *
196
173
  * @public
197
174
  */
198
-
199
175
  exports.iframeProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['allow', 'allowFullScreen', 'allowPaymentRequest', 'allowTransparency', 'csp', 'height', 'importance', 'referrerPolicy', 'sandbox', 'src', 'srcDoc', 'width' // canvas, embed, iframe, img, input, object, video,
200
176
  ]);
201
177
  /**
@@ -203,7 +179,6 @@ exports.iframeProperties = /*#__PURE__*/toObjectMap(exports.htmlElementPropertie
203
179
  *
204
180
  * @public
205
181
  */
206
-
207
182
  exports.imgProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['alt', 'crossOrigin', 'height', 'src', 'srcSet', 'useMap', 'width' // canvas, embed, iframe, img, input, object, video
208
183
  ]);
209
184
  /**
@@ -211,14 +186,12 @@ exports.imgProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties,
211
186
  *
212
187
  * @public
213
188
  */
214
-
215
189
  exports.dialogProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['open', 'onCancel', 'onClose']);
216
190
  /**
217
191
  * An array of DIV tag properties and events.
218
192
  *
219
193
  * @public
220
194
  */
221
-
222
195
  exports.divProperties = exports.htmlElementProperties;
223
196
  /**
224
197
  * Gets native supported props for an html element provided the allowance set. Use one of the property
@@ -236,30 +209,26 @@ exports.divProperties = exports.htmlElementProperties;
236
209
  * @returns The filtered props
237
210
  */
238
211
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
239
-
240
- function getNativeProps( // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
+ function getNativeProps(
213
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
241
214
  props, allowedPropNames, excludedPropNames) {
242
215
  // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for
243
216
  // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.
244
217
  // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then
245
218
  // return native props.
246
219
  // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797
247
- const isArray = Array.isArray(allowedPropNames); // eslint-disable-next-line @typescript-eslint/no-explicit-any
248
-
220
+ const isArray = Array.isArray(allowedPropNames);
221
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
249
222
  const result = {};
250
223
  const keys = Object.keys(props);
251
-
252
224
  for (const key of keys) {
253
225
  const isNativeProp = !isArray && allowedPropNames[key] || isArray && allowedPropNames.indexOf(key) >= 0 || key.indexOf('data-') === 0 || key.indexOf('aria-') === 0;
254
-
255
226
  if (isNativeProp && (!excludedPropNames || (excludedPropNames === null || excludedPropNames === void 0 ? void 0 : excludedPropNames.indexOf(key)) === -1)) {
256
227
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
257
228
  result[key] = props[key];
258
229
  }
259
230
  }
260
-
261
231
  return result;
262
232
  }
263
-
264
233
  exports.getNativeProps = getNativeProps;
265
234
  //# sourceMappingURL=properties.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-utilities/src/utils/properties.ts"],"names":[],"mappings":"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","sourcesContent":["const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n const result: Record<string, number> = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onAuxClick',\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of microdata attributes that are allowed on every html element type.\n *\n * @public\n */\nexport const microdataProperties = toObjectMap([\n 'itemID', // global\n 'itemProp', // global\n 'itemRef', // global\n 'itemScope', // global\n 'itemType', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents, microdataProperties);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of TIME tag properties and events.\n *\n * @public\n */\nexport const timeProperties = toObjectMap(htmlElementProperties, [\n 'dateTime', // time\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td, th\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FIELDSET tag properties and events.\n *\n * @public\n */\nexport const fieldsetProperties = toObjectMap(htmlElementProperties, [\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of DIALOG tag properties and events.\n *\n * @public\n */\nexport const dialogProperties = toObjectMap(htmlElementProperties, ['open', 'onCancel', 'onClose']);\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropNames - The array or record of allowed prop names.\n * @param excludedPropNames\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record<string, any>,\n allowedPropNames: string[] | Record<string, number>,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":"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","names":["toObjectMap","items","result","item","keys","Array","isArray","Object","key","exports","getNativeProps","props","allowedPropNames","excludedPropNames","isNativeProp","indexOf"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/utils/properties.ts"],"sourcesContent":["const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n const result: Record<string, number> = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onAuxClick',\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of microdata attributes that are allowed on every html element type.\n *\n * @public\n */\nexport const microdataProperties = toObjectMap([\n 'itemID', // global\n 'itemProp', // global\n 'itemRef', // global\n 'itemScope', // global\n 'itemType', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents, microdataProperties);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of TIME tag properties and events.\n *\n * @public\n */\nexport const timeProperties = toObjectMap(htmlElementProperties, [\n 'dateTime', // time\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td, th\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FIELDSET tag properties and events.\n *\n * @public\n */\nexport const fieldsetProperties = toObjectMap(htmlElementProperties, [\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of DIALOG tag properties and events.\n *\n * @public\n */\nexport const dialogProperties = toObjectMap(htmlElementProperties, ['open', 'onCancel', 'onClose']);\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropNames - The array or record of allowed prop names.\n * @param excludedPropNames\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record<string, any>,\n allowedPropNames: string[] | Record<string, number>,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-utilities",
3
- "version": "9.3.0",
3
+ "version": "9.4.0",
4
4
  "description": "A set of general React-specific utilities.",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "devDependencies": {
26
26
  "@fluentui/eslint-plugin": "*",
27
- "@fluentui/scripts": "^1.0.0"
27
+ "@fluentui/scripts": "*"
28
28
  },
29
29
  "dependencies": {
30
30
  "@fluentui/keyboard-keys": "^9.0.1",