@tamagui/dom 0.0.0-bootstrap.0 → 3.0.0-beta.1093.1

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 (93) hide show
  1. package/dist/cjs/events.cjs +16 -0
  2. package/dist/cjs/events.native.cjs +18 -0
  3. package/dist/cjs/events.native.js +20 -0
  4. package/dist/cjs/events.native.js.map +1 -0
  5. package/dist/cjs/index.cjs +25 -0
  6. package/dist/cjs/index.native.cjs +27 -0
  7. package/dist/cjs/index.native.js +29 -0
  8. package/dist/cjs/index.native.js.map +1 -0
  9. package/dist/cjs/props.cjs +16 -0
  10. package/dist/cjs/props.native.cjs +18 -0
  11. package/dist/cjs/props.native.js +20 -0
  12. package/dist/cjs/props.native.js.map +1 -0
  13. package/dist/cjs/tables/attributes.cjs +849 -0
  14. package/dist/cjs/tables/attributes.native.cjs +861 -0
  15. package/dist/cjs/tables/attributes.native.js +863 -0
  16. package/dist/cjs/tables/attributes.native.js.map +1 -0
  17. package/dist/cjs/tables/compatibility.cjs +337 -0
  18. package/dist/cjs/tables/compatibility.native.cjs +339 -0
  19. package/dist/cjs/tables/compatibility.native.js +341 -0
  20. package/dist/cjs/tables/compatibility.native.js.map +1 -0
  21. package/dist/cjs/tables/events.cjs +168 -0
  22. package/dist/cjs/tables/events.native.cjs +174 -0
  23. package/dist/cjs/tables/events.native.js +176 -0
  24. package/dist/cjs/tables/events.native.js.map +1 -0
  25. package/dist/cjs/tables/nativeBacking.cjs +132 -0
  26. package/dist/cjs/tables/nativeBacking.native.cjs +134 -0
  27. package/dist/cjs/tables/nativeBacking.native.js +136 -0
  28. package/dist/cjs/tables/nativeBacking.native.js.map +1 -0
  29. package/dist/cjs/tables/tags.cjs +575 -0
  30. package/dist/cjs/tables/tags.native.cjs +577 -0
  31. package/dist/cjs/tables/tags.native.js +579 -0
  32. package/dist/cjs/tables/tags.native.js.map +1 -0
  33. package/dist/cjs/tables/types.cjs +16 -0
  34. package/dist/cjs/tables/types.native.cjs +18 -0
  35. package/dist/cjs/tables/types.native.js +20 -0
  36. package/dist/cjs/tables/types.native.js.map +1 -0
  37. package/dist/esm/events.mjs +0 -0
  38. package/dist/esm/events.native.js +0 -0
  39. package/dist/esm/index.mjs +15 -0
  40. package/dist/esm/index.native.js +15 -0
  41. package/dist/esm/props.mjs +0 -0
  42. package/dist/esm/props.native.js +0 -0
  43. package/dist/esm/tables/attributes.mjs +821 -0
  44. package/dist/esm/tables/attributes.mjs.map +1 -0
  45. package/dist/esm/tables/attributes.native.js +831 -0
  46. package/dist/esm/tables/attributes.native.js.map +1 -0
  47. package/dist/esm/tables/compatibility.mjs +314 -0
  48. package/dist/esm/tables/compatibility.mjs.map +1 -0
  49. package/dist/esm/tables/compatibility.native.js +314 -0
  50. package/dist/esm/tables/compatibility.native.js.map +1 -0
  51. package/dist/esm/tables/events.mjs +145 -0
  52. package/dist/esm/tables/events.mjs.map +1 -0
  53. package/dist/esm/tables/events.native.js +149 -0
  54. package/dist/esm/tables/events.native.js.map +1 -0
  55. package/dist/esm/tables/nativeBacking.mjs +106 -0
  56. package/dist/esm/tables/nativeBacking.mjs.map +1 -0
  57. package/dist/esm/tables/nativeBacking.native.js +106 -0
  58. package/dist/esm/tables/nativeBacking.native.js.map +1 -0
  59. package/dist/esm/tables/tags.mjs +550 -0
  60. package/dist/esm/tables/tags.mjs.map +1 -0
  61. package/dist/esm/tables/tags.native.js +550 -0
  62. package/dist/esm/tables/tags.native.js.map +1 -0
  63. package/dist/esm/tables/types.mjs +0 -0
  64. package/dist/esm/tables/types.native.js +0 -0
  65. package/package.json +57 -7
  66. package/src/events.ts +58 -0
  67. package/src/index.ts +19 -0
  68. package/src/props.ts +699 -0
  69. package/src/tables/attributes.ts +863 -0
  70. package/src/tables/compatibility.ts +360 -0
  71. package/src/tables/events.ts +176 -0
  72. package/src/tables/nativeBacking.ts +132 -0
  73. package/src/tables/tags.ts +557 -0
  74. package/src/tables/types.ts +202 -0
  75. package/types/events.d.ts +58 -0
  76. package/types/events.d.ts.map +11 -0
  77. package/types/index.d.ts +20 -0
  78. package/types/index.d.ts.map +11 -0
  79. package/types/props.d.ts +499 -0
  80. package/types/props.d.ts.map +11 -0
  81. package/types/tables/attributes.d.ts +21 -0
  82. package/types/tables/attributes.d.ts.map +11 -0
  83. package/types/tables/compatibility.d.ts +28 -0
  84. package/types/tables/compatibility.d.ts.map +11 -0
  85. package/types/tables/events.d.ts +5 -0
  86. package/types/tables/events.d.ts.map +11 -0
  87. package/types/tables/nativeBacking.d.ts +28 -0
  88. package/types/tables/nativeBacking.d.ts.map +11 -0
  89. package/types/tables/tags.d.ts +36 -0
  90. package/types/tables/tags.d.ts.map +11 -0
  91. package/types/tables/types.d.ts +135 -0
  92. package/types/tables/types.d.ts.map +11 -0
  93. package/README.md +0 -1
@@ -0,0 +1,849 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var attributes_exports = {};
22
+ __export(attributes_exports, {
23
+ ARIA_ROLES: () => ARIA_ROLES,
24
+ ATTRIBUTES: () => ATTRIBUTES,
25
+ ATTRIBUTE_NAMES: () => ATTRIBUTE_NAMES,
26
+ AUTO_COMPLETE_VALUES: () => AUTO_COMPLETE_VALUES,
27
+ FRONTEND_PROPS: () => FRONTEND_PROPS,
28
+ HTML_INPUT_TYPES: () => HTML_INPUT_TYPES,
29
+ NATIVE_INPUT_TYPES: () => NATIVE_INPUT_TYPES
30
+ });
31
+ module.exports = __toCommonJS(attributes_exports);
32
+ const TEXT_ENTRY = ["input", "textarea"];
33
+ const ANCHOR = ["a"];
34
+ const IMAGE = ["img"];
35
+ const ARIA_ROLES = [
36
+ "alert",
37
+ "alertdialog",
38
+ "application",
39
+ "article",
40
+ "banner",
41
+ "blockquote",
42
+ "button",
43
+ "caption",
44
+ "cell",
45
+ "checkbox",
46
+ "code",
47
+ "columnheader",
48
+ "combobox",
49
+ "complementary",
50
+ "contentinfo",
51
+ "definition",
52
+ "deletion",
53
+ "dialog",
54
+ "document",
55
+ "emphasis",
56
+ "feed",
57
+ "figure",
58
+ "form",
59
+ "grid",
60
+ "gridcell",
61
+ "group",
62
+ "heading",
63
+ "img",
64
+ "input",
65
+ "insertion",
66
+ "link",
67
+ "list",
68
+ "listbox",
69
+ "listitem",
70
+ "log",
71
+ "main",
72
+ "marquee",
73
+ "math",
74
+ "menu",
75
+ "menubar",
76
+ "menuitem",
77
+ "menuitemcheckbox",
78
+ "menuitemradio",
79
+ "meter",
80
+ "navigation",
81
+ "none",
82
+ "note",
83
+ "option",
84
+ "paragraph",
85
+ "progressbar",
86
+ "radio",
87
+ "radiogroup",
88
+ "region",
89
+ "row",
90
+ "rowgroup",
91
+ "rowheader",
92
+ "scrollbar",
93
+ "search",
94
+ "searchbox",
95
+ "separator",
96
+ "slider",
97
+ "spinbutton",
98
+ "status",
99
+ "strong",
100
+ "subscript",
101
+ "superscript",
102
+ "switch",
103
+ "tab",
104
+ "table",
105
+ "tablist",
106
+ "tabpanel",
107
+ "term",
108
+ "textbox",
109
+ "time",
110
+ "timer",
111
+ "toolbar",
112
+ "tooltip",
113
+ "tree",
114
+ "treegrid",
115
+ "treeitem"
116
+ ];
117
+ const AUTO_COMPLETE_VALUES = [
118
+ "additional-name",
119
+ "address-line1",
120
+ "address-line2",
121
+ "birthdate-day",
122
+ "birthdate-full",
123
+ "birthdate-month",
124
+ "birthdate-year",
125
+ "cc-csc",
126
+ "cc-exp",
127
+ "cc-exp-day",
128
+ "cc-exp-month",
129
+ "cc-exp-year",
130
+ "cc-number",
131
+ "cc-name",
132
+ "cc-given-name",
133
+ "cc-middle-name",
134
+ "cc-family-name",
135
+ "cc-type",
136
+ "country",
137
+ "current-password",
138
+ "email",
139
+ "family-name",
140
+ "gender",
141
+ "given-name",
142
+ "honorific-prefix",
143
+ "honorific-suffix",
144
+ "name",
145
+ "name-family",
146
+ "name-given",
147
+ "name-middle",
148
+ "name-middle-initial",
149
+ "name-prefix",
150
+ "name-suffix",
151
+ "new-password",
152
+ "nickname",
153
+ "on",
154
+ "one-time-code",
155
+ "organization",
156
+ "organization-title",
157
+ "password",
158
+ "password-new",
159
+ "postal-address",
160
+ "postal-address-country",
161
+ "postal-address-extended",
162
+ "postal-address-extended-postal-code",
163
+ "postal-address-locality",
164
+ "postal-address-region",
165
+ "postal-code",
166
+ "street-address",
167
+ "sms-otp",
168
+ "tel",
169
+ "tel-country-code",
170
+ "tel-national",
171
+ "tel-device",
172
+ "url",
173
+ "username",
174
+ "username-new",
175
+ "off"
176
+ ];
177
+ const HTML_INPUT_TYPES = [
178
+ "checkbox",
179
+ "color",
180
+ "date",
181
+ "datetime-local",
182
+ "email",
183
+ "file",
184
+ "hidden",
185
+ "month",
186
+ "number",
187
+ "password",
188
+ "radio",
189
+ "range",
190
+ "search",
191
+ "submit",
192
+ "tel",
193
+ "text",
194
+ "time",
195
+ "url",
196
+ "week"
197
+ ];
198
+ const NATIVE_INPUT_TYPES = [
199
+ "email",
200
+ "number",
201
+ "password",
202
+ "search",
203
+ "tel",
204
+ "text",
205
+ "url"
206
+ ];
207
+ const ariaState = (name, nativeProp) => ({
208
+ group: "aria",
209
+ tags: "*",
210
+ type: "boolean",
211
+ nativeProp,
212
+ web: "host",
213
+ native: nativeProp ? "polyfill" : "none"
214
+ });
215
+ const ariaRef = () => ({
216
+ group: "aria",
217
+ tags: "*",
218
+ type: "string",
219
+ nativeProp: null,
220
+ web: "host",
221
+ native: "none"
222
+ });
223
+ const ariaNumber = (nativeProp = null) => ({
224
+ group: "aria",
225
+ tags: "*",
226
+ type: "number",
227
+ nativeProp,
228
+ web: "host",
229
+ native: nativeProp ? "polyfill" : "none"
230
+ });
231
+ const ariaText = (nativeProp = null) => ({
232
+ group: "aria",
233
+ tags: "*",
234
+ type: "string",
235
+ nativeProp,
236
+ web: "host",
237
+ native: nativeProp ? "polyfill" : "none"
238
+ });
239
+ const ATTRIBUTES = {
240
+ "aria-activedescendant": ariaRef(),
241
+ "aria-atomic": ariaState("aria-atomic", null),
242
+ "aria-autocomplete": {
243
+ group: "aria",
244
+ tags: "*",
245
+ type: `'none' | 'inline' | 'list' | 'both'`,
246
+ nativeProp: null,
247
+ web: "host",
248
+ native: "none"
249
+ },
250
+ "aria-busy": ariaState("aria-busy", "accessibilityState.busy"),
251
+ "aria-checked": {
252
+ group: "aria",
253
+ tags: "*",
254
+ type: `boolean | 'mixed'`,
255
+ nativeProp: "accessibilityState.checked",
256
+ web: "host",
257
+ native: "polyfill"
258
+ },
259
+ "aria-colcount": ariaNumber(),
260
+ "aria-colindex": ariaNumber(),
261
+ "aria-colindextext": ariaText(),
262
+ "aria-colspan": ariaNumber(),
263
+ "aria-controls": ariaRef(),
264
+ "aria-current": {
265
+ group: "aria",
266
+ tags: "*",
267
+ type: `boolean | 'page' | 'step' | 'location' | 'date' | 'time'`,
268
+ nativeProp: null,
269
+ web: "host",
270
+ native: "none"
271
+ },
272
+ "aria-describedby": {
273
+ ...ariaRef(),
274
+ note: "react native has no described-by relationship; put the description in aria-label instead"
275
+ },
276
+ "aria-details": ariaRef(),
277
+ "aria-disabled": ariaState("aria-disabled", "accessibilityState.disabled"),
278
+ "aria-errormessage": ariaRef(),
279
+ "aria-expanded": ariaState("aria-expanded", "accessibilityState.expanded"),
280
+ "aria-flowto": ariaRef(),
281
+ "aria-haspopup": {
282
+ group: "aria",
283
+ tags: "*",
284
+ type: `'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'`,
285
+ nativeProp: null,
286
+ web: "host",
287
+ native: "none"
288
+ },
289
+ "aria-hidden": {
290
+ group: "aria",
291
+ tags: "*",
292
+ type: "boolean",
293
+ nativeProp: "accessibilityElementsHidden",
294
+ web: "host",
295
+ native: "polyfill",
296
+ note: "also sets importantForAccessibility on android so descendants are hidden"
297
+ },
298
+ "aria-invalid": {
299
+ group: "aria",
300
+ tags: "*",
301
+ type: `boolean | 'grammar' | 'spelling'`,
302
+ nativeProp: null,
303
+ web: "host",
304
+ native: "none"
305
+ },
306
+ "aria-keyshortcuts": ariaText(),
307
+ "aria-label": ariaText("accessibilityLabel"),
308
+ "aria-labelledby": {
309
+ group: "aria",
310
+ tags: "*",
311
+ type: "string",
312
+ nativeProp: "accessibilityLabelledBy",
313
+ web: "host",
314
+ native: "polyfill"
315
+ },
316
+ "aria-level": ariaNumber(),
317
+ "aria-live": {
318
+ group: "aria",
319
+ tags: "*",
320
+ type: `'off' | 'assertive' | 'polite'`,
321
+ nativeProp: "accessibilityLiveRegion",
322
+ web: "host",
323
+ native: "polyfill"
324
+ },
325
+ "aria-modal": ariaState("aria-modal", "accessibilityViewIsModal"),
326
+ "aria-multiline": ariaState("aria-multiline", null),
327
+ "aria-multiselectable": ariaState("aria-multiselectable", null),
328
+ "aria-orientation": {
329
+ group: "aria",
330
+ tags: "*",
331
+ type: `'horizontal' | 'vertical'`,
332
+ nativeProp: null,
333
+ web: "host",
334
+ native: "none"
335
+ },
336
+ "aria-owns": ariaRef(),
337
+ "aria-placeholder": ariaText(),
338
+ "aria-posinset": ariaNumber(),
339
+ "aria-pressed": {
340
+ group: "aria",
341
+ tags: "*",
342
+ type: `boolean | 'mixed'`,
343
+ nativeProp: null,
344
+ web: "host",
345
+ native: "none"
346
+ },
347
+ "aria-readonly": ariaState("aria-readonly", null),
348
+ "aria-required": ariaState("aria-required", null),
349
+ "aria-roledescription": ariaText(),
350
+ "aria-rowcount": ariaNumber(),
351
+ "aria-rowindex": ariaNumber(),
352
+ "aria-rowindextext": ariaText(),
353
+ "aria-rowspan": ariaNumber(),
354
+ "aria-selected": ariaState("aria-selected", "accessibilityState.selected"),
355
+ "aria-setsize": ariaNumber(),
356
+ "aria-sort": {
357
+ group: "aria",
358
+ tags: "*",
359
+ type: `'none' | 'ascending' | 'descending' | 'other'`,
360
+ nativeProp: null,
361
+ web: "host",
362
+ native: "none"
363
+ },
364
+ "aria-valuemax": ariaNumber("accessibilityValue.max"),
365
+ "aria-valuemin": ariaNumber("accessibilityValue.min"),
366
+ "aria-valuenow": ariaNumber("accessibilityValue.now"),
367
+ "aria-valuetext": ariaText("accessibilityValue.text"),
368
+ autoFocus: {
369
+ group: "global",
370
+ tags: "*",
371
+ type: "boolean",
372
+ nativeProp: null,
373
+ web: "host",
374
+ native: "none",
375
+ note: "focus a native element through a ref in an effect instead"
376
+ },
377
+ dir: {
378
+ group: "global",
379
+ tags: "*",
380
+ type: `'auto' | 'ltr' | 'rtl'`,
381
+ nativeProp: "writingDirection",
382
+ web: "host",
383
+ native: "polyfill"
384
+ },
385
+ elementTiming: {
386
+ group: "global",
387
+ tags: "*",
388
+ type: "string",
389
+ nativeProp: null,
390
+ web: "host",
391
+ native: "none",
392
+ note: "element timing is a browser performance api"
393
+ },
394
+ hidden: {
395
+ group: "global",
396
+ tags: "*",
397
+ type: `true | 'hidden' | 'until-found'`,
398
+ nativeProp: "style.display",
399
+ web: "host",
400
+ native: "polyfill",
401
+ note: "native applies display none and has no until-found reveal"
402
+ },
403
+ id: {
404
+ group: "global",
405
+ tags: "*",
406
+ type: "string",
407
+ nativeProp: "id",
408
+ web: "host",
409
+ native: "polyfill"
410
+ },
411
+ inert: {
412
+ group: "global",
413
+ tags: "*",
414
+ type: "boolean",
415
+ nativeProp: null,
416
+ web: "host",
417
+ native: "none"
418
+ },
419
+ lang: {
420
+ group: "global",
421
+ tags: "*",
422
+ type: "string",
423
+ nativeProp: null,
424
+ web: "host",
425
+ native: "none"
426
+ },
427
+ role: {
428
+ group: "global",
429
+ tags: "*",
430
+ type: "AriaRole",
431
+ nativeProp: "role",
432
+ web: "host",
433
+ native: "polyfill"
434
+ },
435
+ tabIndex: {
436
+ group: "global",
437
+ tags: "*",
438
+ type: "0 | -1",
439
+ nativeProp: "focusable",
440
+ web: "host",
441
+ native: "polyfill"
442
+ },
443
+ suppressHydrationWarning: {
444
+ group: "react",
445
+ tags: "*",
446
+ type: "boolean",
447
+ nativeProp: null,
448
+ web: "host",
449
+ native: "none"
450
+ },
451
+ children: {
452
+ group: "react",
453
+ tags: "*",
454
+ nativeProp: "children",
455
+ web: "host",
456
+ native: "host",
457
+ note: "the content model in the tag table decides the type: no children on a void tag, text only inside an option"
458
+ },
459
+ style: {
460
+ group: "frontend",
461
+ tags: "*",
462
+ nativeProp: "style",
463
+ web: "host",
464
+ native: "host",
465
+ note: "each frontend supplies its own style contract: tamagui style props, className, or style() handles"
466
+ },
467
+ "data-*": {
468
+ group: "data",
469
+ tags: "*",
470
+ type: "string | number | boolean",
471
+ nativeProp: null,
472
+ web: "host",
473
+ native: "none",
474
+ note: "data-testid is the one exception and reaches testID on native"
475
+ },
476
+ "data-testid": {
477
+ group: "data",
478
+ tags: "*",
479
+ type: "string",
480
+ nativeProp: "testID",
481
+ web: "host",
482
+ native: "polyfill"
483
+ },
484
+ autoCapitalize: {
485
+ group: "element",
486
+ tags: TEXT_ENTRY,
487
+ type: `'none' | 'sentences' | 'words' | 'characters'`,
488
+ nativeProp: "autoCapitalize",
489
+ web: "host",
490
+ native: "host"
491
+ },
492
+ autoComplete: {
493
+ group: "element",
494
+ tags: [
495
+ "input",
496
+ "select",
497
+ "textarea"
498
+ ],
499
+ type: "AutoComplete",
500
+ nativeProp: "autoComplete",
501
+ web: "host",
502
+ native: "host"
503
+ },
504
+ enterKeyHint: {
505
+ group: "element",
506
+ tags: TEXT_ENTRY,
507
+ type: `'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'`,
508
+ nativeProp: "enterKeyHint",
509
+ web: "host",
510
+ native: "host"
511
+ },
512
+ inputMode: {
513
+ group: "element",
514
+ tags: TEXT_ENTRY,
515
+ type: `'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'`,
516
+ nativeProp: "inputMode",
517
+ web: "host",
518
+ native: "host"
519
+ },
520
+ spellCheck: {
521
+ group: "element",
522
+ tags: TEXT_ENTRY,
523
+ type: "boolean",
524
+ nativeProp: "spellCheck",
525
+ web: "host",
526
+ native: "host",
527
+ note: "ios only on native"
528
+ },
529
+ download: {
530
+ group: "element",
531
+ tags: ANCHOR,
532
+ type: "string",
533
+ nativeProp: null,
534
+ web: "host",
535
+ native: "none"
536
+ },
537
+ href: {
538
+ group: "element",
539
+ tags: ANCHOR,
540
+ type: "string",
541
+ nativeProp: null,
542
+ web: "host",
543
+ native: "none",
544
+ note: "native has no navigation; handle onClick and call your router or Linking"
545
+ },
546
+ referrerPolicy: {
547
+ group: "element",
548
+ tags: ["a", "img"],
549
+ type: `'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'`,
550
+ nativeProp: "referrerPolicy",
551
+ web: "host",
552
+ native: "host",
553
+ note: "native honours it for image requests only"
554
+ },
555
+ rel: {
556
+ group: "element",
557
+ tags: ANCHOR,
558
+ type: "string",
559
+ nativeProp: null,
560
+ web: "host",
561
+ native: "none"
562
+ },
563
+ target: {
564
+ group: "element",
565
+ tags: ANCHOR,
566
+ type: `'_self' | '_blank' | '_parent' | '_top'`,
567
+ nativeProp: null,
568
+ web: "host",
569
+ native: "none"
570
+ },
571
+ disabled: {
572
+ group: "element",
573
+ tags: [
574
+ "button",
575
+ "input",
576
+ "optgroup",
577
+ "option",
578
+ "textarea"
579
+ ],
580
+ type: "boolean",
581
+ nativeProp: "disabled",
582
+ web: "host",
583
+ native: "polyfill",
584
+ note: "native also clears focusable, and editable on a text-entry control"
585
+ },
586
+ type: {
587
+ group: "element",
588
+ tags: ["button", "input"],
589
+ perTag: {
590
+ button: { type: `'button' | 'submit'` },
591
+ input: {
592
+ type: "InputType",
593
+ note: "on native the type selects the keyboard and secure entry rather than reaching one prop, and the types with no text-entry control are a build error"
594
+ }
595
+ },
596
+ nativeProp: null,
597
+ web: "host",
598
+ native: "polyfill"
599
+ },
600
+ alt: {
601
+ group: "element",
602
+ tags: IMAGE,
603
+ type: "string",
604
+ nativeProp: "alt",
605
+ web: "host",
606
+ native: "host"
607
+ },
608
+ crossOrigin: {
609
+ group: "element",
610
+ tags: IMAGE,
611
+ type: `'anonymous' | 'use-credentials'`,
612
+ nativeProp: "crossOrigin",
613
+ web: "host",
614
+ native: "host"
615
+ },
616
+ decoding: {
617
+ group: "element",
618
+ tags: IMAGE,
619
+ type: `'async' | 'auto' | 'sync'`,
620
+ nativeProp: null,
621
+ web: "host",
622
+ native: "none"
623
+ },
624
+ draggable: {
625
+ group: "element",
626
+ tags: IMAGE,
627
+ type: "boolean",
628
+ nativeProp: null,
629
+ web: "host",
630
+ native: "none"
631
+ },
632
+ fetchPriority: {
633
+ group: "element",
634
+ tags: IMAGE,
635
+ type: `'high' | 'low' | 'auto'`,
636
+ nativeProp: null,
637
+ web: "host",
638
+ native: "none"
639
+ },
640
+ height: {
641
+ group: "element",
642
+ tags: IMAGE,
643
+ type: "number",
644
+ nativeProp: "height",
645
+ web: "host",
646
+ native: "host"
647
+ },
648
+ loading: {
649
+ group: "element",
650
+ tags: IMAGE,
651
+ type: `'eager' | 'lazy'`,
652
+ nativeProp: null,
653
+ web: "host",
654
+ native: "none"
655
+ },
656
+ src: {
657
+ group: "element",
658
+ tags: IMAGE,
659
+ type: "string",
660
+ nativeProp: "src",
661
+ web: "host",
662
+ native: "host"
663
+ },
664
+ srcSet: {
665
+ group: "element",
666
+ tags: IMAGE,
667
+ type: "string",
668
+ nativeProp: "srcSet",
669
+ web: "host",
670
+ native: "host"
671
+ },
672
+ width: {
673
+ group: "element",
674
+ tags: IMAGE,
675
+ type: "number",
676
+ nativeProp: "width",
677
+ web: "host",
678
+ native: "host"
679
+ },
680
+ checked: {
681
+ group: "element",
682
+ tags: ["input"],
683
+ type: `boolean | 'mixed'`,
684
+ nativeProp: null,
685
+ web: "host",
686
+ native: "none",
687
+ note: "checkbox and radio inputs have no native rendering"
688
+ },
689
+ defaultChecked: {
690
+ group: "element",
691
+ tags: ["input"],
692
+ type: "boolean",
693
+ nativeProp: null,
694
+ web: "host",
695
+ native: "none",
696
+ note: "checkbox and radio inputs have no native rendering"
697
+ },
698
+ defaultValue: {
699
+ group: "element",
700
+ tags: [
701
+ "input",
702
+ "select",
703
+ "textarea"
704
+ ],
705
+ type: "string",
706
+ perTag: { select: { type: "string | readonly string[]" } },
707
+ nativeProp: "defaultValue",
708
+ web: "host",
709
+ native: "host"
710
+ },
711
+ for: {
712
+ group: "element",
713
+ tags: ["label"],
714
+ type: "string",
715
+ nativeProp: null,
716
+ web: "host",
717
+ native: "none",
718
+ note: "native has no label association; wrap the control or drive it from your own state"
719
+ },
720
+ label: {
721
+ group: "element",
722
+ tags: ["optgroup", "option"],
723
+ type: "string",
724
+ nativeProp: null,
725
+ web: "host",
726
+ native: "none"
727
+ },
728
+ max: {
729
+ group: "element",
730
+ tags: ["input"],
731
+ type: "string | number",
732
+ nativeProp: null,
733
+ web: "host",
734
+ native: "none"
735
+ },
736
+ maxLength: {
737
+ group: "element",
738
+ tags: TEXT_ENTRY,
739
+ type: "number",
740
+ nativeProp: "maxLength",
741
+ web: "host",
742
+ native: "host"
743
+ },
744
+ min: {
745
+ group: "element",
746
+ tags: ["input"],
747
+ type: "string | number",
748
+ nativeProp: null,
749
+ web: "host",
750
+ native: "none"
751
+ },
752
+ minLength: {
753
+ group: "element",
754
+ tags: TEXT_ENTRY,
755
+ type: "number",
756
+ nativeProp: null,
757
+ web: "host",
758
+ native: "none"
759
+ },
760
+ multiple: {
761
+ group: "element",
762
+ tags: ["input", "select"],
763
+ type: "boolean",
764
+ nativeProp: null,
765
+ web: "host",
766
+ native: "none"
767
+ },
768
+ name: {
769
+ group: "element",
770
+ tags: [
771
+ "input",
772
+ "select",
773
+ "textarea"
774
+ ],
775
+ type: "string",
776
+ nativeProp: null,
777
+ web: "host",
778
+ native: "none",
779
+ note: "form field names only matter to a form submission, which native does not have"
780
+ },
781
+ placeholder: {
782
+ group: "element",
783
+ tags: TEXT_ENTRY,
784
+ type: "string",
785
+ nativeProp: "placeholder",
786
+ web: "host",
787
+ native: "host"
788
+ },
789
+ readOnly: {
790
+ group: "element",
791
+ tags: TEXT_ENTRY,
792
+ type: "boolean",
793
+ nativeProp: "editable",
794
+ web: "host",
795
+ native: "polyfill"
796
+ },
797
+ required: {
798
+ group: "element",
799
+ tags: [
800
+ "input",
801
+ "select",
802
+ "textarea"
803
+ ],
804
+ type: "boolean",
805
+ nativeProp: null,
806
+ web: "host",
807
+ native: "none",
808
+ note: "native has no form validation"
809
+ },
810
+ rows: {
811
+ group: "element",
812
+ tags: ["textarea"],
813
+ type: "number",
814
+ nativeProp: "numberOfLines",
815
+ web: "host",
816
+ native: "polyfill"
817
+ },
818
+ step: {
819
+ group: "element",
820
+ tags: ["input"],
821
+ type: `number | 'any'`,
822
+ nativeProp: null,
823
+ web: "host",
824
+ native: "none"
825
+ },
826
+ value: {
827
+ group: "element",
828
+ tags: [
829
+ "input",
830
+ "li",
831
+ "option",
832
+ "select",
833
+ "textarea"
834
+ ],
835
+ type: "string",
836
+ perTag: {
837
+ li: {
838
+ type: "number",
839
+ note: "the list counter is not rendered on either platform, matching the list-style reset"
840
+ },
841
+ select: { type: "string | readonly string[]" }
842
+ },
843
+ nativeProp: "value",
844
+ web: "host",
845
+ native: "polyfill"
846
+ }
847
+ };
848
+ const ATTRIBUTE_NAMES = Object.keys(ATTRIBUTES);
849
+ const FRONTEND_PROPS = ["style"];