@panneau/fields 5.0.0-alpha.4 → 5.0.0-alpha.6

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 (118) hide show
  1. package/README.md +67 -21
  2. package/dist/duration/DurationField.css +11 -0
  3. package/dist/duration/DurationField.d.ts +26 -0
  4. package/dist/duration/DurationField.d.ts.map +1 -0
  5. package/dist/duration/DurationField.js +129 -0
  6. package/dist/duration/DurationField.js.map +1 -0
  7. package/dist/duration/DurationField.module.js +12 -0
  8. package/dist/duration/DurationField.module.js.map +1 -0
  9. package/dist/duration/index.d.ts +2 -0
  10. package/dist/duration/index.d.ts.map +1 -0
  11. package/dist/duration/index.js +1 -0
  12. package/dist/embed/EmbedField.css +60 -0
  13. package/dist/embed/EmbedField.d.ts +20 -0
  14. package/dist/embed/EmbedField.d.ts.map +1 -0
  15. package/dist/embed/EmbedField.js +130 -0
  16. package/dist/embed/EmbedField.js.map +1 -0
  17. package/dist/embed/EmbedField.module.js +22 -0
  18. package/dist/embed/EmbedField.module.js.map +1 -0
  19. package/dist/embed/index.d.ts +3 -0
  20. package/dist/embed/index.d.ts.map +1 -0
  21. package/dist/embed/index.js +3 -0
  22. package/dist/index.d.ts +4 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +4 -1
  25. package/dist/json/JsonField.css +7 -0
  26. package/dist/json/JsonField.d.ts +22 -0
  27. package/dist/json/JsonField.d.ts.map +1 -0
  28. package/dist/json/JsonField.js +125 -0
  29. package/dist/json/JsonField.js.map +1 -0
  30. package/dist/json/JsonField.module.js +8 -0
  31. package/dist/json/JsonField.module.js.map +1 -0
  32. package/dist/json/index.d.ts +2 -0
  33. package/dist/json/index.d.ts.map +1 -0
  34. package/dist/json/index.js +1 -0
  35. package/dist/localized/LocalizedField.d.ts.map +1 -1
  36. package/dist/localized/LocalizedField.js +1 -0
  37. package/dist/localized/LocalizedField.js.map +1 -1
  38. package/dist/location/LocationField.css +54 -0
  39. package/dist/location/LocationField.d.ts +31 -0
  40. package/dist/location/LocationField.d.ts.map +1 -0
  41. package/dist/location/LocationField.js +350 -0
  42. package/dist/location/LocationField.js.map +1 -0
  43. package/dist/location/LocationField.module.js +22 -0
  44. package/dist/location/LocationField.module.js.map +1 -0
  45. package/dist/location/LocationMap.d.ts +25 -0
  46. package/dist/location/LocationMap.d.ts.map +1 -0
  47. package/dist/location/LocationMap.js +115 -0
  48. package/dist/location/LocationMap.js.map +1 -0
  49. package/dist/location/index.d.ts +5 -0
  50. package/dist/location/index.d.ts.map +1 -0
  51. package/dist/location/index.js +4 -0
  52. package/dist/location/leafletCss.d.ts +2 -0
  53. package/dist/location/leafletCss.d.ts.map +1 -0
  54. package/dist/location/leafletCss.js +6 -0
  55. package/dist/location/leafletCss.js.map +1 -0
  56. package/dist/location/nominatim.d.ts +17 -0
  57. package/dist/location/nominatim.d.ts.map +1 -0
  58. package/dist/location/nominatim.js +50 -0
  59. package/dist/location/nominatim.js.map +1 -0
  60. package/dist/location/types.d.ts +40 -0
  61. package/dist/location/types.d.ts.map +1 -0
  62. package/dist/range/RangeField.d.ts +22 -0
  63. package/dist/range/RangeField.d.ts.map +1 -0
  64. package/dist/range/RangeField.js +132 -0
  65. package/dist/range/RangeField.js.map +1 -0
  66. package/dist/range/index.d.ts +2 -0
  67. package/dist/range/index.d.ts.map +1 -0
  68. package/dist/range/index.js +1 -0
  69. package/dist/relation/RelationField.d.ts.map +1 -1
  70. package/dist/relation/RelationField.js +24 -24
  71. package/dist/relation/RelationField.js.map +1 -1
  72. package/dist/shared/DefinitionField.d.ts +3 -1
  73. package/dist/shared/DefinitionField.d.ts.map +1 -1
  74. package/dist/shared/DefinitionField.js +80 -72
  75. package/dist/shared/DefinitionField.js.map +1 -1
  76. package/dist/shared/builtIn.d.ts +1 -0
  77. package/dist/shared/builtIn.d.ts.map +1 -1
  78. package/dist/shared/builtIn.js +16 -1
  79. package/dist/shared/builtIn.js.map +1 -1
  80. package/dist/shared/check.d.ts +27 -0
  81. package/dist/shared/check.d.ts.map +1 -0
  82. package/dist/shared/check.js +18 -0
  83. package/dist/shared/check.js.map +1 -0
  84. package/dist/shared/context.d.ts +18 -3
  85. package/dist/shared/context.d.ts.map +1 -1
  86. package/dist/shared/context.js +31 -19
  87. package/dist/shared/context.js.map +1 -1
  88. package/dist/shared/embed.d.ts +19 -0
  89. package/dist/shared/embed.d.ts.map +1 -0
  90. package/dist/shared/embed.js +14 -0
  91. package/dist/shared/embed.js.map +1 -0
  92. package/dist/shared/types.d.ts +2 -0
  93. package/dist/shared/types.d.ts.map +1 -1
  94. package/dist/slug/SlugField.css +18 -0
  95. package/dist/slug/SlugField.d.ts +31 -3
  96. package/dist/slug/SlugField.d.ts.map +1 -1
  97. package/dist/slug/SlugField.js +231 -159
  98. package/dist/slug/SlugField.js.map +1 -1
  99. package/dist/slug/SlugField.module.js +14 -0
  100. package/dist/slug/SlugField.module.js.map +1 -0
  101. package/dist/slug/index.d.ts +1 -1
  102. package/dist/slug/index.d.ts.map +1 -1
  103. package/dist/slug/index.js +1 -1
  104. package/dist/tags/TagsField.d.ts +17 -0
  105. package/dist/tags/TagsField.d.ts.map +1 -0
  106. package/dist/tags/TagsField.js +120 -0
  107. package/dist/tags/TagsField.js.map +1 -0
  108. package/dist/tags/index.d.ts +2 -0
  109. package/dist/tags/index.d.ts.map +1 -0
  110. package/dist/tags/index.js +1 -0
  111. package/dist/tel/TelField.d.ts +11 -0
  112. package/dist/tel/TelField.d.ts.map +1 -0
  113. package/dist/tel/TelField.js +87 -0
  114. package/dist/tel/TelField.js.map +1 -0
  115. package/dist/tel/index.d.ts +2 -0
  116. package/dist/tel/index.d.ts.map +1 -0
  117. package/dist/tel/index.js +1 -0
  118. package/package.json +41 -4
@@ -0,0 +1,120 @@
1
+ import { getFieldProps, getSetting, isString } from "../shared/entry.js";
2
+ import { c } from "react/compiler-runtime";
3
+ import { TagsInput } from "@panneau/ui";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/tags/TagsField.tsx
6
+ /** A list of words, typed or picked among suggestions. An empty list is `null`. */
7
+ function TagsField(t0) {
8
+ const $ = c(10);
9
+ let disabled;
10
+ let props;
11
+ let readOnly;
12
+ let required;
13
+ if ($[0] !== t0) {
14
+ ({disabled, readOnly, required, ...props} = t0);
15
+ $[0] = t0;
16
+ $[1] = disabled;
17
+ $[2] = props;
18
+ $[3] = readOnly;
19
+ $[4] = required;
20
+ } else {
21
+ disabled = $[1];
22
+ props = $[2];
23
+ readOnly = $[3];
24
+ required = $[4];
25
+ }
26
+ let t1;
27
+ if ($[5] !== disabled || $[6] !== props || $[7] !== readOnly || $[8] !== required) {
28
+ t1 = /* @__PURE__ */ jsx(TagsInput, {
29
+ ...props,
30
+ isDisabled: disabled,
31
+ isReadOnly: readOnly,
32
+ isRequired: required
33
+ });
34
+ $[5] = disabled;
35
+ $[6] = props;
36
+ $[7] = readOnly;
37
+ $[8] = required;
38
+ $[9] = t1;
39
+ } else t1 = $[9];
40
+ return t1;
41
+ }
42
+ /** The options of a field as suggestions: their values as strings. */
43
+ function toSuggestions(options) {
44
+ return options.map((option) => ({
45
+ value: String(option.value),
46
+ label: option.label
47
+ }));
48
+ }
49
+ /**
50
+ * The `tags` type: its `options` as suggestions, and setting `allowCustom` (true by default)
51
+ * for tags outside them.
52
+ */
53
+ function TagsFieldEntry(props) {
54
+ const $ = c(18);
55
+ const { field } = props;
56
+ let t0;
57
+ if ($[0] !== field) {
58
+ t0 = getSetting(field, "allowCustom", _temp);
59
+ $[0] = field;
60
+ $[1] = t0;
61
+ } else t0 = $[1];
62
+ const allowCustom = t0;
63
+ let t1;
64
+ if ($[2] !== props.value) {
65
+ t1 = Array.isArray(props.value) ? props.value.filter(isString) : null;
66
+ $[2] = props.value;
67
+ $[3] = t1;
68
+ } else t1 = $[3];
69
+ const value_0 = t1;
70
+ let t2;
71
+ if ($[4] !== props) {
72
+ t2 = getFieldProps(props);
73
+ $[4] = props;
74
+ $[5] = t2;
75
+ } else t2 = $[5];
76
+ const t3 = value_0 !== null && value_0.length > 0 ? value_0 : null;
77
+ const t4 = props.onChange;
78
+ let t5;
79
+ if ($[6] !== field.options) {
80
+ t5 = field.options ?? [];
81
+ $[6] = field.options;
82
+ $[7] = t5;
83
+ } else t5 = $[7];
84
+ let t6;
85
+ if ($[8] !== t5) {
86
+ t6 = toSuggestions(t5);
87
+ $[8] = t5;
88
+ $[9] = t6;
89
+ } else t6 = $[9];
90
+ let t7;
91
+ if ($[10] !== allowCustom) {
92
+ t7 = allowCustom !== void 0 ? { allowCustom } : {};
93
+ $[10] = allowCustom;
94
+ $[11] = t7;
95
+ } else t7 = $[11];
96
+ let t8;
97
+ if ($[12] !== props.onChange || $[13] !== t2 || $[14] !== t3 || $[15] !== t6 || $[16] !== t7) {
98
+ t8 = /* @__PURE__ */ jsx(TagsField, {
99
+ ...t2,
100
+ value: t3,
101
+ onChange: t4,
102
+ suggestions: t6,
103
+ ...t7
104
+ });
105
+ $[12] = props.onChange;
106
+ $[13] = t2;
107
+ $[14] = t3;
108
+ $[15] = t6;
109
+ $[16] = t7;
110
+ $[17] = t8;
111
+ } else t8 = $[17];
112
+ return t8;
113
+ }
114
+ function _temp(value) {
115
+ return typeof value === "boolean";
116
+ }
117
+ //#endregion
118
+ export { TagsField, TagsFieldEntry };
119
+
120
+ //# sourceMappingURL=TagsField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagsField.js","names":["disabled","readOnly","required","value","_c"],"sources":["../../src/tags/TagsField.tsx"],"sourcesContent":["import type { Option } from '@panneau/protocol';\nimport { type TagSuggestion, TagsInput } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface TagsFieldProps extends FieldProps<string[]> {\n placeholder?: string;\n /** Tags offered as the user types. */\n suggestions?: readonly TagSuggestion[];\n /** Whether tags outside the suggestions are allowed. Defaults to true. */\n allowCustom?: boolean;\n}\n\n/** A list of words, typed or picked among suggestions. An empty list is `null`. */\nexport function TagsField({ disabled, readOnly, required, ...props }: TagsFieldProps) {\n return (\n <TagsInput {...props} isDisabled={disabled} isReadOnly={readOnly} isRequired={required} />\n );\n}\n\n/** The options of a field as suggestions: their values as strings. */\nfunction toSuggestions(options: readonly Option[]): TagSuggestion[] {\n return options.map((option) => ({ value: String(option.value), label: option.label }));\n}\n\n/**\n * The `tags` type: its `options` as suggestions, and setting `allowCustom` (true by default)\n * for tags outside them.\n */\nexport function TagsFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const allowCustom = getSetting(\n field,\n 'allowCustom',\n (value): value is boolean => typeof value === 'boolean',\n );\n const value = Array.isArray(props.value) ? props.value.filter(isString) : null;\n return (\n <TagsField\n {...getFieldProps(props)}\n value={value !== null && value.length > 0 ? value : null}\n onChange={props.onChange}\n suggestions={toSuggestions(field.options ?? [])}\n {...(allowCustom !== undefined ? { allowCustom } : {})}\n />\n );\n}\n"],"mappings":";;;;;;AAeA,SAAO,UAAA,IAAA;CAAA,MAAA,IAAAI,EAAA,EAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAAmB,CAAA,CAAA,UAAA,UAAA,UAAA,GAAA,SAAA;EAA0D,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA;EAAA,WAAA,EAAA;EAAA,QAAA,EAAA;EAAA,WAAA,EAAA;EAAA,WAAA,EAAA;CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,YAAA,EAAA,OAAA,SAAA,EAAA,OAAA,YAAA,EAAA,OAAA,UAAA;EAE5E,KAAA,oBAAC,WAAD;GAAU,GAAK;GAAmBJ,YAAA;GAAsBC,YAAA;GAAsBC,YAAA;EAAQ,CAAA;EAAI,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAA1F;AAA0F;;AAKlG,SAAS,cAAc,SAA6C;CAChE,OAAO,QAAQ,KAAK,YAAY;EAAE,OAAO,OAAO,OAAO,KAAK;EAAG,OAAO,OAAO;CAAM,EAAE;AACzF;;;;;AAMA,SAAO,eAAA,OAAA;CAAA,MAAA,IAAAE,EAAA,EAAA;CACH,MAAA,EAAA,UAAkB;CAAM,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA;EACJ,KAAA,WAChB,OACA,eACA,KACJ;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAJD,MAAA,cAAoB;CAIlB,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,OAAA;EACY,KAAA,MAAK,QAAS,MAAK,KAA4C,IAAlC,MAAK,MAAM,OAAQ,QAAe,IAA/D;EAAgE,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAA9E,MAAA,UAAc;CAAiE,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA;EAGnE,KAAA,cAAc,KAAK;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CACjB,MAAA,KAAAD,YAAU,QAAQA,QAAK,SAAU,IAAjC,UAAA;CACG,MAAA,KAAA,MAAK;CAAS,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,SAAA;EACG,KAAA,MAAK,WAAL,CAAA;EAAmB,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAAjC,KAAA,cAAc,EAAmB;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,aAAA;EAC1C,KAAA,gBAAgB,KAAA,IAAhB,EAAA,YAA+C,IAA/C,CAA+C;EAAC,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,MAAA,YAAA,EAAA,QAAA,MAAA,EAAA,QAAA,MAAA,EAAA,QAAA,MAAA,EAAA,QAAA,IAAA;EALzD,KAAA,oBAAC,WAAD;GAAU,GACF;GACG,OAAA;GACG,UAAA;GACG,aAAA;GAAkC,GAC1C;EAAgD,CAAA;EACvD,EAAA,MAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OANF;AAME;AAfH,SAAA,MAAA,OAAA;CAAA,OAK8B,OAAO,UAAU;AAAS"}
@@ -0,0 +1,2 @@
1
+ export { TagsField, TagsFieldEntry, type TagsFieldProps } from './TagsField';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tags/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export { TagsField, TagsFieldEntry } from "./TagsField.js";
@@ -0,0 +1,11 @@
1
+ import type { FieldEntryProps } from '../shared/types';
2
+ import { type TextFieldProps } from '../text/TextField';
3
+ export type TelFieldProps = Omit<TextFieldProps, 'type' | 'inputMode'>;
4
+ /**
5
+ * A phone number, as typed, with the phone keyboard on phones. Spaces around it are removed on
6
+ * blur. A `pattern` rule constrains its format when a project needs one.
7
+ */
8
+ export declare function TelField({ value, onChange, onBlur, ...props }: TelFieldProps): import("react").JSX.Element;
9
+ /** The `tel` type. */
10
+ export declare function TelFieldEntry(props: FieldEntryProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=TelField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelField.d.ts","sourceRoot":"","sources":["../../src/tel/TelField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAkB5E;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,+BAQnD"}
@@ -0,0 +1,87 @@
1
+ import { getFieldProps, isString } from "../shared/entry.js";
2
+ import { TextField } from "../text/TextField.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/tel/TelField.tsx
6
+ /**
7
+ * A phone number, as typed, with the phone keyboard on phones. Spaces around it are removed on
8
+ * blur. A `pattern` rule constrains its format when a project needs one.
9
+ */
10
+ function TelField(t0) {
11
+ const $ = c(14);
12
+ let onBlur;
13
+ let onChange;
14
+ let props;
15
+ let value;
16
+ if ($[0] !== t0) {
17
+ ({value, onChange, onBlur, ...props} = t0);
18
+ $[0] = t0;
19
+ $[1] = onBlur;
20
+ $[2] = onChange;
21
+ $[3] = props;
22
+ $[4] = value;
23
+ } else {
24
+ onBlur = $[1];
25
+ onChange = $[2];
26
+ props = $[3];
27
+ value = $[4];
28
+ }
29
+ let t1;
30
+ if ($[5] !== onBlur || $[6] !== onChange || $[7] !== value) {
31
+ t1 = () => {
32
+ const trimmed = value?.trim() ?? null;
33
+ if (trimmed !== value) onChange?.(trimmed === "" ? null : trimmed);
34
+ onBlur?.();
35
+ };
36
+ $[5] = onBlur;
37
+ $[6] = onChange;
38
+ $[7] = value;
39
+ $[8] = t1;
40
+ } else t1 = $[8];
41
+ let t2;
42
+ if ($[9] !== onChange || $[10] !== props || $[11] !== t1 || $[12] !== value) {
43
+ t2 = /* @__PURE__ */ jsx(TextField, {
44
+ autoComplete: "tel",
45
+ ...props,
46
+ type: "tel",
47
+ inputMode: "tel",
48
+ value,
49
+ onChange,
50
+ onBlur: t1
51
+ });
52
+ $[9] = onChange;
53
+ $[10] = props;
54
+ $[11] = t1;
55
+ $[12] = value;
56
+ $[13] = t2;
57
+ } else t2 = $[13];
58
+ return t2;
59
+ }
60
+ /** The `tel` type. */
61
+ function TelFieldEntry(props) {
62
+ const $ = c(6);
63
+ let t0;
64
+ if ($[0] !== props) {
65
+ t0 = getFieldProps(props);
66
+ $[0] = props;
67
+ $[1] = t0;
68
+ } else t0 = $[1];
69
+ const t1 = isString(props.value) ? props.value : null;
70
+ let t2;
71
+ if ($[2] !== props.onChange || $[3] !== t0 || $[4] !== t1) {
72
+ t2 = /* @__PURE__ */ jsx(TelField, {
73
+ ...t0,
74
+ value: t1,
75
+ onChange: props.onChange
76
+ });
77
+ $[2] = props.onChange;
78
+ $[3] = t0;
79
+ $[4] = t1;
80
+ $[5] = t2;
81
+ } else t2 = $[5];
82
+ return t2;
83
+ }
84
+ //#endregion
85
+ export { TelField, TelFieldEntry };
86
+
87
+ //# sourceMappingURL=TelField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelField.js","names":["value","onChange","_c"],"sources":["../../src/tel/TelField.tsx"],"sourcesContent":["import { getFieldProps, isString } from '../shared/entry';\nimport type { FieldEntryProps } from '../shared/types';\nimport { TextField, type TextFieldProps } from '../text/TextField';\n\nexport type TelFieldProps = Omit<TextFieldProps, 'type' | 'inputMode'>;\n\n/**\n * A phone number, as typed, with the phone keyboard on phones. Spaces around it are removed on\n * blur. A `pattern` rule constrains its format when a project needs one.\n */\nexport function TelField({ value, onChange, onBlur, ...props }: TelFieldProps) {\n return (\n <TextField\n autoComplete=\"tel\"\n {...props}\n type=\"tel\"\n inputMode=\"tel\"\n value={value}\n onChange={onChange}\n onBlur={() => {\n const trimmed = value?.trim() ?? null;\n if (trimmed !== value) {\n onChange?.(trimmed === '' ? null : trimmed);\n }\n onBlur?.();\n }}\n />\n );\n}\n\n/** The `tel` type. */\nexport function TelFieldEntry(props: FieldEntryProps) {\n return (\n <TelField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":";;;;;;;;;AAUA,SAAO,SAAA,IAAA;CAAA,MAAA,IAAAE,EAAA,EAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAAkB,CAAA,CAAA,OAAA,UAAA,QAAA,GAAA,SAAA;EAAoD,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA;EAAA,SAAA,EAAA;EAAA,WAAA,EAAA;EAAA,QAAA,EAAA;EAAA,QAAA,EAAA;CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,UAAA,EAAA,OAAA,YAAA,EAAA,OAAA,OAAA;EASzD,WAAA;GACJ,MAAA,UAAgB,OAAK,KAAe,KAApB;GAChB,IAAI,YAAY,OACZ,WAAW,YAAY,KAAZ,OAAA,OAA+B;GAE9C,SAAS;EAAC;EACb,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,YAAA,EAAA,QAAA,SAAA,EAAA,QAAA,MAAA,EAAA,QAAA,OAAA;EAbL,KAAA,oBAAC,WAAD;GACiB,cAAA;GAAK,GACd;GACC,MAAA;GACK,WAAA;GACH;GACG;GACF,QAAA;EAMP,CAAA;EACH,EAAA,KAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAdF;AAcE;;AAKV,SAAO,cAAA,OAAA;CAAA,MAAA,IAAAA,EAAA,CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA;EAGS,KAAA,cAAc,KAAK;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CACjB,MAAA,KAAA,SAAS,MAAK,KAA2B,IAAjB,MAAK,QAA7B;CAA0C,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,YAAA,EAAA,OAAA,MAAA,EAAA,OAAA,IAAA;EAFrD,KAAA,oBAAC,UAAD;GAAS,GACD;GACG,OAAA;GACG,UAAA,MAAK;EAAS,CAAA;EAC1B,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAJF;AAIE"}
@@ -0,0 +1,2 @@
1
+ export { TelField, TelFieldEntry, type TelFieldProps } from './TelField';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ export { TelField, TelFieldEntry } from "./TelField.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/fields",
3
- "version": "5.0.0-alpha.4",
3
+ "version": "5.0.0-alpha.6",
4
4
  "description": "Controlled field components of Panneau for the protocol's built-in field types, one subpath per field, and uploads to storage (Uppy 6 in its own entry point).",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -78,6 +78,41 @@
78
78
  "types": "./dist/slug/index.d.ts",
79
79
  "default": "./dist/slug/index.js"
80
80
  },
81
+ "./tel": {
82
+ "@panneau/source": "./src/tel/index.ts",
83
+ "types": "./dist/tel/index.d.ts",
84
+ "default": "./dist/tel/index.js"
85
+ },
86
+ "./range": {
87
+ "@panneau/source": "./src/range/index.ts",
88
+ "types": "./dist/range/index.d.ts",
89
+ "default": "./dist/range/index.js"
90
+ },
91
+ "./duration": {
92
+ "@panneau/source": "./src/duration/index.ts",
93
+ "types": "./dist/duration/index.d.ts",
94
+ "default": "./dist/duration/index.js"
95
+ },
96
+ "./json": {
97
+ "@panneau/source": "./src/json/index.ts",
98
+ "types": "./dist/json/index.d.ts",
99
+ "default": "./dist/json/index.js"
100
+ },
101
+ "./tags": {
102
+ "@panneau/source": "./src/tags/index.ts",
103
+ "types": "./dist/tags/index.d.ts",
104
+ "default": "./dist/tags/index.js"
105
+ },
106
+ "./embed": {
107
+ "@panneau/source": "./src/embed/index.ts",
108
+ "types": "./dist/embed/index.d.ts",
109
+ "default": "./dist/embed/index.js"
110
+ },
111
+ "./location": {
112
+ "@panneau/source": "./src/location/index.ts",
113
+ "types": "./dist/location/index.d.ts",
114
+ "default": "./dist/location/index.js"
115
+ },
81
116
  "./localized": {
82
117
  "@panneau/source": "./src/localized/index.ts",
83
118
  "types": "./dist/localized/index.d.ts",
@@ -143,12 +178,14 @@
143
178
  },
144
179
  "dependencies": {
145
180
  "@internationalized/date": "^3.12.4",
146
- "@panneau/intl": "5.0.0-alpha.4",
147
- "@panneau/protocol": "5.0.0-alpha.4",
148
- "@panneau/ui": "5.0.0-alpha.4",
181
+ "@panneau/intl": "5.0.0-alpha.6",
182
+ "@panneau/protocol": "5.0.0-alpha.6",
183
+ "@panneau/ui": "5.0.0-alpha.6",
184
+ "leaflet": "^1.9.4",
149
185
  "lucide-react": "^1.57.0"
150
186
  },
151
187
  "devDependencies": {
188
+ "@types/leaflet": "^1.9.20",
152
189
  "@uppy/aws-s3": "^6.3.0",
153
190
  "@uppy/core": "^6.3.0"
154
191
  }