payload-intl 1.1.2 → 1.2.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 (208) hide show
  1. package/README.md +62 -221
  2. package/dist/components/MessageController.d.ts +4 -6
  3. package/dist/components/MessageController.d.ts.map +1 -1
  4. package/dist/components/MessageController.js +25 -41
  5. package/dist/components/MessageController.js.map +1 -1
  6. package/dist/components/MessageFormContext.d.ts +29 -0
  7. package/dist/components/MessageFormContext.d.ts.map +1 -0
  8. package/dist/components/MessageFormContext.js +30 -0
  9. package/dist/components/MessageFormContext.js.map +1 -0
  10. package/dist/components/MessagesForm.d.ts +2 -2
  11. package/dist/components/MessagesForm.d.ts.map +1 -1
  12. package/dist/components/MessagesForm.js +126 -112
  13. package/dist/components/MessagesForm.js.map +1 -1
  14. package/dist/components/MessagesForm.module.css +41 -0
  15. package/dist/{exports/link.d.ts → components/MessagesLink.d.ts} +3 -3
  16. package/dist/components/MessagesLink.d.ts.map +1 -0
  17. package/dist/components/MessagesLink.js +19 -0
  18. package/dist/components/MessagesLink.js.map +1 -0
  19. package/dist/components/MessagesView.d.ts +10 -0
  20. package/dist/components/MessagesView.d.ts.map +1 -0
  21. package/dist/components/MessagesView.js +48 -0
  22. package/dist/components/MessagesView.js.map +1 -0
  23. package/dist/components/actions/JsonImport.d.ts.map +1 -1
  24. package/dist/components/actions/JsonImport.js +68 -61
  25. package/dist/components/actions/JsonImport.js.map +1 -1
  26. package/dist/components/actions/JsonImport.module.css +14 -0
  27. package/dist/components/actions/Move.d.ts.map +1 -1
  28. package/dist/components/actions/Move.js +41 -0
  29. package/dist/components/actions/Move.js.map +1 -0
  30. package/dist/components/actions/Move.module.css +8 -0
  31. package/dist/components/inputs/InputWrapper.d.ts +1 -1
  32. package/dist/components/inputs/InputWrapper.d.ts.map +1 -1
  33. package/dist/components/inputs/InputWrapper.js +31 -29
  34. package/dist/components/inputs/InputWrapper.js.map +1 -1
  35. package/dist/components/inputs/InputWrapper.module.css +34 -0
  36. package/dist/components/inputs/LexicalInput.d.ts +3 -3
  37. package/dist/components/inputs/LexicalInput.js +86 -0
  38. package/dist/components/inputs/LexicalInput.js.map +1 -0
  39. package/dist/components/inputs/MessageInput.d.ts +2 -2
  40. package/dist/components/inputs/MessageInput.d.ts.map +1 -1
  41. package/dist/components/inputs/MessageInput.js +110 -37
  42. package/dist/components/inputs/MessageInput.js.map +1 -1
  43. package/dist/components/inputs/MessageInput.module.css +25 -0
  44. package/dist/components/inputs/variables/VariableChip.d.ts +8 -2
  45. package/dist/components/inputs/variables/VariableChip.d.ts.map +1 -1
  46. package/dist/components/inputs/variables/VariableChip.js +86 -64
  47. package/dist/components/inputs/variables/VariableChip.js.map +1 -1
  48. package/dist/components/inputs/variables/VariableChip.module.css +66 -0
  49. package/dist/components/inputs/variables/VariableIcon.d.ts +1 -1
  50. package/dist/components/inputs/variables/VariableIcon.d.ts.map +1 -1
  51. package/dist/components/inputs/variables/VariableIcon.js +35 -0
  52. package/dist/components/inputs/variables/VariableIcon.js.map +1 -0
  53. package/dist/components/inputs/variables/VariableNode.d.ts +11 -0
  54. package/dist/components/inputs/variables/VariableNode.d.ts.map +1 -0
  55. package/dist/components/inputs/variables/VariableNode.js +36 -0
  56. package/dist/components/inputs/variables/VariableNode.js.map +1 -0
  57. package/dist/components/inputs/variables/VariableSuggestion.module.css +34 -0
  58. package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts +2 -2
  59. package/dist/components/inputs/variables/editors/DateVariableEditor.d.ts.map +1 -1
  60. package/dist/components/inputs/variables/editors/DateVariableEditor.js +15 -0
  61. package/dist/components/inputs/variables/editors/DateVariableEditor.js.map +1 -0
  62. package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts +1 -1
  63. package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts.map +1 -1
  64. package/dist/components/inputs/variables/editors/PluralVariableEditor.js +191 -172
  65. package/dist/components/inputs/variables/editors/PluralVariableEditor.js.map +1 -1
  66. package/dist/components/inputs/variables/editors/PluralVariableEditor.module.css +149 -0
  67. package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts +1 -1
  68. package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts.map +1 -1
  69. package/dist/components/inputs/variables/editors/SelectVariableEditor.js +58 -52
  70. package/dist/components/inputs/variables/editors/SelectVariableEditor.js.map +1 -1
  71. package/dist/components/inputs/variables/editors/SelectVariableEditor.module.css +25 -0
  72. package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts +1 -1
  73. package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts.map +1 -1
  74. package/dist/components/inputs/variables/editors/TagVariableEditor.js +36 -32
  75. package/dist/components/inputs/variables/editors/TagVariableEditor.js.map +1 -1
  76. package/dist/components/inputs/variables/editors/TagVariableEditor.module.css +7 -0
  77. package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts +2 -2
  78. package/dist/components/inputs/variables/editors/TimeVariableEditor.d.ts.map +1 -1
  79. package/dist/components/inputs/variables/editors/TimeVariableEditor.js +15 -0
  80. package/dist/components/inputs/variables/editors/TimeVariableEditor.js.map +1 -0
  81. package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts +1 -1
  82. package/dist/components/inputs/variables/pickers/NumericVariablePicker.d.ts.map +1 -1
  83. package/dist/components/inputs/variables/pickers/NumericVariablePicker.js +48 -51
  84. package/dist/components/inputs/variables/pickers/NumericVariablePicker.js.map +1 -1
  85. package/dist/components/inputs/variables/pickers/NumericVariablePicker.module.css +27 -0
  86. package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts +1 -1
  87. package/dist/components/inputs/variables/pickers/TemporalElementEditor.d.ts.map +1 -1
  88. package/dist/components/inputs/variables/pickers/TemporalElementEditor.js +58 -0
  89. package/dist/components/inputs/variables/pickers/TemporalElementEditor.js.map +1 -0
  90. package/dist/components/inputs/variables/pickers/TemporalElementEditor.module.css +27 -0
  91. package/dist/components/layout/MessageField.d.ts +3 -3
  92. package/dist/components/layout/MessageField.d.ts.map +1 -1
  93. package/dist/components/layout/MessageField.js +56 -56
  94. package/dist/components/layout/MessageField.js.map +1 -1
  95. package/dist/components/layout/MessageField.module.css +19 -0
  96. package/dist/components/layout/MessagesTabs.d.ts +1 -1
  97. package/dist/components/layout/MessagesTabs.d.ts.map +1 -1
  98. package/dist/components/layout/MessagesTabs.js +40 -43
  99. package/dist/components/layout/MessagesTabs.js.map +1 -1
  100. package/dist/components/layout/MessagesTabs.module.css +21 -0
  101. package/dist/components/layout/MessagesTree.d.ts +3 -2
  102. package/dist/components/layout/MessagesTree.d.ts.map +1 -1
  103. package/dist/components/layout/MessagesTree.js +65 -67
  104. package/dist/components/layout/MessagesTree.js.map +1 -1
  105. package/dist/components/layout/MessagesTree.module.css +36 -0
  106. package/dist/const.d.ts +8 -9
  107. package/dist/const.d.ts.map +1 -1
  108. package/dist/const.js +16 -13
  109. package/dist/const.js.map +1 -1
  110. package/dist/endpoints/get-messages.d.ts +1 -1
  111. package/dist/endpoints/get-messages.d.ts.map +1 -1
  112. package/dist/endpoints/get-messages.js +7 -13
  113. package/dist/endpoints/get-messages.js.map +1 -1
  114. package/dist/endpoints/set-messages.d.ts +1 -1
  115. package/dist/endpoints/set-messages.d.ts.map +1 -1
  116. package/dist/endpoints/set-messages.js +61 -45
  117. package/dist/endpoints/set-messages.js.map +1 -1
  118. package/dist/entities.d.ts +5 -0
  119. package/dist/entities.d.ts.map +1 -0
  120. package/dist/entities.js +38 -0
  121. package/dist/entities.js.map +1 -0
  122. package/dist/exports/client.d.ts +2 -0
  123. package/dist/exports/client.d.ts.map +1 -0
  124. package/dist/exports/client.js +3 -0
  125. package/dist/exports/client.js.map +1 -0
  126. package/dist/exports/rsc.d.ts +2 -2
  127. package/dist/exports/rsc.d.ts.map +1 -1
  128. package/dist/exports/rsc.js +4 -7
  129. package/dist/exports/rsc.js.map +1 -1
  130. package/dist/hooks.d.ts +4 -0
  131. package/dist/hooks.d.ts.map +1 -0
  132. package/dist/hooks.js +24 -0
  133. package/dist/hooks.js.map +1 -0
  134. package/dist/index.d.ts +20 -3
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +64 -80
  137. package/dist/index.js.map +1 -1
  138. package/dist/payload-types.d.ts +258 -0
  139. package/dist/payload-types.d.ts.map +1 -0
  140. package/dist/payload-types.js +15 -0
  141. package/dist/payload-types.js.map +1 -0
  142. package/dist/requests/fetchMessageFromAPI.d.ts +10 -0
  143. package/dist/requests/fetchMessageFromAPI.d.ts.map +1 -0
  144. package/dist/requests/fetchMessageFromAPI.js +15 -0
  145. package/dist/requests/fetchMessageFromAPI.js.map +1 -0
  146. package/dist/requests/fetchMessageFromPayload.d.ts +3 -0
  147. package/dist/requests/fetchMessageFromPayload.d.ts.map +1 -0
  148. package/dist/requests/fetchMessageFromPayload.js +29 -0
  149. package/dist/requests/fetchMessageFromPayload.js.map +1 -0
  150. package/dist/requests/fetchMessages.d.ts +3 -11
  151. package/dist/requests/fetchMessages.d.ts.map +1 -1
  152. package/dist/requests/fetchMessages.js +10 -40
  153. package/dist/requests/fetchMessages.js.map +1 -1
  154. package/dist/types.d.ts +7 -23
  155. package/dist/types.d.ts.map +1 -1
  156. package/dist/types.js +3 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils/config.d.ts +3 -3
  159. package/dist/utils/config.d.ts.map +1 -1
  160. package/dist/utils/config.js +27 -17
  161. package/dist/utils/config.js.map +1 -1
  162. package/dist/utils/error-handling.js +14 -12
  163. package/dist/utils/error-handling.js.map +1 -1
  164. package/dist/utils/format.d.ts +1 -1
  165. package/dist/utils/format.js +21 -13
  166. package/dist/utils/format.js.map +1 -1
  167. package/dist/utils/guards.d.ts +2 -1
  168. package/dist/utils/guards.js +8 -18
  169. package/dist/utils/guards.js.map +1 -1
  170. package/dist/utils/icu-tranform.d.ts +13 -18
  171. package/dist/utils/icu-tranform.d.ts.map +1 -1
  172. package/dist/utils/icu-tranform.js +140 -108
  173. package/dist/utils/icu-tranform.js.map +1 -1
  174. package/dist/utils/sanitize.d.ts +1 -1
  175. package/dist/utils/sanitize.js +36 -17
  176. package/dist/utils/sanitize.js.map +1 -1
  177. package/dist/utils/schema.d.ts +1 -3
  178. package/dist/utils/schema.d.ts.map +1 -1
  179. package/dist/utils/schema.js +42 -34
  180. package/dist/utils/schema.js.map +1 -1
  181. package/dist/utils/validate.d.ts +2 -2
  182. package/dist/utils/validate.js +52 -53
  183. package/dist/utils/validate.js.map +1 -1
  184. package/package.json +35 -52
  185. package/dist/components/inputs/variables/VariableSuggestion.d.ts +0 -9
  186. package/dist/components/inputs/variables/VariableSuggestion.d.ts.map +0 -1
  187. package/dist/components/inputs/variables/VariableSuggestion.js +0 -41
  188. package/dist/components/inputs/variables/VariableSuggestion.js.map +0 -1
  189. package/dist/components/inputs/variables/extension.d.ts +0 -4
  190. package/dist/components/inputs/variables/extension.d.ts.map +0 -1
  191. package/dist/components/inputs/variables/extension.js +0 -93
  192. package/dist/components/inputs/variables/extension.js.map +0 -1
  193. package/dist/context/messages-form.d.ts +0 -29
  194. package/dist/context/messages-form.d.ts.map +0 -1
  195. package/dist/context/messages-form.js +0 -26
  196. package/dist/context/messages-form.js.map +0 -1
  197. package/dist/exports/link.d.ts.map +0 -1
  198. package/dist/exports/link.js +0 -21
  199. package/dist/exports/link.js.map +0 -1
  200. package/dist/exports/view.d.ts +0 -10
  201. package/dist/exports/view.d.ts.map +0 -1
  202. package/dist/exports/view.js +0 -53
  203. package/dist/exports/view.js.map +0 -1
  204. package/dist/styles.css +0 -1
  205. package/dist/utils/cn.d.ts +0 -3
  206. package/dist/utils/cn.d.ts.map +0 -1
  207. package/dist/utils/cn.js +0 -9
  208. package/dist/utils/cn.js.map +0 -1
@@ -1,67 +1,89 @@
1
- import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
- import { NodeViewWrapper as l } from "@tiptap/react";
3
- import { Popover as a } from "radix-ui";
4
- import { useMemo as c } from "react";
5
- import { cn as p } from "../../../utils/cn.js";
6
- import { isTemporalElement as f, isNumericElement as u } from "../../../utils/guards.js";
7
- import { parseICUMessage as b } from "../../../utils/icu-tranform.js";
8
- import { SelectVariableEditor as h } from "./editors/SelectVariableEditor.js";
9
- import { TagVariableEditor as g } from "./editors/TagVariableEditor.js";
10
- import { NumericVariablePicker as E } from "./pickers/NumericVariablePicker.js";
11
- import { isArgumentElement as v, isSelectElement as w, isTagElement as x } from "@formatjs/icu-messageformat-parser";
12
- const d = !1;
13
- function S({
14
- node: s,
15
- updateAttributes: m
16
- }) {
17
- const o = s.attrs, i = (t) => m({
18
- icu: t
19
- }), e = c(() => {
20
- try {
21
- const [t] = b(o.icu);
22
- if (!t) throw new Error("No part found");
23
- return t;
24
- } catch (t) {
25
- throw console.error(t), new Error(`Invalid ICU: ${o.icu}`, { cause: t });
26
- }
27
- }, [o.icu]);
28
- return /* @__PURE__ */ n(a.Root, { children: [
29
- /* @__PURE__ */ r(a.Trigger, { asChild: !0, children: /* @__PURE__ */ r(
30
- l,
31
- {
32
- as: "span",
33
- className: p(
34
- "inline-flex cursor-pointer items-center rounded-md bg-elevation-250 px-1 hover:bg-elevation-400",
35
- {
36
- "pointer-events-none": v(e) || f(e) && !d
37
- }
38
- ),
39
- contentEditable: !1,
40
- "data-icu": o.icu,
41
- "data-variable": o.name,
42
- role: "button",
43
- tabIndex: 0,
44
- children: o.label
45
- }
46
- ) }),
47
- /* @__PURE__ */ r(a.Portal, { children: /* @__PURE__ */ n(
48
- a.Content,
49
- {
50
- align: "start",
51
- className: "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 grid origin-(--radix-hover-card-content-transform-origin) overflow-clip rounded-md border border-border bg-elevation-50 shadow-md outline-hidden empty:hidden data-[state=closed]:animate-out data-[state=open]:animate-in",
52
- side: "bottom",
53
- sideOffset: 5,
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { $getNodeByKey } from '@payloadcms/richtext-lexical/lexical';
4
+ import { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';
5
+ import { Popover } from 'radix-ui';
6
+ import { useMemo } from 'react';
7
+ import { isArgumentElement, isNumericElement, isSelectElement, isTagElement, isTemporalElement } from '../../../utils/guards';
8
+ import { parseICUMessage } from '../../../utils/icu-tranform';
9
+ import { SelectVariableEditor } from './editors/SelectVariableEditor';
10
+ import { TagVariableEditor } from './editors/TagVariableEditor';
11
+ import { NumericVariablePicker } from './pickers/NumericVariablePicker';
12
+ import { TemporalElementEditor } from './pickers/TemporalElementEditor';
13
+ import styles from './VariableChip.module.css';
14
+ const TEMPORAL_ELEMENTS_FLAG = false;
15
+ // TODO replace popover with portal below input field
16
+ export function VariableChip({ name, label, icu, nodeKey }) {
17
+ const [editor] = useLexicalComposerContext();
18
+ const handleUpdate = (value)=>{
19
+ editor.update(()=>{
20
+ const node = $getNodeByKey(nodeKey);
21
+ if (node) {
22
+ node.setData({
23
+ ...node.getData(),
24
+ icu: value
25
+ });
26
+ }
27
+ });
28
+ };
29
+ const element = useMemo(()=>{
30
+ try {
31
+ const [part] = parseICUMessage(icu);
32
+ if (!part) throw new Error('No part found');
33
+ return part;
34
+ } catch (error) {
35
+ console.error(error);
36
+ throw new Error(`Invalid ICU: ${icu}`, {
37
+ cause: error
38
+ });
39
+ }
40
+ }, [
41
+ icu
42
+ ]);
43
+ const isDisabled = isArgumentElement(element) || isTemporalElement(element) && !TEMPORAL_ELEMENTS_FLAG;
44
+ return /*#__PURE__*/ _jsxs(Popover.Root, {
54
45
  children: [
55
- u(e) && /* @__PURE__ */ r(E, { element: e, onUpdate: i }),
56
- w(e) && /* @__PURE__ */ r(h, { element: e, onUpdate: i }),
57
- d,
58
- x(e) && /* @__PURE__ */ r(g, { element: e, onUpdate: i })
46
+ /*#__PURE__*/ _jsx(Popover.Trigger, {
47
+ asChild: true,
48
+ children: /*#__PURE__*/ _jsx("button", {
49
+ className: [
50
+ styles.chip,
51
+ isDisabled ? styles.chipDisabled : undefined
52
+ ].filter(Boolean).join(' '),
53
+ "data-icu": icu,
54
+ "data-variable": name,
55
+ type: "button",
56
+ children: label
57
+ })
58
+ }),
59
+ /*#__PURE__*/ _jsx(Popover.Portal, {
60
+ children: /*#__PURE__*/ _jsxs(Popover.Content, {
61
+ align: "start",
62
+ className: styles.popoverContent,
63
+ side: "bottom",
64
+ sideOffset: 5,
65
+ children: [
66
+ isNumericElement(element) && /*#__PURE__*/ _jsx(NumericVariablePicker, {
67
+ element: element,
68
+ onUpdate: handleUpdate
69
+ }),
70
+ isSelectElement(element) && /*#__PURE__*/ _jsx(SelectVariableEditor, {
71
+ element: element,
72
+ onUpdate: handleUpdate
73
+ }),
74
+ TEMPORAL_ELEMENTS_FLAG && isTemporalElement(element) && /*#__PURE__*/ _jsx(TemporalElementEditor, {
75
+ element: element,
76
+ onUpdate: handleUpdate
77
+ }),
78
+ isTagElement(element) && /*#__PURE__*/ _jsx(TagVariableEditor, {
79
+ element: element,
80
+ onUpdate: handleUpdate
81
+ })
82
+ ]
83
+ })
84
+ })
59
85
  ]
60
- }
61
- ) })
62
- ] });
86
+ });
63
87
  }
64
- export {
65
- S as VariableChip
66
- };
67
- //# sourceMappingURL=VariableChip.js.map
88
+
89
+ //# sourceMappingURL=VariableChip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VariableChip.js","sources":["../../../../src/components/inputs/variables/VariableChip.tsx"],"sourcesContent":["import type { ReactNodeViewProps } from '@tiptap/react';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport { Popover } from 'radix-ui';\nimport { useMemo } from 'react';\nimport type { VariableMentionNodeAttrs } from '@/types';\n\nimport { cn } from '@/utils/cn';\nimport {\n isArgumentElement,\n isNumericElement,\n isSelectElement,\n isTagElement,\n isTemporalElement,\n} from '@/utils/guards';\nimport { parseICUMessage } from '@/utils/icu-tranform';\n\nimport { SelectVariableEditor } from './editors/SelectVariableEditor';\nimport { TagVariableEditor } from './editors/TagVariableEditor';\nimport { NumericVariablePicker } from './pickers/NumericVariablePicker';\nimport { TemporalElementEditor } from './pickers/TemporalElementEditor';\nimport { VariableIcon } from './VariableIcon';\n\nconst TEMPORAL_ELEMENTS_FLAG = false;\n\n// TODO replace popover with portal below input field\n\nexport function VariableChip({\n node,\n updateAttributes,\n}: ReactNodeViewProps<HTMLElement>) {\n const attrs = node.attrs as VariableMentionNodeAttrs;\n const handleUpdate = (value: string) =>\n updateAttributes({\n icu: value,\n });\n\n const element = useMemo(() => {\n try {\n const [part] = parseICUMessage(attrs.icu);\n if (!part) throw new Error('No part found');\n return part;\n } catch (error) {\n console.error(error);\n throw new Error(`Invalid ICU: ${attrs.icu}`, { cause: error });\n }\n }, [attrs.icu]);\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <NodeViewWrapper\n as=\"span\"\n className={cn(\n 'inline-flex cursor-pointer items-center rounded-md bg-elevation-250 px-1 hover:bg-elevation-400',\n {\n 'pointer-events-none':\n isArgumentElement(element) ||\n (isTemporalElement(element) && !TEMPORAL_ELEMENTS_FLAG),\n },\n )}\n contentEditable={false}\n data-icu={attrs.icu}\n data-variable={attrs.name}\n role=\"button\"\n tabIndex={0}\n >\n {/* <VariableIcon type={element.type} className=\"size-4\" /> */}\n {attrs.label}\n </NodeViewWrapper>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n align=\"start\"\n className=\"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 grid origin-(--radix-hover-card-content-transform-origin) overflow-clip rounded-md border border-border bg-elevation-50 shadow-md outline-hidden empty:hidden data-[state=closed]:animate-out data-[state=open]:animate-in\"\n side=\"bottom\"\n sideOffset={5}\n >\n {isNumericElement(element) && (\n <NumericVariablePicker element={element} onUpdate={handleUpdate} />\n )}\n {isSelectElement(element) && (\n <SelectVariableEditor element={element} onUpdate={handleUpdate} />\n )}\n {TEMPORAL_ELEMENTS_FLAG && isTemporalElement(element) && (\n <TemporalElementEditor element={element} onUpdate={handleUpdate} />\n )}\n\n {isTagElement(element) && (\n <TagVariableEditor element={element} onUpdate={handleUpdate} />\n )}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"],"names":["TEMPORAL_ELEMENTS_FLAG","VariableChip","node","updateAttributes","attrs","handleUpdate","value","element","useMemo","part","parseICUMessage","error","jsxs","Popover","jsx","NodeViewWrapper","cn","isArgumentElement","isTemporalElement","isNumericElement","NumericVariablePicker","isSelectElement","SelectVariableEditor","isTagElement","TagVariableEditor"],"mappings":";;;;;;;;;;;AAsBA,MAAMA,IAAyB;AAIxB,SAASC,EAAa;AAAA,EAC3B,MAAAC;AAAA,EACA,kBAAAC;AACF,GAAoC;AAClC,QAAMC,IAAQF,EAAK,OACbG,IAAe,CAACC,MACpBH,EAAiB;AAAA,IACf,KAAKG;AAAA,EAAA,CACN,GAEGC,IAAUC,EAAQ,MAAM;AAC5B,QAAI;AACF,YAAM,CAACC,CAAI,IAAIC,EAAgBN,EAAM,GAAG;AACxC,UAAI,CAACK,EAAM,OAAM,IAAI,MAAM,eAAe;AAC1C,aAAOA;AAAA,IACT,SAASE,GAAO;AACd,oBAAQ,MAAMA,CAAK,GACb,IAAI,MAAM,gBAAgBP,EAAM,GAAG,IAAI,EAAE,OAAOO,GAAO;AAAA,IAC/D;AAAA,EACF,GAAG,CAACP,EAAM,GAAG,CAAC;AAEd,SACE,gBAAAQ,EAACC,EAAQ,MAAR,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACD,EAAQ,SAAR,EAAgB,SAAO,IACtB,UAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,IAAG;AAAA,QACH,WAAWC;AAAA,UACT;AAAA,UACA;AAAA,YACE,uBACEC,EAAkBV,CAAO,KACxBW,EAAkBX,CAAO,KAAK,CAACP;AAAA,UAAA;AAAA,QACpC;AAAA,QAEF,iBAAiB;AAAA,QACjB,YAAUI,EAAM;AAAA,QAChB,iBAAeA,EAAM;AAAA,QACrB,MAAK;AAAA,QACL,UAAU;AAAA,QAGT,UAAAA,EAAM;AAAA,MAAA;AAAA,IAAA,GAEX;AAAA,IACA,gBAAAU,EAACD,EAAQ,QAAR,EACC,UAAA,gBAAAD;AAAA,MAACC,EAAQ;AAAA,MAAR;AAAA,QACC,OAAM;AAAA,QACN,WAAU;AAAA,QACV,MAAK;AAAA,QACL,YAAY;AAAA,QAEX,UAAA;AAAA,UAAAM,EAAiBZ,CAAO,KACvB,gBAAAO,EAACM,GAAA,EAAsB,SAAAb,GAAkB,UAAUF,GAAc;AAAA,UAElEgB,EAAgBd,CAAO,uBACrBe,GAAA,EAAqB,SAAAf,GAAkB,UAAUF,GAAc;AAAA,UAEjEL;AAAA,UAIAuB,EAAahB,CAAO,uBAClBiB,GAAA,EAAkB,SAAAjB,GAAkB,UAAUF,EAAA,CAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,EAEjE,CACF;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"sources":["../../../../src/components/inputs/variables/VariableChip.tsx"],"sourcesContent":["'use client';\n\nimport type { NodeKey } from '@payloadcms/richtext-lexical/lexical';\nimport { $getNodeByKey } from '@payloadcms/richtext-lexical/lexical';\nimport { useLexicalComposerContext } from '@payloadcms/richtext-lexical/lexical/react/LexicalComposerContext';\nimport type { BeautifulMentionNode } from 'lexical-beautiful-mentions';\nimport { Popover } from 'radix-ui';\nimport { useMemo } from 'react';\n\nimport {\n isArgumentElement,\n isNumericElement,\n isSelectElement,\n isTagElement,\n isTemporalElement,\n} from '@/utils/guards';\nimport { parseICUMessage } from '@/utils/icu-tranform';\n\nimport { SelectVariableEditor } from './editors/SelectVariableEditor';\nimport { TagVariableEditor } from './editors/TagVariableEditor';\nimport { NumericVariablePicker } from './pickers/NumericVariablePicker';\nimport { TemporalElementEditor } from './pickers/TemporalElementEditor';\nimport styles from './VariableChip.module.css';\n\nconst TEMPORAL_ELEMENTS_FLAG = false;\n\nexport interface VariableChipProps {\n name: string;\n label: string;\n icu: string;\n nodeKey: NodeKey;\n}\n\n// TODO replace popover with portal below input field\n\nexport function VariableChip({ name, label, icu, nodeKey }: VariableChipProps) {\n const [editor] = useLexicalComposerContext();\n\n const handleUpdate = (value: string) => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey) as BeautifulMentionNode | null;\n if (node) {\n node.setData({ ...node.getData(), icu: value });\n }\n });\n };\n\n const element = useMemo(() => {\n try {\n const [part] = parseICUMessage(icu);\n if (!part) throw new Error('No part found');\n return part;\n } catch (error) {\n console.error(error);\n throw new Error(`Invalid ICU: ${icu}`, { cause: error });\n }\n }, [icu]);\n\n const isDisabled =\n isArgumentElement(element) ||\n (isTemporalElement(element) && !TEMPORAL_ELEMENTS_FLAG);\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <button\n className={[styles.chip, isDisabled ? styles.chipDisabled : undefined]\n .filter(Boolean)\n .join(' ')}\n data-icu={icu}\n data-variable={name}\n type=\"button\"\n >\n {/* <VariableIcon type={element.type} className=\"size-4\" /> */}\n {label}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n align=\"start\"\n className={styles.popoverContent}\n side=\"bottom\"\n sideOffset={5}\n >\n {isNumericElement(element) && (\n <NumericVariablePicker element={element} onUpdate={handleUpdate} />\n )}\n {isSelectElement(element) && (\n <SelectVariableEditor element={element} onUpdate={handleUpdate} />\n )}\n {TEMPORAL_ELEMENTS_FLAG && isTemporalElement(element) && (\n <TemporalElementEditor element={element} onUpdate={handleUpdate} />\n )}\n\n {isTagElement(element) && (\n <TagVariableEditor element={element} onUpdate={handleUpdate} />\n )}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"],"names":["$getNodeByKey","useLexicalComposerContext","Popover","useMemo","isArgumentElement","isNumericElement","isSelectElement","isTagElement","isTemporalElement","parseICUMessage","SelectVariableEditor","TagVariableEditor","NumericVariablePicker","TemporalElementEditor","styles","TEMPORAL_ELEMENTS_FLAG","VariableChip","name","label","icu","nodeKey","editor","handleUpdate","value","update","node","setData","getData","element","part","Error","error","console","cause","isDisabled","Root","Trigger","asChild","button","className","chip","chipDisabled","undefined","filter","Boolean","join","data-icu","data-variable","type","Portal","Content","align","popoverContent","side","sideOffset","onUpdate"],"mappings":"AAAA;;AAGA,SAASA,aAAa,QAAQ,uCAAuC;AACrE,SAASC,yBAAyB,QAAQ,oEAAoE;AAE9G,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SACEC,iBAAiB,EACjBC,gBAAgB,EAChBC,eAAe,EACfC,YAAY,EACZC,iBAAiB,QACZ,iBAAiB;AACxB,SAASC,eAAe,QAAQ,uBAAuB;AAEvD,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,OAAOC,YAAY,4BAA4B;AAE/C,MAAMC,yBAAyB;AAS/B,qDAAqD;AAErD,OAAO,SAASC,aAAa,EAAEC,IAAI,EAAEC,KAAK,EAAEC,GAAG,EAAEC,OAAO,EAAqB;IAC3E,MAAM,CAACC,OAAO,GAAGpB;IAEjB,MAAMqB,eAAe,CAACC;QACpBF,OAAOG,MAAM,CAAC;YACZ,MAAMC,OAAOzB,cAAcoB;YAC3B,IAAIK,MAAM;gBACRA,KAAKC,OAAO,CAAC;oBAAE,GAAGD,KAAKE,OAAO,EAAE;oBAAER,KAAKI;gBAAM;YAC/C;QACF;IACF;IAEA,MAAMK,UAAUzB,QAAQ;QACtB,IAAI;YACF,MAAM,CAAC0B,KAAK,GAAGpB,gBAAgBU;YAC/B,IAAI,CAACU,MAAM,MAAM,IAAIC,MAAM;YAC3B,OAAOD;QACT,EAAE,OAAOE,OAAO;YACdC,QAAQD,KAAK,CAACA;YACd,MAAM,IAAID,MAAM,CAAC,aAAa,EAAEX,KAAK,EAAE;gBAAEc,OAAOF;YAAM;QACxD;IACF,GAAG;QAACZ;KAAI;IAER,MAAMe,aACJ9B,kBAAkBwB,YACjBpB,kBAAkBoB,YAAY,CAACb;IAElC,qBACE,MAACb,QAAQiC,IAAI;;0BACX,KAACjC,QAAQkC,OAAO;gBAACC,OAAO;0BACtB,cAAA,KAACC;oBACCC,WAAW;wBAACzB,OAAO0B,IAAI;wBAAEN,aAAapB,OAAO2B,YAAY,GAAGC;qBAAU,CACnEC,MAAM,CAACC,SACPC,IAAI,CAAC;oBACRC,YAAU3B;oBACV4B,iBAAe9B;oBACf+B,MAAK;8BAGJ9B;;;0BAGL,KAAChB,QAAQ+C,MAAM;0BACb,cAAA,MAAC/C,QAAQgD,OAAO;oBACdC,OAAM;oBACNZ,WAAWzB,OAAOsC,cAAc;oBAChCC,MAAK;oBACLC,YAAY;;wBAEXjD,iBAAiBuB,0BAChB,KAAChB;4BAAsBgB,SAASA;4BAAS2B,UAAUjC;;wBAEpDhB,gBAAgBsB,0BACf,KAAClB;4BAAqBkB,SAASA;4BAAS2B,UAAUjC;;wBAEnDP,0BAA0BP,kBAAkBoB,0BAC3C,KAACf;4BAAsBe,SAASA;4BAAS2B,UAAUjC;;wBAGpDf,aAAaqB,0BACZ,KAACjB;4BAAkBiB,SAASA;4BAAS2B,UAAUjC;;;;;;;AAM3D"}
@@ -0,0 +1,66 @@
1
+ .chip {
2
+ display: inline-flex;
3
+ cursor: pointer;
4
+ align-items: center;
5
+ border-radius: var(--style-radius-m);
6
+ background-color: var(--theme-elevation-250);
7
+ padding-inline: 0.25rem;
8
+ appearance: none;
9
+ border: none;
10
+ }
11
+
12
+ .chip:hover {
13
+ background-color: var(--theme-elevation-400);
14
+ }
15
+
16
+ .chipDisabled {
17
+ pointer-events: none;
18
+ }
19
+
20
+ .popoverContent {
21
+ z-index: 50;
22
+ display: grid;
23
+ transform-origin: var(--radix-hover-card-content-transform-origin);
24
+ overflow: clip;
25
+ border-radius: var(--style-radius-m);
26
+ border: 1px solid var(--theme-border-color);
27
+ background-color: var(--theme-elevation-50);
28
+ box-shadow:
29
+ 0 4px 6px -1px rgb(0 0 0 / 0.1),
30
+ 0 2px 4px -2px rgb(0 0 0 / 0.1);
31
+ outline: none;
32
+ }
33
+
34
+ .popoverContent:empty {
35
+ display: none;
36
+ }
37
+
38
+ .popoverContent[data-state="open"] {
39
+ animation: popoverIn 150ms ease-out;
40
+ }
41
+
42
+ .popoverContent[data-state="closed"] {
43
+ animation: popoverOut 150ms ease-in;
44
+ }
45
+
46
+ @keyframes popoverIn {
47
+ from {
48
+ opacity: 0;
49
+ transform: scale(0.95);
50
+ }
51
+ to {
52
+ opacity: 1;
53
+ transform: scale(1);
54
+ }
55
+ }
56
+
57
+ @keyframes popoverOut {
58
+ from {
59
+ opacity: 1;
60
+ transform: scale(1);
61
+ }
62
+ to {
63
+ opacity: 0;
64
+ transform: scale(0.95);
65
+ }
66
+ }
@@ -1,5 +1,5 @@
1
1
  import { TYPE } from '@formatjs/icu-messageformat-parser';
2
- import { IconProps } from '@tabler/icons-react';
2
+ import type { IconProps } from '@tabler/icons-react';
3
3
  export interface VariableIconProps extends Omit<IconProps, 'type'> {
4
4
  type: TYPE;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VariableIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/variables/VariableIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAUrD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;IAChE,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,kDAmBjE"}
1
+ {"version":3,"file":"VariableIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/variables/VariableIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AASrD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;IAChE,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,kDAmBjE"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { TYPE } from '@formatjs/icu-messageformat-parser';
3
+ import { IconAntennaBars5, IconCalendar, IconClock, IconHash, IconLayoutList } from '@tabler/icons-react';
4
+ export function VariableIcon({ type, ...props }) {
5
+ switch(type){
6
+ case TYPE.literal:
7
+ case TYPE.argument:
8
+ case TYPE.pound:
9
+ return null;
10
+ case TYPE.number:
11
+ return /*#__PURE__*/ _jsx(IconHash, {
12
+ ...props
13
+ });
14
+ case TYPE.date:
15
+ return /*#__PURE__*/ _jsx(IconCalendar, {
16
+ ...props
17
+ });
18
+ case TYPE.time:
19
+ return /*#__PURE__*/ _jsx(IconClock, {
20
+ ...props
21
+ });
22
+ case TYPE.select:
23
+ return /*#__PURE__*/ _jsx(IconLayoutList, {
24
+ ...props
25
+ });
26
+ case TYPE.plural:
27
+ return /*#__PURE__*/ _jsx(IconAntennaBars5, {
28
+ ...props
29
+ });
30
+ case TYPE.tag:
31
+ return null;
32
+ }
33
+ }
34
+
35
+ //# sourceMappingURL=VariableIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/inputs/variables/VariableIcon.tsx"],"sourcesContent":["import { TYPE } from '@formatjs/icu-messageformat-parser';\nimport type { IconProps } from '@tabler/icons-react';\nimport {\n IconAntennaBars5,\n IconCalendar,\n IconClock,\n IconHash,\n IconLayoutList,\n} from '@tabler/icons-react';\n\nexport interface VariableIconProps extends Omit<IconProps, 'type'> {\n type: TYPE;\n}\n\nexport function VariableIcon({ type, ...props }: VariableIconProps) {\n switch (type) {\n case TYPE.literal:\n case TYPE.argument:\n case TYPE.pound:\n return null;\n case TYPE.number:\n return <IconHash {...props} />;\n case TYPE.date:\n return <IconCalendar {...props} />;\n case TYPE.time:\n return <IconClock {...props} />;\n case TYPE.select:\n return <IconLayoutList {...props} />;\n case TYPE.plural:\n return <IconAntennaBars5 {...props} />;\n case TYPE.tag:\n return null;\n }\n}\n"],"names":["TYPE","IconAntennaBars5","IconCalendar","IconClock","IconHash","IconLayoutList","VariableIcon","type","props","literal","argument","pound","number","date","time","select","plural","tag"],"mappings":";AAAA,SAASA,IAAI,QAAQ,qCAAqC;AAE1D,SACEC,gBAAgB,EAChBC,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,cAAc,QACT,sBAAsB;AAM7B,OAAO,SAASC,aAAa,EAAEC,IAAI,EAAE,GAAGC,OAA0B;IAChE,OAAQD;QACN,KAAKP,KAAKS,OAAO;QACjB,KAAKT,KAAKU,QAAQ;QAClB,KAAKV,KAAKW,KAAK;YACb,OAAO;QACT,KAAKX,KAAKY,MAAM;YACd,qBAAO,KAACR;gBAAU,GAAGI,KAAK;;QAC5B,KAAKR,KAAKa,IAAI;YACZ,qBAAO,KAACX;gBAAc,GAAGM,KAAK;;QAChC,KAAKR,KAAKc,IAAI;YACZ,qBAAO,KAACX;gBAAW,GAAGK,KAAK;;QAC7B,KAAKR,KAAKe,MAAM;YACd,qBAAO,KAACV;gBAAgB,GAAGG,KAAK;;QAClC,KAAKR,KAAKgB,MAAM;YACd,qBAAO,KAACf;gBAAkB,GAAGO,KAAK;;QACpC,KAAKR,KAAKiB,GAAG;YACX,OAAO;IACX;AACF"}
@@ -0,0 +1,11 @@
1
+ import type { EditorConfig, LexicalEditor } from '@payloadcms/richtext-lexical/lexical';
2
+ import { BeautifulMentionNode, type SerializedBeautifulMentionNode } from 'lexical-beautiful-mentions';
3
+ export declare class VariableMentionNode extends BeautifulMentionNode {
4
+ static getType(): string;
5
+ static clone(node: VariableMentionNode): VariableMentionNode;
6
+ static importJSON(serializedNode: SerializedBeautifulMentionNode): VariableMentionNode;
7
+ exportJSON(): SerializedBeautifulMentionNode;
8
+ getTextContent(): string;
9
+ decorate(_editor: LexicalEditor, _config: EditorConfig): React.JSX.Element;
10
+ }
11
+ //# sourceMappingURL=VariableNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariableNode.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/variables/VariableNode.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACd,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,KAAK,8BAA8B,EACpC,MAAM,4BAA4B,CAAC;AAIpC,qBAAa,mBAAoB,SAAQ,oBAAoB;IAC3D,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;IAS5D,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,8BAA8B,GAC7C,mBAAmB;IAQtB,UAAU,IAAI,8BAA8B;IAO5C,cAAc,IAAI,MAAM;IAKxB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;CAW3E"}
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { BeautifulMentionNode } from 'lexical-beautiful-mentions';
4
+ import { VariableChip } from './VariableChip';
5
+ export class VariableMentionNode extends BeautifulMentionNode {
6
+ static getType() {
7
+ return 'variableMention';
8
+ }
9
+ static clone(node) {
10
+ return new VariableMentionNode(node.__trigger, node.__value, node.__data, node.__key);
11
+ }
12
+ static importJSON(serializedNode) {
13
+ return new VariableMentionNode(serializedNode.trigger, serializedNode.value, serializedNode.data);
14
+ }
15
+ exportJSON() {
16
+ return {
17
+ ...super.exportJSON(),
18
+ type: 'variableMention'
19
+ };
20
+ }
21
+ getTextContent() {
22
+ const icu = this.__data?.icu;
23
+ return typeof icu === 'string' ? icu : `{${this.__value}}`;
24
+ }
25
+ decorate(_editor, _config) {
26
+ const data = this.__data;
27
+ return /*#__PURE__*/ _jsx(VariableChip, {
28
+ icu: this.getTextContent(),
29
+ label: typeof data?.label === 'string' ? data.label : this.__value,
30
+ name: this.__value,
31
+ nodeKey: this.__key
32
+ });
33
+ }
34
+ }
35
+
36
+ //# sourceMappingURL=VariableNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/inputs/variables/VariableNode.tsx"],"sourcesContent":["'use client';\n\nimport type {\n EditorConfig,\n LexicalEditor,\n} from '@payloadcms/richtext-lexical/lexical';\nimport {\n BeautifulMentionNode,\n type SerializedBeautifulMentionNode,\n} from 'lexical-beautiful-mentions';\n\nimport { VariableChip } from './VariableChip';\n\nexport class VariableMentionNode extends BeautifulMentionNode {\n static getType(): string {\n return 'variableMention';\n }\n\n static clone(node: VariableMentionNode): VariableMentionNode {\n return new VariableMentionNode(\n node.__trigger,\n node.__value,\n node.__data,\n node.__key,\n );\n }\n\n static importJSON(\n serializedNode: SerializedBeautifulMentionNode,\n ): VariableMentionNode {\n return new VariableMentionNode(\n serializedNode.trigger,\n serializedNode.value,\n serializedNode.data,\n );\n }\n\n exportJSON(): SerializedBeautifulMentionNode {\n return {\n ...super.exportJSON(),\n type: 'variableMention',\n };\n }\n\n getTextContent(): string {\n const icu = this.__data?.icu;\n return typeof icu === 'string' ? icu : `{${this.__value}}`;\n }\n\n decorate(_editor: LexicalEditor, _config: EditorConfig): React.JSX.Element {\n const data = this.__data;\n return (\n <VariableChip\n icu={this.getTextContent()}\n label={typeof data?.label === 'string' ? data.label : this.__value}\n name={this.__value}\n nodeKey={this.__key}\n />\n );\n }\n}\n"],"names":["BeautifulMentionNode","VariableChip","VariableMentionNode","getType","clone","node","__trigger","__value","__data","__key","importJSON","serializedNode","trigger","value","data","exportJSON","type","getTextContent","icu","decorate","_editor","_config","label","name","nodeKey"],"mappings":"AAAA;;AAMA,SACEA,oBAAoB,QAEf,6BAA6B;AAEpC,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,OAAO,MAAMC,4BAA4BF;IACvC,OAAOG,UAAkB;QACvB,OAAO;IACT;IAEA,OAAOC,MAAMC,IAAyB,EAAuB;QAC3D,OAAO,IAAIH,oBACTG,KAAKC,SAAS,EACdD,KAAKE,OAAO,EACZF,KAAKG,MAAM,EACXH,KAAKI,KAAK;IAEd;IAEA,OAAOC,WACLC,cAA8C,EACzB;QACrB,OAAO,IAAIT,oBACTS,eAAeC,OAAO,EACtBD,eAAeE,KAAK,EACpBF,eAAeG,IAAI;IAEvB;IAEAC,aAA6C;QAC3C,OAAO;YACL,GAAG,KAAK,CAACA,YAAY;YACrBC,MAAM;QACR;IACF;IAEAC,iBAAyB;QACvB,MAAMC,MAAM,IAAI,CAACV,MAAM,EAAEU;QACzB,OAAO,OAAOA,QAAQ,WAAWA,MAAM,CAAC,CAAC,EAAE,IAAI,CAACX,OAAO,CAAC,CAAC,CAAC;IAC5D;IAEAY,SAASC,OAAsB,EAAEC,OAAqB,EAAqB;QACzE,MAAMP,OAAO,IAAI,CAACN,MAAM;QACxB,qBACE,KAACP;YACCiB,KAAK,IAAI,CAACD,cAAc;YACxBK,OAAO,OAAOR,MAAMQ,UAAU,WAAWR,KAAKQ,KAAK,GAAG,IAAI,CAACf,OAAO;YAClEgB,MAAM,IAAI,CAAChB,OAAO;YAClBiB,SAAS,IAAI,CAACf,KAAK;;IAGzB;AACF"}
@@ -0,0 +1,34 @@
1
+ .list {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: max-content;
5
+ overflow: clip;
6
+ border-radius: var(--style-radius-m);
7
+ background-color: var(--theme-elevation-100);
8
+ list-style: none;
9
+ margin: 0;
10
+ padding: 0;
11
+ }
12
+
13
+ .list:empty {
14
+ display: none;
15
+ }
16
+
17
+ .item {
18
+ cursor: pointer;
19
+ white-space: nowrap;
20
+ border-radius: 0;
21
+ border: none;
22
+ background-color: transparent;
23
+ padding: 0.25rem 0.75rem;
24
+ font-size: var(--font-size-large);
25
+ }
26
+
27
+ .itemSelected {
28
+ background-color: var(--theme-elevation-800);
29
+ color: var(--theme-elevation-0);
30
+ }
31
+
32
+ .item:not(.itemSelected):hover {
33
+ background-color: var(--theme-elevation-250);
34
+ }
@@ -1,4 +1,4 @@
1
- import { DateElement } from '../../../../types';
1
+ import type { DateElement } from '../../../../types';
2
2
  export interface DateVariableEditorProps {
3
3
  name: string;
4
4
  element: DateElement | undefined;
@@ -6,5 +6,5 @@ export interface DateVariableEditorProps {
6
6
  getValue: () => string;
7
7
  }>;
8
8
  }
9
- export declare function DateVariableEditor({ name, element, ref, }: DateVariableEditorProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function DateVariableEditor({ ref }: DateVariableEditorProps): import("react/jsx-runtime").JSX.Element;
10
10
  //# sourceMappingURL=DateVariableEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/DateVariableEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,GAAG,GACJ,EAAE,uBAAuB,2CASzB"}
1
+ {"version":3,"file":"DateVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/DateVariableEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,2CASlE"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useImperativeHandle } from 'react';
3
+ export function DateVariableEditor({ ref }) {
4
+ useImperativeHandle(ref, ()=>({
5
+ getValue: ()=>{
6
+ // TODO
7
+ return '';
8
+ }
9
+ }));
10
+ return /*#__PURE__*/ _jsx(_Fragment, {
11
+ children: "DateElementEditor"
12
+ });
13
+ }
14
+
15
+ //# sourceMappingURL=DateVariableEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/inputs/variables/editors/DateVariableEditor.tsx"],"sourcesContent":["import { useImperativeHandle } from 'react';\nimport type { DateElement } from '@/types';\n\nexport interface DateVariableEditorProps {\n name: string;\n element: DateElement | undefined;\n ref: React.Ref<{ getValue: () => string }>;\n}\n\nexport function DateVariableEditor({ ref }: DateVariableEditorProps) {\n useImperativeHandle(ref, () => ({\n getValue: () => {\n // TODO\n return '';\n },\n }));\n\n return <>DateElementEditor</>;\n}\n"],"names":["useImperativeHandle","DateVariableEditor","ref","getValue"],"mappings":";AAAA,SAASA,mBAAmB,QAAQ,QAAQ;AAS5C,OAAO,SAASC,mBAAmB,EAAEC,GAAG,EAA2B;IACjEF,oBAAoBE,KAAK,IAAO,CAAA;YAC9BC,UAAU;gBACR,OAAO;gBACP,OAAO;YACT;QACF,CAAA;IAEA,qBAAO;kBAAE;;AACX"}
@@ -1,4 +1,4 @@
1
- import { PluralElement } from '../../../../types';
1
+ import type { PluralElement } from '../../../../types';
2
2
  export interface PluralVariableEditorProps {
3
3
  variableName: string;
4
4
  element: PluralElement | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"PluralVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/PluralVariableEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7C,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAID,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,OAAO,EACP,GAAG,GACJ,EAAE,yBAAyB,2CA8K3B"}
1
+ {"version":3,"file":"PluralVariableEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/inputs/variables/editors/PluralVariableEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAID,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,OAAO,EACP,GAAG,GACJ,EAAE,yBAAyB,2CAuK3B"}