@reforma/components 0.1.2 → 0.1.3

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 (46) hide show
  1. package/dist/Composer/Composer.module.css +1 -0
  2. package/dist/Composer/Composer.module.css.js +26 -0
  3. package/dist/Composer/Composer.module.css.js.map +1 -0
  4. package/dist/Composer/RichField.d.ts +3 -0
  5. package/dist/Composer/RichField.d.ts.map +1 -0
  6. package/dist/Composer/RichField.js +44 -0
  7. package/dist/Composer/RichField.js.map +1 -0
  8. package/dist/Composer/context.d.ts +44 -0
  9. package/dist/Composer/context.d.ts.map +1 -0
  10. package/dist/Composer/context.js +205 -0
  11. package/dist/Composer/context.js.map +1 -0
  12. package/dist/Composer/index.d.ts +5 -0
  13. package/dist/Composer/index.d.ts.map +1 -0
  14. package/dist/Composer/index.js +18 -0
  15. package/dist/{CreateComposer → Composer}/index.js.map +1 -1
  16. package/dist/Composer/parts.d.ts +22 -0
  17. package/dist/Composer/parts.d.ts.map +1 -0
  18. package/dist/Composer/parts.js +231 -0
  19. package/dist/Composer/parts.js.map +1 -0
  20. package/dist/{CreateComposer → Composer}/types.d.ts +6 -6
  21. package/dist/Composer/types.d.ts.map +1 -0
  22. package/dist/Modal/Modal.js +2 -2
  23. package/dist/Modal/Modal.js.map +1 -1
  24. package/dist/chat/Message/turn/MessageTurnStore.js +23 -23
  25. package/dist/chat/Message/turn/MessageTurnStore.js.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +317 -304
  29. package/dist/index.js.map +1 -1
  30. package/dist/modals/ConfirmModal.d.ts +3 -1
  31. package/dist/modals/ConfirmModal.d.ts.map +1 -1
  32. package/dist/modals/ConfirmModal.js +61 -55
  33. package/dist/modals/ConfirmModal.js.map +1 -1
  34. package/dist/node_modules/react-aria/dist/private/interactions/useFocusable.js.map +1 -1
  35. package/package.json +1 -1
  36. package/dist/CreateComposer/CreateComposer.d.ts +0 -26
  37. package/dist/CreateComposer/CreateComposer.d.ts.map +0 -1
  38. package/dist/CreateComposer/CreateComposer.js +0 -338
  39. package/dist/CreateComposer/CreateComposer.js.map +0 -1
  40. package/dist/CreateComposer/CreateComposer.module.css +0 -1
  41. package/dist/CreateComposer/CreateComposer.module.css.js +0 -24
  42. package/dist/CreateComposer/CreateComposer.module.css.js.map +0 -1
  43. package/dist/CreateComposer/index.d.ts +0 -3
  44. package/dist/CreateComposer/index.d.ts.map +0 -1
  45. package/dist/CreateComposer/index.js +0 -5
  46. package/dist/CreateComposer/types.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateComposer.js","sources":["../../src/CreateComposer/CreateComposer.tsx"],"sourcesContent":["'use client';\n\nimport {\n coerceUploadMimeType,\n COMPOSER_PASTE_AS_FILE_MIN_CHARS,\n MAX_CHAT_ATTACHMENT_BYTES_PER_FILE,\n MAX_CHAT_ATTACHMENT_BYTES_TOTAL,\n} from '@reforma/constants';\nimport { Plan } from '@reforma/icons/12';\nimport { Clip, Plan as PlanIcon, Plus } from '@reforma/icons/14';\nimport { SendBold } from '@reforma/icons/16';\nimport { cn, createObjectURL, formatFileSize, revokeObjectURL } from '@reforma/lib';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport { Button } from '../Button';\nimport { Attachment, Attachments } from '../chat/Attachment';\nimport { FileDropOverlay } from '../FileDropOverlay';\nimport { For } from '../For';\nimport { useFileDrag } from '../hooks/useFileDrag';\nimport { Hotkey } from '../Hotkey';\nimport { Menu, MenuItem, MenuTrigger } from '../List';\nimport { Popover, PopoverScroll } from '../Popover';\nimport {\n docToPlainText,\n plainTextToDoc,\n} from '../RichInput';\nimport { RichInput } from '../RichInput/RichInput';\nimport type { RichInputHandle } from '../RichInput/types';\nimport { Show } from '../Show';\nimport { Badge } from '../Tag';\nimport { Text } from '../Text';\nimport { toast } from '../Toast';\nimport styles from './CreateComposer.module.css';\n\nimport type {\n CreateComposerAttachment,\n CreateComposerUploadResult,\n CreateComposerValue,\n} from './types';\n\nexport type CreateComposerProps = {\n value: CreateComposerValue;\n onChange: (value: CreateComposerValue) => void;\n onSubmit: () => void;\n uploadFile: (file: File) => Promise<CreateComposerUploadResult>;\n busy?: boolean;\n placeholder?: string;\n autoFocus?: boolean;\n className?: string;\n header?: ReactNode;\n /** Extra controls next to send (e.g. admin grade strip). */\n toolbarEnd?: ReactNode;\n submitHotkey?: 'enter' | 'mod+enter';\n /** Fixed min rows for the rich field (create project uses 3). */\n rows?: number;\n /** Footer hint under the shell. Default: mod+enter copy. */\n hint?: ReactNode | false;\n};\n\nfunction sumAttachmentBytes(items: readonly CreateComposerAttachment[]): number {\n let sum = 0;\n\n for (const item of items) {\n if (typeof item.size === 'number' && Number.isFinite(item.size)) {\n sum += item.size;\n }\n }\n\n return sum;\n}\n\nfunction attachmentsReady(items: readonly CreateComposerAttachment[]): boolean {\n if (items.length === 0) {\n return true;\n }\n\n return items.every(item => item.uploadStatus === 'ready' && Boolean(item.url));\n}\n\nfunction patchAttachment(\n value: CreateComposerValue,\n clientId: string,\n patch: Partial<CreateComposerAttachment>\n): CreateComposerValue {\n return {\n ...value,\n attachments: value.attachments.map(item => (\n item.clientId === clientId ? { ...item, ...patch } : item\n )),\n };\n}\n\n/**\n * MobX-free create-project composer: prompt, plan mode, attachments, submit.\n * Host supplies {@link uploadFile}; handoff / auth stay outside.\n */\nexport function CreateComposer({\n value,\n onChange,\n onSubmit,\n uploadFile,\n busy = false,\n placeholder = 'What should it do?',\n autoFocus = true,\n className,\n header,\n toolbarEnd,\n submitHotkey = 'mod+enter',\n rows = 3,\n hint,\n}: CreateComposerProps) {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const richRef = useRef<RichInputHandle>(null);\n const valueRef = useRef(value);\n valueRef.current = value;\n const pendingFilesRef = useRef(new Map<string, File>());\n const [fileDragOver, setFileDragOver] = useState(false);\n const [expanded, setExpanded] = useState(true);\n\n useEffect(() => {\n const pending = pendingFilesRef.current;\n\n return () => {\n for (const item of valueRef.current.attachments) {\n revokeObjectURL(item.preview);\n }\n\n pending.clear();\n };\n }, []);\n\n const doc = useMemo(() => plainTextToDoc(value.prompt), [value.prompt]);\n const canSubmit = Boolean(value.prompt.trim())\n && attachmentsReady(value.attachments)\n && !busy;\n\n const uploadOne = useCallback(async(clientId: string, file: File) => {\n const result = await uploadFile(file);\n const current = valueRef.current;\n\n if (!current.attachments.some(item => item.clientId === clientId)) {\n pendingFilesRef.current.delete(clientId);\n\n return;\n }\n\n if (result.ok) {\n const preview = current.attachments.find(item => item.clientId === clientId)?.preview;\n revokeObjectURL(preview);\n pendingFilesRef.current.delete(clientId);\n onChange(patchAttachment(current, clientId, {\n id: result.data.id,\n url: result.data.url,\n filename: result.data.name ?? file.name,\n mediaType: result.data.mimeType ?? coerceUploadMimeType(file.name, file.type),\n size: result.data.size ?? file.size,\n uploadStatus: 'ready',\n uploadError: undefined,\n preview: undefined,\n }));\n\n return;\n }\n\n onChange(patchAttachment(current, clientId, {\n uploadStatus: 'error',\n uploadError: result.message ?? 'Upload failed',\n }));\n }, [onChange, uploadFile]);\n\n const addFiles = useCallback((files: FileList | readonly File[]) => {\n const list = [...files];\n const accepted: File[] = [];\n let batchBytes = 0;\n const used = sumAttachmentBytes(valueRef.current.attachments);\n\n for (const file of list) {\n if (file.size > MAX_CHAT_ATTACHMENT_BYTES_PER_FILE) {\n toast.warning({\n title: 'Attachment too large',\n message: `${ file.name } is over the ${ formatFileSize(MAX_CHAT_ATTACHMENT_BYTES_PER_FILE, { round: 'up' }) } per-file limit.`,\n });\n continue;\n }\n\n if (used + batchBytes + file.size > MAX_CHAT_ATTACHMENT_BYTES_TOTAL) {\n toast.warning({\n title: 'Attachments too large',\n message: `Adding ${ file.name } would exceed the ${ formatFileSize(MAX_CHAT_ATTACHMENT_BYTES_TOTAL, { round: 'up' }) } combined limit.`,\n });\n continue;\n }\n\n accepted.push(file);\n batchBytes += file.size;\n }\n\n if (accepted.length === 0) {\n return;\n }\n\n const nextItems: CreateComposerAttachment[] = accepted.map(file => ({\n clientId: crypto.randomUUID(),\n filename: file.name,\n mediaType: coerceUploadMimeType(file.name, file.type),\n size: file.size,\n lastModified: file.lastModified,\n uploadStatus: 'uploading',\n preview: createObjectURL(file) ?? undefined,\n }));\n\n for (let i = 0; i < accepted.length; i++) {\n pendingFilesRef.current.set(nextItems[i]!.clientId, accepted[i]!);\n }\n\n const next: CreateComposerValue = {\n ...valueRef.current,\n attachments: [...valueRef.current.attachments, ...nextItems],\n };\n onChange(next);\n\n for (let i = 0; i < accepted.length; i++) {\n void uploadOne(nextItems[i]!.clientId, accepted[i]!);\n }\n }, [onChange, uploadOne]);\n\n const drag = useFileDrag({\n onFileDragOver: setFileDragOver,\n onFilesDropped: files => addFiles(files),\n });\n\n const removeAttachment = (clientId: string) => {\n const current = valueRef.current;\n const item = current.attachments.find(entry => entry.clientId === clientId);\n revokeObjectURL(item?.preview);\n pendingFilesRef.current.delete(clientId);\n onChange({\n ...current,\n attachments: current.attachments.filter(entry => entry.clientId !== clientId),\n });\n };\n\n const retryAttachment = (clientId: string) => {\n const current = valueRef.current;\n const item = current.attachments.find(entry => entry.clientId === clientId);\n const file = pendingFilesRef.current.get(clientId);\n\n if (!item || item.uploadStatus !== 'error') {\n return;\n }\n\n if (!file) {\n toast.warning({\n title: 'Could not retry',\n message: 'Remove the file and attach it again.',\n });\n\n return;\n }\n\n onChange(patchAttachment(current, clientId, {\n uploadStatus: 'uploading',\n uploadError: undefined,\n }));\n void uploadOne(clientId, file);\n };\n\n const trySubmit = () => {\n if (!canSubmit) {\n return;\n }\n\n onSubmit();\n };\n\n const hintNode = hint === false\n ? null\n : (hint ?? (\n <Text variant=\"sm\" color=\"secondary\">\n Press\n { ' ' }\n <Hotkey hotkey={ ['mod', 'enter'] } textVariant=\"xs\" />\n { ' ' }\n to create the project\n </Text>\n ));\n\n return (\n <div\n className={ cn(styles.root, className) }\n onDragEnter={ drag.onDragEnter }\n onDragLeave={ drag.onDragLeave }\n onDragOver={ drag.onDragOver }\n onDrop={ drag.onDrop }\n onPaste={ drag.onPaste }\n >\n <FileDropOverlay open={ fileDragOver } label=\"Drop files to attach\" />\n { header }\n <div className={ styles.shell }>\n <Show when={ value.attachments.length > 0 }>\n <div className={ styles.attachments }>\n <Attachments size=\"sm\">\n <For each={ value.attachments }>\n { item => (\n <Attachment\n key={ item.clientId }\n data={ {\n id: item.id,\n url: item.url ?? item.preview,\n filename: item.filename,\n mediaType: item.mediaType,\n size: item.size,\n lastModified: item.lastModified,\n } }\n loading={ item.uploadStatus === 'uploading' }\n error={ item.uploadStatus === 'error' }\n onRetry={ () => retryAttachment(item.clientId) }\n onRemove={ () => removeAttachment(item.clientId) }\n />\n ) }\n </For>\n </Attachments>\n </div>\n </Show>\n <div\n className={ styles.main }\n data-expanded={ expanded || undefined }\n data-min-rows={ rows != null || undefined }\n onPointerDown={ (event) => {\n if (event.target === event.currentTarget) {\n richRef.current?.focus();\n }\n } }\n >\n <div className={ styles.addButton }>\n <input\n ref={ fileInputRef }\n type=\"file\"\n multiple\n tabIndex={ -1 }\n style={ { display: 'none' } }\n onChange={ (ev) => {\n if (ev.target.files?.length) {\n addFiles(ev.target.files);\n }\n\n ev.target.value = '';\n } }\n />\n <MenuTrigger>\n <Button type=\"button\" iconOnly rounded variant=\"filling\" size=\"sm\" tooltip=\"Add\">\n <Plus />\n </Button>\n <Popover placement=\"top start\" spacing=\"xs\">\n <PopoverScroll>\n <Menu aria-label=\"Add to prompt\" size=\"sm\">\n <MenuItem\n id=\"files\"\n text=\"Files\"\n icon={ <Clip /> }\n onAction={ () => fileInputRef.current?.click() }\n />\n <MenuItem\n id=\"plan\"\n text=\"Plan mode\"\n icon={ <PlanIcon /> }\n onAction={ () => {\n onChange({ ...valueRef.current, planMode: true });\n richRef.current?.focus();\n } }\n />\n </Menu>\n </PopoverScroll>\n </Popover>\n </MenuTrigger>\n <Show when={ value.planMode }>\n <Badge\n size=\"sm\"\n color=\"success\"\n rounded\n textValue=\"Plan mode\"\n aria-label=\"Plan mode\"\n icon={ <Plan /> }\n removePlacement=\"leading\"\n onRemove={ () => onChange({ ...valueRef.current, planMode: false }) }\n >\n Plan mode\n </Badge>\n </Show>\n </div>\n <div className={ styles.textareaWrap }>\n <RichInput\n ref={ richRef }\n value={ doc }\n onChange={ (next) => {\n const prompt = docToPlainText(next);\n onChange({ ...valueRef.current, prompt });\n setExpanded(rows != null || prompt.includes('\\n') || prompt.length > 40);\n } }\n autoFocus={ autoFocus }\n minHeight={ rows ? rows * 22 : 20 }\n maxHeight={ 280 }\n placeholder={ placeholder }\n className={ styles.textarea }\n aria-label={ placeholder }\n submitOnEnter={ submitHotkey === 'enter' }\n onSubmit={ () => trySubmit() }\n onPasteFiles={ files => addFiles(files) }\n onPasteText={ (text) => {\n if (text.length < COMPOSER_PASTE_AS_FILE_MIN_CHARS) {\n return false;\n }\n\n const file = new File([text], 'paste.txt', { type: 'text/plain' });\n\n if (file.size > MAX_CHAT_ATTACHMENT_BYTES_PER_FILE) {\n return false;\n }\n\n addFiles([file]);\n\n return true;\n } }\n />\n </div>\n <Show when={ toolbarEnd }>\n <div className={ styles.toolbarEnd }>\n { toolbarEnd }\n </div>\n </Show>\n <Button\n iconOnly\n rounded\n color=\"primary\"\n variant=\"filled\"\n size=\"sm\"\n className={ styles.sendButton }\n isDisabled={ !canSubmit }\n isPending={ busy }\n tooltip=\"Create project\"\n onPress={ () => trySubmit() }\n >\n <SendBold />\n </Button>\n </div>\n </div>\n { hintNode }\n </div>\n );\n}\n"],"names":["sumAttachmentBytes","items","sum","item","attachmentsReady","patchAttachment","value","clientId","patch","CreateComposer","onChange","onSubmit","uploadFile","busy","placeholder","autoFocus","className","header","toolbarEnd","submitHotkey","rows","hint","fileInputRef","useRef","richRef","valueRef","pendingFilesRef","fileDragOver","setFileDragOver","useState","expanded","setExpanded","useEffect","pending","revokeObjectURL","doc","useMemo","plainTextToDoc","canSubmit","uploadOne","useCallback","file","result","current","preview","coerceUploadMimeType","addFiles","files","list","accepted","batchBytes","used","MAX_CHAT_ATTACHMENT_BYTES_PER_FILE","toast","formatFileSize","MAX_CHAT_ATTACHMENT_BYTES_TOTAL","nextItems","createObjectURL","i","next","drag","useFileDrag","removeAttachment","entry","retryAttachment","trySubmit","hintNode","Text","Hotkey","cn","styles","_jsx","FileDropOverlay","_jsxs","Show","Attachments","For","Attachment","event","ev","MenuTrigger","Button","Plus","Popover","PopoverScroll","Menu","MenuItem","Clip","PlanIcon","Badge","Plan","RichInput","prompt","docToPlainText","text","COMPOSER_PASTE_AS_FILE_MIN_CHARS","SendBold"],"mappings":"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"}
@@ -1 +0,0 @@
1
- @layer components{@property --border-angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@keyframes CreateComposer_create-composer-border-spin_SnXDzW{to{--border-angle: 360deg}}.CreateComposer_root_tsD18x{display:flex;flex-direction:column;gap:var(--spacing-xl);width:100%}.CreateComposer_shell_nICgke{display:flex;position:relative;flex-direction:column;z-index:1;border-radius:calc(var(--radius-xl) * var(--squircle-radius-factor));padding:var(--spacing-6);width:100%;font-weight:400;font-size:var(--text-md);line-height:var(--leading-md);font-family:Onest,sans-serif;letter-spacing:0;corner-shape:superellipse(var(--squircle-value));--composer-border-coral: rgba(250, 136, 84, .16);--composer-border-blue: rgba(91, 141, 239, .28);--composer-border-pink: rgba(255, 161, 231, .26);transition:box-shadow var(--transition-duration) var(--ease-in-out);container-type:inline-size;background-color:var(--color-chat-composer);overflow:hidden;line-height:var(--spacing-20)}.dark .CreateComposer_shell_nICgke{--composer-border-coral: rgba(250, 136, 84, .15);--composer-border-blue: rgba(91, 141, 239, .2);--composer-border-pink: rgba(255, 161, 231, .18)}.CreateComposer_shell_nICgke:focus-within{box-shadow:0 0 var(--spacing-20) var(--spacing-1) var(--color-chat-shadow)}.CreateComposer_shell_nICgke:before{position:absolute;inset:0;border-radius:inherit;content:"";corner-shape:inherit;animation:CreateComposer_create-composer-border-spin_SnXDzW 6s linear infinite;background-image:conic-gradient(from var(--border-angle),var(--composer-border-coral),var(--composer-border-blue) 50%,var(--composer-border-pink),var(--composer-border-coral));padding:2px;pointer-events:none;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.CreateComposer_attachments_dJmfWo{display:flex;flex-wrap:wrap;gap:var(--spacing-4);padding:var(--spacing-sm) var(--spacing-sm) var(--spacing-xxs)}.CreateComposer_main_NbLrVP{display:flex;position:relative;flex:1;flex-direction:column;z-index:0;cursor:text;padding:var(--spacing-sm);min-width:0;min-height:0}.CreateComposer_main_NbLrVP[data-expanded] .CreateComposer_textarea_fbqWTj{margin-bottom:var(--spacing-sm);padding-bottom:var(--spacing-30);padding-inline:0}.CreateComposer_main_NbLrVP:not([data-expanded]){display:flex;align-items:center;min-height:var(--spacing-30)}.CreateComposer_main_NbLrVP:not([data-expanded]) .CreateComposer_textareaWrap_McGGgh{display:flex;align-items:center;min-height:var(--spacing-30)}.CreateComposer_main_NbLrVP:not([data-expanded]) .CreateComposer_textarea_fbqWTj{display:flex;flex:1;align-items:center;padding-right:var(--spacing-40);padding-left:var(--spacing-36);min-width:0;min-height:var(--spacing-30)!important}.CreateComposer_main_NbLrVP:not([data-expanded]) .CreateComposer_textarea_fbqWTj [contenteditable=true]{width:100%;min-height:0!important;overflow:hidden!important}.CreateComposer_main_NbLrVP[data-min-rows] .CreateComposer_textarea_fbqWTj [contenteditable=true]{width:100%}.CreateComposer_main_NbLrVP:not([data-expanded]) .CreateComposer_addButton_6T8nWi,.CreateComposer_main_NbLrVP:not([data-expanded]) .CreateComposer_sendButton_GQZTXf,.CreateComposer_main_NbLrVP:not([data-expanded]) .CreateComposer_toolbarEnd_B4kp2q{top:0;bottom:0;margin-block:auto}.CreateComposer_textareaWrap_McGGgh{position:relative;flex:1;z-index:1;min-width:0}.CreateComposer_textarea_fbqWTj{position:relative;border:0;width:100%;min-height:var(--spacing-30)!important}.CreateComposer_addButton_6T8nWi,.CreateComposer_toolbarEnd_B4kp2q,.CreateComposer_sendButton_GQZTXf{position:absolute;bottom:var(--spacing-xs);z-index:2}.CreateComposer_addButton_6T8nWi{display:flex;left:var(--spacing-xs);align-items:center;gap:var(--spacing-xs)}.CreateComposer_toolbarEnd_B4kp2q{display:flex;right:calc(var(--spacing-xs) + var(--spacing-30) + var(--spacing-xs));align-items:center;gap:0;max-width:calc(100% - var(--spacing-80))}.CreateComposer_sendButton_GQZTXf{right:var(--spacing-xs)}}
@@ -1,24 +0,0 @@
1
- const t = "CreateComposer_root_tsD18x", e = "CreateComposer_shell_nICgke", o = "CreateComposer_attachments_dJmfWo", a = "CreateComposer_main_NbLrVP", r = "CreateComposer_textarea_fbqWTj", s = "CreateComposer_textareaWrap_McGGgh", n = "CreateComposer_addButton_6T8nWi", C = "CreateComposer_sendButton_GQZTXf", _ = "CreateComposer_toolbarEnd_B4kp2q", m = {
2
- root: t,
3
- shell: e,
4
- attachments: o,
5
- main: a,
6
- textarea: r,
7
- textareaWrap: s,
8
- addButton: n,
9
- sendButton: C,
10
- toolbarEnd: _
11
- };
12
- export {
13
- n as addButton,
14
- o as attachments,
15
- m as default,
16
- a as main,
17
- t as root,
18
- C as sendButton,
19
- e as shell,
20
- r as textarea,
21
- s as textareaWrap,
22
- _ as toolbarEnd
23
- };
24
- //# sourceMappingURL=CreateComposer.module.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateComposer.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -1,3 +0,0 @@
1
- export { CreateComposer, type CreateComposerProps } from './CreateComposer';
2
- export type { CreateComposerAttachment, CreateComposerUploadErr, CreateComposerUploadOk, CreateComposerUploadResult, CreateComposerValue, } from './types';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/CreateComposer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,YAAY,EACR,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,GACtB,MAAM,SAAS,CAAC"}
@@ -1,5 +0,0 @@
1
- import { CreateComposer as r } from "./CreateComposer.js";
2
- export {
3
- r as CreateComposer
4
- };
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/CreateComposer/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,wBAAwB,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,GAAG,uBAAuB,CAAC"}