@customafk/lunas-ui 0.2.73 → 0.2.74
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.
- package/dist/{action-submit-C19tPHgf.cjs → action-submit-DI590CG3.cjs} +2 -2
- package/dist/{action-submit-C19tPHgf.cjs.map → action-submit-DI590CG3.cjs.map} +1 -1
- package/dist/{action-submit-cOfq0OSY.mjs → action-submit-ScN29AQ1.mjs} +2 -2
- package/dist/{action-submit-cOfq0OSY.mjs.map → action-submit-ScN29AQ1.mjs.map} +1 -1
- package/dist/{actions-form-3ItwYOFj.cjs → actions-form-CNW4nhAP.cjs} +2 -2
- package/dist/{actions-form-3ItwYOFj.cjs.map → actions-form-CNW4nhAP.cjs.map} +1 -1
- package/dist/{actions-form-DxbT1lip.mjs → actions-form-f8sejItb.mjs} +2 -2
- package/dist/{actions-form-DxbT1lip.mjs.map → actions-form-f8sejItb.mjs.map} +1 -1
- package/dist/{button-Bk4Y6_9I.d.cts → button-CKRN3ZQT.d.cts} +2 -2
- package/dist/{button-Bk4Y6_9I.d.mts → button-CKRN3ZQT.d.mts} +2 -2
- package/dist/{calendar-DPKt7D3w.d.mts → calendar-CIhMEz65.d.mts} +2 -2
- package/dist/{calendar-stv2bJv0.d.cts → calendar-DJdVw-yD.d.cts} +2 -2
- package/dist/{carousel-CV3IZ96x.d.mts → carousel-BniJSLfd.d.mts} +2 -2
- package/dist/{carousel-c2XuzmYN.d.cts → carousel-D4--8HfP.d.cts} +2 -2
- package/dist/{checkbox-field-BRqU_dYY.cjs → checkbox-field-Ck_VADFe.cjs} +2 -2
- package/dist/{checkbox-field-BRqU_dYY.cjs.map → checkbox-field-Ck_VADFe.cjs.map} +1 -1
- package/dist/{checkbox-field-BAQN-Yno.mjs → checkbox-field-Csro0Nla.mjs} +2 -2
- package/dist/{checkbox-field-BAQN-Yno.mjs.map → checkbox-field-Csro0Nla.mjs.map} +1 -1
- package/dist/{combobox-field-yvQPJSFC.mjs → combobox-field-BMfA_taQ.mjs} +2 -2
- package/dist/{combobox-field-yvQPJSFC.mjs.map → combobox-field-BMfA_taQ.mjs.map} +1 -1
- package/dist/{combobox-field-DnCpN--a.cjs → combobox-field-Bxrct4lA.cjs} +2 -2
- package/dist/{combobox-field-DnCpN--a.cjs.map → combobox-field-Bxrct4lA.cjs.map} +1 -1
- package/dist/{date-field-DLsJBYw8.cjs → date-field-Ba6O0uV3.cjs} +2 -2
- package/dist/{date-field-DLsJBYw8.cjs.map → date-field-Ba6O0uV3.cjs.map} +1 -1
- package/dist/{date-field-O67C78Kw.mjs → date-field-DUx13OiJ.mjs} +2 -2
- package/dist/{date-field-O67C78Kw.mjs.map → date-field-DUx13OiJ.mjs.map} +1 -1
- package/dist/{dialog-form-ClTCyJDD.cjs → dialog-form-B_kgYxZg.cjs} +2 -2
- package/dist/{dialog-form-ClTCyJDD.cjs.map → dialog-form-B_kgYxZg.cjs.map} +1 -1
- package/dist/{dialog-form-BxlLrEeZ.mjs → dialog-form-SyBJUlDB.mjs} +2 -2
- package/dist/{dialog-form-BxlLrEeZ.mjs.map → dialog-form-SyBJUlDB.mjs.map} +1 -1
- package/dist/dialogs/detail-dialog/components/sidebar.d.cts +2 -2
- package/dist/dialogs/detail-dialog/components/sidebar.d.mts +2 -2
- package/dist/{email-field-DqEDxkp7.mjs → email-field-BGYZUVl0.mjs} +2 -2
- package/dist/{email-field-DqEDxkp7.mjs.map → email-field-BGYZUVl0.mjs.map} +1 -1
- package/dist/{email-field-DZzkfVj5.cjs → email-field-CO_BZHod.cjs} +2 -2
- package/dist/{email-field-DZzkfVj5.cjs.map → email-field-CO_BZHod.cjs.map} +1 -1
- package/dist/features/tanstack-form/index.cjs +1 -1
- package/dist/features/tanstack-form/index.mjs +1 -1
- package/dist/features/text-editor/index.cjs +1 -1
- package/dist/features/text-editor/index.d.cts +1 -1
- package/dist/features/text-editor/index.d.mts +1 -1
- package/dist/features/text-editor/index.mjs +1 -1
- package/dist/{flex-CT71VV-I.d.cts → flex-bw7U4hXn.d.cts} +2 -2
- package/dist/{flex-CT71VV-I.d.mts → flex-bw7U4hXn.d.mts} +2 -2
- package/dist/{index-D9bKlLiM.d.cts → index-DOaKN0wJ.d.cts} +22 -2
- package/dist/{index-D9bKlLiM.d.mts → index-DOaKN0wJ.d.mts} +22 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +9 -9
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +1 -1
- package/dist/{item-DTR2f2CX.d.cts → item-B2JsbfYJ.d.cts} +2 -2
- package/dist/{item-cIhkI3ZI.d.mts → item-DCYlZYdc.d.mts} +2 -2
- package/dist/layouts/flex.d.cts +1 -1
- package/dist/layouts/flex.d.mts +1 -1
- package/dist/{number-field-Cx-1U_Np.mjs → number-field-B89VeU2r.mjs} +2 -2
- package/dist/{number-field-Cx-1U_Np.mjs.map → number-field-B89VeU2r.mjs.map} +1 -1
- package/dist/{number-field-BTLobx1F.cjs → number-field-C7iEv5GJ.cjs} +2 -2
- package/dist/{number-field-BTLobx1F.cjs.map → number-field-C7iEv5GJ.cjs.map} +1 -1
- package/dist/{pagination-B2fyP0J2.d.cts → pagination-B03e1b6x.d.mts} +2 -2
- package/dist/{pagination-DY0PBCnI.d.mts → pagination-Dw23nKW-.d.cts} +2 -2
- package/dist/{password-field-CuBcb4mi.cjs → password-field-9RZ84TNz.cjs} +2 -2
- package/dist/{password-field-CuBcb4mi.cjs.map → password-field-9RZ84TNz.cjs.map} +1 -1
- package/dist/{password-field-CGPjZ5hZ.mjs → password-field-pqUgUcgf.mjs} +2 -2
- package/dist/{password-field-CGPjZ5hZ.mjs.map → password-field-pqUgUcgf.mjs.map} +1 -1
- package/dist/{popover-form-DVJUQ3_T.mjs → popover-form-BmOqFjQM.mjs} +2 -2
- package/dist/{popover-form-DVJUQ3_T.mjs.map → popover-form-BmOqFjQM.mjs.map} +1 -1
- package/dist/{popover-form-DzvgWQ2Q.cjs → popover-form-CLr6xIl5.cjs} +2 -2
- package/dist/{popover-form-DzvgWQ2Q.cjs.map → popover-form-CLr6xIl5.cjs.map} +1 -1
- package/dist/{radio-group-field-GiEbZRkS.cjs → radio-group-field-Bm2nkk1W.cjs} +2 -2
- package/dist/{radio-group-field-GiEbZRkS.cjs.map → radio-group-field-Bm2nkk1W.cjs.map} +1 -1
- package/dist/{radio-group-field-C45y9BQt.mjs → radio-group-field-DsUi8uCy.mjs} +2 -2
- package/dist/{radio-group-field-C45y9BQt.mjs.map → radio-group-field-DsUi8uCy.mjs.map} +1 -1
- package/dist/{select-field-Cd63KvgR.cjs → select-field-F9eikYws.cjs} +2 -2
- package/dist/{select-field-Cd63KvgR.cjs.map → select-field-F9eikYws.cjs.map} +1 -1
- package/dist/{select-field-y3Zttb4j.mjs → select-field-ikKFoatc.mjs} +2 -2
- package/dist/{select-field-y3Zttb4j.mjs.map → select-field-ikKFoatc.mjs.map} +1 -1
- package/dist/{simple-array-field-BODzA766.cjs → simple-array-field-Bm_5b8pE.cjs} +2 -2
- package/dist/{simple-array-field-BODzA766.cjs.map → simple-array-field-Bm_5b8pE.cjs.map} +1 -1
- package/dist/{simple-array-field-DI_56dVs.mjs → simple-array-field-CeqZJfVs.mjs} +2 -2
- package/dist/{simple-array-field-DI_56dVs.mjs.map → simple-array-field-CeqZJfVs.mjs.map} +1 -1
- package/dist/{simple-boolean-field-BjnIh9Mq.cjs → simple-boolean-field-BeL9WjD5.cjs} +2 -2
- package/dist/{simple-boolean-field-BjnIh9Mq.cjs.map → simple-boolean-field-BeL9WjD5.cjs.map} +1 -1
- package/dist/{simple-boolean-field-oP5yJDQL.mjs → simple-boolean-field-DZ0J-Pk0.mjs} +2 -2
- package/dist/{simple-boolean-field-oP5yJDQL.mjs.map → simple-boolean-field-DZ0J-Pk0.mjs.map} +1 -1
- package/dist/{simple-combobox-field-Bd-xk5kC.mjs → simple-combobox-field-BQXmNATZ.mjs} +2 -2
- package/dist/{simple-combobox-field-Bd-xk5kC.mjs.map → simple-combobox-field-BQXmNATZ.mjs.map} +1 -1
- package/dist/{simple-combobox-field-Dgicw0VN.cjs → simple-combobox-field-CeV40wnv.cjs} +2 -2
- package/dist/{simple-combobox-field-Dgicw0VN.cjs.map → simple-combobox-field-CeV40wnv.cjs.map} +1 -1
- package/dist/{simple-date-field-hORsbXHE.cjs → simple-date-field-CrH-92i4.cjs} +2 -2
- package/dist/{simple-date-field-hORsbXHE.cjs.map → simple-date-field-CrH-92i4.cjs.map} +1 -1
- package/dist/{simple-date-field-DE5Z-Zkc.mjs → simple-date-field-D9ymav2L.mjs} +2 -2
- package/dist/{simple-date-field-DE5Z-Zkc.mjs.map → simple-date-field-D9ymav2L.mjs.map} +1 -1
- package/dist/{simple-email-field-CFbpYis_.mjs → simple-email-field-8IiVOYa-.mjs} +2 -2
- package/dist/{simple-email-field-CFbpYis_.mjs.map → simple-email-field-8IiVOYa-.mjs.map} +1 -1
- package/dist/{simple-email-field-DpuMlzxg.cjs → simple-email-field-CsMmMSvS.cjs} +2 -2
- package/dist/{simple-email-field-DpuMlzxg.cjs.map → simple-email-field-CsMmMSvS.cjs.map} +1 -1
- package/dist/{simple-number-field-BY0b4BJp.mjs → simple-number-field-C6hE1Qlj.mjs} +2 -2
- package/dist/{simple-number-field-BY0b4BJp.mjs.map → simple-number-field-C6hE1Qlj.mjs.map} +1 -1
- package/dist/{simple-number-field-C4y4rQcw.cjs → simple-number-field-CrU2A2yp.cjs} +2 -2
- package/dist/{simple-number-field-C4y4rQcw.cjs.map → simple-number-field-CrU2A2yp.cjs.map} +1 -1
- package/dist/{simple-password-field-CA0FuETK.mjs → simple-password-field-CabyA9Y7.mjs} +2 -2
- package/dist/{simple-password-field-CA0FuETK.mjs.map → simple-password-field-CabyA9Y7.mjs.map} +1 -1
- package/dist/{simple-password-field-BUzKJ0fu.cjs → simple-password-field-DWmUR_5_.cjs} +2 -2
- package/dist/{simple-password-field-BUzKJ0fu.cjs.map → simple-password-field-DWmUR_5_.cjs.map} +1 -1
- package/dist/{simple-radio-group-field-BM7HBTSs.mjs → simple-radio-group-field-BNFgrTSb.mjs} +2 -2
- package/dist/{simple-radio-group-field-BM7HBTSs.mjs.map → simple-radio-group-field-BNFgrTSb.mjs.map} +1 -1
- package/dist/{simple-radio-group-field-CCxUaYom.cjs → simple-radio-group-field-CpTX_Xoy.cjs} +2 -2
- package/dist/{simple-radio-group-field-CCxUaYom.cjs.map → simple-radio-group-field-CpTX_Xoy.cjs.map} +1 -1
- package/dist/{simple-select-field-CeTVQwmP.mjs → simple-select-field-CiUfRHCo.mjs} +2 -2
- package/dist/{simple-select-field-CeTVQwmP.mjs.map → simple-select-field-CiUfRHCo.mjs.map} +1 -1
- package/dist/{simple-select-field-CzN4Xb7n.cjs → simple-select-field-VibM3I3D.cjs} +2 -2
- package/dist/{simple-select-field-CzN4Xb7n.cjs.map → simple-select-field-VibM3I3D.cjs.map} +1 -1
- package/dist/{simple-text-field-CDsgWUFD.mjs → simple-text-field-Cmmmci4R.mjs} +2 -2
- package/dist/{simple-text-field-CDsgWUFD.mjs.map → simple-text-field-Cmmmci4R.mjs.map} +1 -1
- package/dist/{simple-text-field-DGZL0gML.cjs → simple-text-field-DRlcBB-3.cjs} +2 -2
- package/dist/{simple-text-field-DGZL0gML.cjs.map → simple-text-field-DRlcBB-3.cjs.map} +1 -1
- package/dist/{simple-textarea-field-vGYOegPj.cjs → simple-textarea-field-B0fOG7nh.cjs} +2 -2
- package/dist/{simple-textarea-field-vGYOegPj.cjs.map → simple-textarea-field-B0fOG7nh.cjs.map} +1 -1
- package/dist/{simple-textarea-field-BiuHXtqj.mjs → simple-textarea-field-BDqw8ewE.mjs} +2 -2
- package/dist/{simple-textarea-field-BiuHXtqj.mjs.map → simple-textarea-field-BDqw8ewE.mjs.map} +1 -1
- package/dist/{switch-field-BVgtm94W.mjs → switch-field-BDVIJ21m.mjs} +2 -2
- package/dist/{switch-field-BVgtm94W.mjs.map → switch-field-BDVIJ21m.mjs.map} +1 -1
- package/dist/{switch-field-DPB3JDT3.cjs → switch-field-D6CCxaEX.cjs} +2 -2
- package/dist/{switch-field-DPB3JDT3.cjs.map → switch-field-D6CCxaEX.cjs.map} +1 -1
- package/dist/{tanstack-form-CKAWexet.mjs → tanstack-form-AGwPfwiM.mjs} +2 -2
- package/dist/{tanstack-form-CKAWexet.mjs.map → tanstack-form-AGwPfwiM.mjs.map} +1 -1
- package/dist/{tanstack-form-CX3lC3mC.cjs → tanstack-form-Bae0TOEr.cjs} +2 -2
- package/dist/{tanstack-form-CX3lC3mC.cjs.map → tanstack-form-Bae0TOEr.cjs.map} +1 -1
- package/dist/text-editor-BQtIXOpM.mjs +2 -0
- package/dist/text-editor-BQtIXOpM.mjs.map +1 -0
- package/dist/text-editor-DJYQXXtP.cjs +2 -0
- package/dist/text-editor-DJYQXXtP.cjs.map +1 -0
- package/dist/{text-editor-field-qa3t2GBg.mjs → text-editor-field-C2KDtfZV.mjs} +2 -2
- package/dist/{text-editor-field-qa3t2GBg.mjs.map → text-editor-field-C2KDtfZV.mjs.map} +1 -1
- package/dist/{text-editor-field-Ddvgdo_p.cjs → text-editor-field-DF8lkOc_.cjs} +2 -2
- package/dist/{text-editor-field-Ddvgdo_p.cjs.map → text-editor-field-DF8lkOc_.cjs.map} +1 -1
- package/dist/{text-field-Cwu0xuXt.cjs → text-field-B1n5Xd-k.cjs} +2 -2
- package/dist/{text-field-Cwu0xuXt.cjs.map → text-field-B1n5Xd-k.cjs.map} +1 -1
- package/dist/{text-field-CBUTZKGH.mjs → text-field-BJciq-S8.mjs} +2 -2
- package/dist/{text-field-CBUTZKGH.mjs.map → text-field-BJciq-S8.mjs.map} +1 -1
- package/dist/{textarea-field-Ctj5o5my.mjs → textarea-field-BjdX2Qjt.mjs} +2 -2
- package/dist/{textarea-field-Ctj5o5my.mjs.map → textarea-field-BjdX2Qjt.mjs.map} +1 -1
- package/dist/{textarea-field-jOqHJcAL.cjs → textarea-field-Bm7bsyjB.cjs} +2 -2
- package/dist/{textarea-field-jOqHJcAL.cjs.map → textarea-field-Bm7bsyjB.cjs.map} +1 -1
- package/dist/{toggle-Bh4EazxT.d.mts → toggle-Bk5Lvs5n.d.cts} +2 -2
- package/dist/{toggle-Bh4EazxT.d.cts → toggle-Bk5Lvs5n.d.mts} +2 -2
- package/dist/{toggle-group-BpqkL1ds.d.cts → toggle-group-7ZP2e-K1.d.mts} +2 -2
- package/dist/{toggle-group-DzNE38v5.d.mts → toggle-group-B0pu4YV-.d.cts} +2 -2
- package/dist/ui/button.d.cts +1 -1
- package/dist/ui/button.d.mts +1 -1
- package/dist/ui/calendar.d.cts +1 -1
- package/dist/ui/calendar.d.mts +1 -1
- package/dist/ui/carousel.d.cts +1 -1
- package/dist/ui/carousel.d.mts +1 -1
- package/dist/ui/item.d.cts +1 -1
- package/dist/ui/item.d.mts +1 -1
- package/dist/ui/pagination.d.cts +1 -1
- package/dist/ui/pagination.d.mts +1 -1
- package/dist/ui/status.d.cts +1 -1
- package/dist/ui/status.d.mts +1 -1
- package/dist/ui/toggle-group.d.cts +1 -1
- package/dist/ui/toggle-group.d.mts +1 -1
- package/dist/ui/toggle.d.cts +1 -1
- package/dist/ui/toggle.d.mts +1 -1
- package/package.json +1 -1
- package/dist/text-editor-BYE2-G5K.mjs +0 -2
- package/dist/text-editor-BYE2-G5K.mjs.map +0 -1
- package/dist/text-editor-CfQk5dIx.cjs +0 -2
- package/dist/text-editor-CfQk5dIx.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-CfQk5dIx.cjs","names":["Popover","PopoverTrigger","Link2","PopoverContent","Link2Off","Undo","Redo","DropdownMenu","DropdownMenuTrigger","ChevronDown","DropdownMenuContent","DropdownMenuItem","Bold","Italic","Underline","Strikethrough","Code","List","ListOrdered","ListChecks","Quote","Code2","Minus","AlignLeft","AlignCenter","AlignRight","AlignJustify","Popover","PopoverTrigger","Palette","PopoverContent","Highlighter","StarterKit","Underline","Placeholder","TextAlign","ListKeymap","Suspense","Bold","Italic","UnderlineIcon","Strikethrough","EditorContent"],"sources":["../packages/components/features/text-editor/toolbar-primitives.tsx","../packages/components/features/text-editor/link-dialog.tsx","../packages/components/features/text-editor/text-editor.variants.ts","../packages/components/features/text-editor/toolbar.tsx","../packages/components/features/text-editor/text-editor.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\ninterface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean;\n}\n\nfunction ToolbarButton({ isActive, className, children, ...props }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"toolbar-button\"\n data-active={isActive || undefined}\n className={cn(\n 'inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n isActive && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nfunction ToolbarDivider() {\n return <div data-slot=\"toolbar-divider\" className=\"mx-0.5 h-5 w-px shrink-0 bg-border\" />;\n}\n\nexport { ToolbarButton, ToolbarDivider };\n// biome-ignore lint/style/useComponentExportOnlyModules: type export needed by sibling feature files\nexport type { ToolbarButtonProps };\n","'use client';\n\nimport { useCallback, useState } from 'react';\n\nimport { Link2, Link2Off } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\n\nimport { type Editor, useEditorState } from '@tiptap/react';\nimport { ToolbarButton } from './toolbar-primitives';\n\nexport interface LinkDialogProps {\n editor: Editor;\n}\n\nfunction LinkDialog({ editor }: LinkDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [url, setUrl] = useState('');\n\n const isLinkActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('link'),\n });\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n const existingHref = editor.getAttributes('link').href ?? '';\n setUrl(existingHref);\n }\n setIsOpen(open);\n },\n [editor]\n );\n\n const handleApply = useCallback(() => {\n const trimmed = url.trim();\n if (!trimmed) return;\n editor.chain().focus().setLink({ href: trimmed, target: '_blank' }).run();\n setIsOpen(false);\n }, [editor, url]);\n\n const handleRemove = useCallback(() => {\n editor.chain().focus().unsetLink().run();\n setIsOpen(false);\n }, [editor]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleApply();\n }\n if (e.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n return (\n <Popover open={isOpen} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <ToolbarButton isActive={isLinkActive} title=\"Link (Ctrl+K)\" data-slot=\"toolbar-link-button\">\n <Link2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent data-slot=\"link-dialog\" sideOffset={6} align=\"start\" className=\"w-72 p-3\">\n <p className=\"mb-2 font-medium text-text-positive-strong text-xs\">{isLinkActive ? 'Edit Link' : 'Insert Link'}</p>\n <div className=\"flex gap-1.5\">\n <input\n type=\"url\"\n placeholder=\"https://example.com\"\n value={url}\n onChange={e => setUrl(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n className={cn(\n 'flex-1 rounded border border-border bg-transparent px-2.5 py-1.5 text-sm text-text-positive',\n 'outline-none placeholder:text-text-positive-muted',\n 'focus:border-primary focus:ring-1 focus:ring-primary/30'\n )}\n />\n <button\n type=\"button\"\n onClick={handleApply}\n disabled={!url.trim()}\n className={cn(\n 'rounded bg-primary px-2.5 py-1.5 font-medium text-text-negative text-xs',\n 'transition-colors hover:bg-primary-strong',\n 'disabled:pointer-events-none disabled:opacity-50'\n )}\n >\n Apply\n </button>\n </div>\n {isLinkActive && (\n <button type=\"button\" onClick={handleRemove} className=\"mt-2 flex items-center gap-1 text-danger-strong text-xs hover:underline\">\n <Link2Off className=\"h-3 w-3\" />\n Remove link\n </button>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { LinkDialog };\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const textEditorVariants = cva(['flex flex-col overflow-hidden rounded-md'], {\n variants: {\n variant: {\n outline: 'border border-border bg-background shadow-xs',\n ghost: 'border-0',\n },\n size: {\n sm: 'text-xs [&_.ProseMirror]:min-h-24 [&_.ProseMirror]:px-2.5 [&_.ProseMirror]:py-1.5',\n md: '',\n lg: 'text-base [&_.ProseMirror]:min-h-56 [&_.ProseMirror]:px-4 [&_.ProseMirror]:py-3',\n },\n },\n defaultVariants: {\n variant: 'outline',\n size: 'md',\n },\n});\n\nexport type TextEditorVariantProps = VariantProps<typeof textEditorVariants>;\n","'use client';\n\nimport {\n AlignCenter,\n AlignJustify,\n AlignLeft,\n AlignRight,\n Bold,\n ChevronDown,\n Code,\n Code2,\n Highlighter,\n Italic,\n List,\n ListChecks,\n ListOrdered,\n Minus,\n Palette,\n Quote,\n Redo,\n Strikethrough,\n Underline,\n Undo,\n} from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\n\nimport { type Editor, useEditorState } from '@tiptap/react';\nimport { LinkDialog } from './link-dialog';\nimport { ToolbarButton, ToolbarDivider } from './toolbar-primitives';\n\nconst HIGHLIGHT_COLORS = [\n { label: 'Yellow', value: '#fde047' },\n { label: 'Green', value: '#86efac' },\n { label: 'Blue', value: '#93c5fd' },\n { label: 'Pink', value: '#f9a8d4' },\n { label: 'Orange', value: '#fdba74' },\n { label: 'Purple', value: '#c4b5fd' },\n { label: 'Red', value: '#fca5a5' },\n { label: 'Cyan', value: '#67e8f9' },\n { label: 'Lime', value: '#bef264' },\n { label: 'Gray', value: '#d1d5db' },\n];\n\nconst TEXT_COLORS = [\n { label: 'Default', value: '' },\n { label: 'Red', value: '#ef4444' },\n { label: 'Orange', value: '#f97316' },\n { label: 'Yellow', value: '#eab308' },\n { label: 'Green', value: '#22c55e' },\n { label: 'Blue', value: '#3b82f6' },\n { label: 'Purple', value: '#a855f7' },\n { label: 'Pink', value: '#ec4899' },\n { label: 'Gray', value: '#6b7280' },\n { label: 'Black', value: '#000000' },\n];\n\nexport interface TextEditorToolbarProps {\n editor: Editor;\n className?: string;\n enableLink?: boolean;\n enableTaskList?: boolean;\n enableHighlight?: boolean;\n enableColor?: boolean;\n}\n\nfunction TextEditorToolbar({ editor, className, enableLink, enableTaskList, enableHighlight, enableColor }: TextEditorToolbarProps) {\n const isHeading1Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 1 }),\n });\n const isHeading2Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 2 }),\n });\n const isHeading3Active = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('heading', { level: 3 }),\n });\n const isBoldActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bold'),\n });\n const isItalicActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('italic'),\n });\n const isUnderlineActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('underline'),\n });\n const isStrikeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('strike'),\n });\n const isCodeActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('code'),\n });\n const isBulletListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('bulletList'),\n });\n const isOrderedListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('orderedList'),\n });\n const isTaskListActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('taskList'),\n });\n const isBlockquoteActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('blockquote'),\n });\n const isCodeBlockActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive('codeBlock'),\n });\n const isAlignLeftActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'left' }),\n });\n const isAlignCenterActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'center' }),\n });\n const isAlignRightActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'right' }),\n });\n const isAlignJustifyActive = useEditorState({\n editor,\n selector: ctx => ctx.editor.isActive({ textAlign: 'justify' }),\n });\n\n const headingLabel = isHeading1Active ? 'H1' : isHeading2Active ? 'H2' : isHeading3Active ? 'H3' : 'P';\n\n return (\n <div data-slot=\"text-editor-toolbar\" className={cn('flex flex-wrap items-center gap-0.5 border-border border-b bg-muted-muted/50 p-1.5', className)}>\n {/* History */}\n <ToolbarButton onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo (Ctrl+Z)\">\n <Undo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo (Ctrl+Y)\">\n <Redo className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Heading dropdown */}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"toolbar-heading-trigger\"\n className={cn(\n 'inline-flex h-7 items-center gap-1 rounded px-1.5 font-medium text-xs transition-colors',\n 'hover:bg-muted-muted hover:text-text-positive-strong',\n 'disabled:pointer-events-none disabled:opacity-40',\n (isHeading1Active || isHeading2Active || isHeading3Active) && 'bg-primary-muted text-primary hover:bg-primary-muted/80 hover:text-primary'\n )}\n >\n <span className=\"w-5 text-center\">{headingLabel}</span>\n <ChevronDown className=\"h-3 w-3 opacity-60\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"min-w-32\">\n <DropdownMenuItem onClick={() => editor.chain().focus().setParagraph().run()}>\n <span className=\"text-sm\">Paragraph</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}>\n <span className=\"font-bold text-lg\">Heading 1</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}>\n <span className=\"font-semibold text-base\">Heading 2</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}>\n <span className=\"font-semibold text-sm\">Heading 3</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={isBoldActive} title=\"Bold (Ctrl+B)\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={isItalicActive} title=\"Italic (Ctrl+I)\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={isUnderlineActive} title=\"Underline (Ctrl+U)\">\n <Underline className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={isStrikeActive} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCode().run()} isActive={isCodeActive} title=\"Inline Code\">\n <Code className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={isBulletListActive} title=\"Bullet List\">\n <List className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={isOrderedListActive} title=\"Ordered List\">\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n {enableTaskList && (\n <ToolbarButton onClick={() => editor.chain().focus().toggleTaskList().run()} isActive={isTaskListActive} title=\"Task List\">\n <ListChecks className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n )}\n\n <ToolbarDivider />\n\n {/* Blocks */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={isBlockquoteActive} title=\"Blockquote\">\n <Quote className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleCodeBlock().run()} isActive={isCodeBlockActive} title=\"Code Block\">\n <Code2 className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal Rule\">\n <Minus className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n {/* Text alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={isAlignLeftActive} title=\"Align Left\">\n <AlignLeft className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={isAlignCenterActive} title=\"Align Center\">\n <AlignCenter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={isAlignRightActive} title=\"Align Right\">\n <AlignRight className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('justify').run()} isActive={isAlignJustifyActive} title=\"Align Justify\">\n <AlignJustify className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n\n {/* Link */}\n {enableLink && (\n <>\n <ToolbarDivider />\n <LinkDialog editor={editor} />\n </>\n )}\n\n {/* Color & Highlight */}\n {(enableColor || enableHighlight) && (\n <>\n <ToolbarDivider />\n {enableColor && (\n <Popover>\n <PopoverTrigger asChild>\n <ToolbarButton title=\"Text Color\">\n <Palette className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-44 p-2\">\n <p className=\"mb-1.5 font-medium text-text-positive-weak text-xs\">Text Color</p>\n <div className=\"grid grid-cols-5 gap-1\">\n {TEXT_COLORS.map(color => (\n <button\n key={color.label}\n type=\"button\"\n title={color.label}\n onClick={() => {\n if (!color.value) {\n editor.chain().focus().unsetColor().run();\n } else {\n editor.chain().focus().setColor(color.value).run();\n }\n }}\n className={cn(\n 'h-6 w-6 rounded border border-border transition-transform hover:scale-110',\n !color.value && 'bg-background text-[10px] text-text-positive leading-none'\n )}\n style={color.value ? { backgroundColor: color.value } : undefined}\n >\n {!color.value && '∅'}\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n )}\n {enableHighlight && (\n <Popover>\n <PopoverTrigger asChild>\n <ToolbarButton title=\"Highlight\">\n <Highlighter className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-44 p-2\">\n <p className=\"mb-1.5 font-medium text-text-positive-weak text-xs\">Highlight</p>\n <div className=\"grid grid-cols-5 gap-1\">\n {HIGHLIGHT_COLORS.map(color => (\n <button\n key={color.label}\n type=\"button\"\n title={color.label}\n onClick={() => editor.chain().focus().toggleHighlight({ color: color.value }).run()}\n className=\"h-6 w-6 rounded border border-border transition-transform hover:scale-110\"\n style={{ backgroundColor: color.value }}\n />\n ))}\n </div>\n <button\n type=\"button\"\n onClick={() => editor.chain().focus().unsetHighlight().run()}\n className=\"mt-1.5 w-full rounded border border-border py-0.5 text-center text-text-positive-weak text-xs hover:bg-muted-muted\"\n >\n Clear highlight\n </button>\n </PopoverContent>\n </Popover>\n )}\n </>\n )}\n </div>\n );\n}\n\nexport { TextEditorToolbar };\n","'use client';\n\nimport { lazy, Suspense, use, useEffect, useMemo } from 'react';\n\nimport { Bold, Italic, Strikethrough, Underline as UnderlineIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { ListKeymap } from '@tiptap/extension-list-keymap';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport { type AnyExtension, EditorContent, useEditor, useEditorState } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { LinkDialog } from './link-dialog';\nimport { type TextEditorVariantProps, textEditorVariants } from './text-editor.variants';\nimport { TextEditorToolbar } from './toolbar';\nimport { ToolbarButton, ToolbarDivider } from './toolbar-primitives';\n\n/**\n * `Link`, `TaskList`/`TaskItem`, `Highlight`, `Color`/`TextStyle`, and `CharacterCount` are only\n * ever added to the editor's extension list when their matching feature flag is on — dynamically\n * importing them (instead of the previous unconditional top-level imports) keeps every one of\n * these ProseMirror-backed packages out of a consumer's bundle unless that consumer actually\n * enables the flag. Cached by module specifier so multiple editors / re-renders share one fetch.\n */\nconst moduleCache = new Map<string, Promise<unknown>>();\nfunction loadModule<T>(specifier: string, loader: () => Promise<T>): Promise<T> {\n let cached = moduleCache.get(specifier) as Promise<T> | undefined;\n if (!cached) {\n cached = loader();\n moduleCache.set(specifier, cached);\n }\n return cached;\n}\n\ntype OptionalExtensionFlags = {\n needsTextStyle: boolean;\n enableLink: boolean;\n enableTaskList: boolean;\n enableHighlight: boolean;\n enableColor: boolean;\n needsCharCount: boolean;\n maxLength?: number;\n};\n\nasync function loadOptionalExtensions(flags: OptionalExtensionFlags): Promise<AnyExtension[]> {\n const tasks: Promise<AnyExtension | AnyExtension[]>[] = [];\n\n if (flags.needsTextStyle) {\n tasks.push(loadModule('@tiptap/extension-text-style', () => import('@tiptap/extension-text-style')).then(m => m.TextStyle));\n }\n if (flags.enableLink) {\n tasks.push(\n loadModule('@tiptap/extension-link', () => import('@tiptap/extension-link')).then(m =>\n m.Link.configure({ openOnClick: false, linkOnPaste: true, defaultProtocol: 'https' })\n )\n );\n }\n if (flags.enableTaskList) {\n tasks.push(\n Promise.all([\n loadModule('@tiptap/extension-task-list', () => import('@tiptap/extension-task-list')),\n loadModule('@tiptap/extension-task-item', () => import('@tiptap/extension-task-item')),\n ]).then(([{ TaskList }, { TaskItem }]) => [TaskList, TaskItem.configure({ nested: true })])\n );\n }\n if (flags.enableHighlight) {\n tasks.push(loadModule('@tiptap/extension-highlight', () => import('@tiptap/extension-highlight')).then(m => m.Highlight.configure({ multicolor: true })));\n }\n if (flags.enableColor) {\n tasks.push(loadModule('@tiptap/extension-text-style', () => import('@tiptap/extension-text-style')).then(m => m.Color));\n }\n if (flags.needsCharCount) {\n tasks.push(\n loadModule('@tiptap/extension-character-count', () => import('@tiptap/extension-character-count')).then(m =>\n m.CharacterCount.configure({ limit: flags.maxLength })\n )\n );\n }\n\n return (await Promise.all(tasks)).flat();\n}\n\nconst BubbleMenu = lazy(() => import('@tiptap/react/menus').then(m => ({ default: m.BubbleMenu })));\n\nexport interface TextEditorProps extends TextEditorVariantProps {\n value?: string;\n defaultValue?: string;\n onChange?: (html: string) => void;\n placeholder?: string;\n readOnly?: boolean;\n showToolbar?: boolean;\n className?: string;\n toolbarClassName?: string;\n editorClassName?: string;\n // Character count\n maxLength?: number;\n showCharacterCount?: boolean;\n onCharacterCount?: (stats: { characters: number; words: number }) => void;\n // Feature flags\n enableLink?: boolean;\n enableBubbleMenu?: boolean;\n enableTaskList?: boolean;\n enableHighlight?: boolean;\n enableColor?: boolean;\n}\n\ntype TextEditorEngineProps = TextEditorProps & {\n needsCharCount: boolean;\n optionalExtensionsPromise: Promise<AnyExtension[]>;\n};\n\nfunction TextEditorEngine({\n value,\n defaultValue,\n onChange,\n placeholder = 'Start writing...',\n readOnly = false,\n showToolbar = true,\n variant,\n size,\n className,\n toolbarClassName,\n editorClassName,\n maxLength,\n showCharacterCount,\n onCharacterCount,\n enableLink,\n enableBubbleMenu,\n enableTaskList,\n enableHighlight,\n enableColor,\n needsCharCount,\n optionalExtensionsPromise,\n}: TextEditorEngineProps) {\n const optionalExtensions = use(optionalExtensionsPromise);\n\n const extensions = useMemo(\n () => [\n StarterKit,\n Underline,\n Placeholder.configure({ placeholder }),\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n ListKeymap,\n ...optionalExtensions,\n ],\n [placeholder, optionalExtensions]\n );\n\n const editor = useEditor({\n extensions,\n content: value ?? defaultValue,\n editable: !readOnly,\n onUpdate: ({ editor: e }) => {\n onChange?.(e.getHTML());\n if (onCharacterCount) {\n const storage = e.storage.characterCount;\n onCharacterCount({ characters: storage.characters(), words: storage.words() });\n }\n },\n });\n\n useEffect(() => {\n if (!editor || value === undefined) return;\n if (editor.getHTML() === value) return;\n editor.commands.setContent(value);\n }, [editor, value]);\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n const charCount = useEditorState({\n editor,\n selector: ctx => {\n const storage = ctx.editor?.storage?.characterCount;\n return storage ? (storage.characters() as number) : 0;\n },\n });\n\n const wordCount = useEditorState({\n editor,\n selector: ctx => {\n const storage = ctx.editor?.storage?.characterCount;\n return storage ? (storage.words() as number) : 0;\n },\n });\n\n const showCharCount = showCharacterCount || maxLength !== undefined;\n const isNearLimit = maxLength !== undefined && charCount > maxLength * 0.9;\n\n return (\n <div data-slot=\"text-editor\" className={cn('lunas-text-editor', textEditorVariants({ variant, size }), className)}>\n {showToolbar && !readOnly && editor && (\n <TextEditorToolbar\n editor={editor}\n className={toolbarClassName}\n enableLink={enableLink}\n enableTaskList={enableTaskList}\n enableHighlight={enableHighlight}\n enableColor={enableColor}\n />\n )}\n\n {enableBubbleMenu && !readOnly && editor && (\n <Suspense fallback={null}>\n <BubbleMenu\n editor={editor}\n options={{ placement: 'top' }}\n className={cn('flex items-center gap-0.5 rounded-md border border-border bg-popover p-1 shadow-dropdown')}\n >\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={editor.isActive('bold')} title=\"Bold (Ctrl+B)\">\n <Bold className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={editor.isActive('italic')} title=\"Italic (Ctrl+I)\">\n <Italic className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={editor.isActive('underline')} title=\"Underline (Ctrl+U)\">\n <UnderlineIcon className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={editor.isActive('strike')} title=\"Strikethrough\">\n <Strikethrough className=\"h-3.5 w-3.5\" />\n </ToolbarButton>\n {enableLink && (\n <>\n <ToolbarDivider />\n <LinkDialog editor={editor} />\n </>\n )}\n </BubbleMenu>\n </Suspense>\n )}\n\n <EditorContent editor={editor} data-slot=\"text-editor-content\" className={cn('flex-1 bg-white text-sm text-text-positive', editorClassName)} />\n\n {showCharCount && needsCharCount && (\n <div\n data-slot=\"text-editor-footer\"\n className=\"flex items-center justify-between border-border border-t bg-muted-muted/30 px-3 py-1 text-text-positive-weak text-xs\"\n >\n <span>{wordCount} words</span>\n <span data-warning={isNearLimit || undefined} className=\"data-warning:text-warning-strong\">\n {charCount}\n {maxLength ? ` / ${maxLength}` : ''} characters\n </span>\n </div>\n )}\n </div>\n );\n}\n\nfunction TextEditor(props: TextEditorProps) {\n const { maxLength, showCharacterCount, onCharacterCount, enableColor, enableHighlight, enableLink, enableTaskList } = props;\n\n const needsCharCount = maxLength !== undefined || !!showCharacterCount || onCharacterCount !== undefined;\n const needsTextStyle = !!enableColor || !!enableHighlight;\n\n const optionalExtensionsPromise = useMemo(\n () =>\n loadOptionalExtensions({\n needsTextStyle,\n enableLink: !!enableLink,\n enableTaskList: !!enableTaskList,\n enableHighlight: !!enableHighlight,\n enableColor: !!enableColor,\n needsCharCount,\n maxLength,\n }),\n [needsTextStyle, enableLink, enableTaskList, enableHighlight, enableColor, needsCharCount, maxLength]\n );\n\n return (\n <Suspense fallback={null}>\n <TextEditorEngine {...props} needsCharCount={needsCharCount} optionalExtensionsPromise={optionalExtensionsPromise} />\n </Suspense>\n );\n}\n\nexport { TextEditor };\n"],"mappings":"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"}
|