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