@gravity-ui/markdown-editor 15.14.2 → 15.16.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.
- package/build/cjs/bundle/config/dynamicModifiers.js +1 -1
- package/build/cjs/bundle/config/dynamicModifiers.js.map +1 -1
- package/build/cjs/bundle/toolbar/custom/ToolbarFilePopup.d.ts +1 -1
- package/build/cjs/bundle/toolbar/custom/ToolbarFilePopup.js +2 -2
- package/build/cjs/bundle/toolbar/custom/ToolbarFilePopup.js.map +1 -1
- package/build/cjs/bundle/toolbar/custom/ToolbarImagePopup.d.ts +1 -1
- package/build/cjs/bundle/toolbar/custom/ToolbarImagePopup.js +2 -2
- package/build/cjs/bundle/toolbar/custom/ToolbarImagePopup.js.map +1 -1
- package/build/cjs/core/SchemaDynamicModifier.d.ts +29 -0
- package/build/cjs/core/SchemaDynamicModifier.js +17 -1
- package/build/cjs/core/SchemaDynamicModifier.js.map +1 -1
- package/build/cjs/core/markdown/MarkdownParser.d.ts +69 -1
- package/build/cjs/core/markdown/MarkdownParser.js +54 -4
- package/build/cjs/core/markdown/MarkdownParser.js.map +1 -1
- package/build/cjs/core/markdown/MarkdownSerializerDynamicModifier.d.ts +40 -1
- package/build/cjs/core/markdown/MarkdownSerializerDynamicModifier.js +0 -1
- package/build/cjs/core/markdown/MarkdownSerializerDynamicModifier.js.map +1 -1
- package/build/cjs/core/types/dynamicModifiers.d.ts +28 -1
- package/build/cjs/core/types/dynamicModifiers.js.map +1 -1
- package/build/cjs/core/types/parser.d.ts +2 -0
- package/build/cjs/core/types/parser.js.map +1 -1
- package/build/cjs/extensions/markdown/Link/paste-plugin.js +8 -2
- package/build/cjs/extensions/markdown/Link/paste-plugin.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js +2 -1
- package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/YfmTableSpecs/index.d.ts +2 -1
- package/build/cjs/extensions/yfm/YfmTable/YfmTableSpecs/index.js +12 -1
- package/build/cjs/extensions/yfm/YfmTable/YfmTableSpecs/index.js.map +1 -1
- package/build/cjs/forms/FileForm.d.ts +1 -0
- package/build/cjs/forms/FileForm.js +2 -2
- package/build/cjs/forms/FileForm.js.map +1 -1
- package/build/cjs/forms/ImageForm.d.ts +1 -0
- package/build/cjs/forms/ImageForm.js +2 -2
- package/build/cjs/forms/ImageForm.js.map +1 -1
- package/build/cjs/forms/TextInput.js +1 -1
- package/build/cjs/forms/TextInput.js.map +1 -1
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/esm/bundle/config/dynamicModifiers.js +1 -1
- package/build/esm/bundle/config/dynamicModifiers.js.map +1 -1
- package/build/esm/bundle/toolbar/custom/ToolbarFilePopup.d.ts +1 -1
- package/build/esm/bundle/toolbar/custom/ToolbarFilePopup.js +2 -2
- package/build/esm/bundle/toolbar/custom/ToolbarFilePopup.js.map +1 -1
- package/build/esm/bundle/toolbar/custom/ToolbarImagePopup.d.ts +1 -1
- package/build/esm/bundle/toolbar/custom/ToolbarImagePopup.js +2 -2
- package/build/esm/bundle/toolbar/custom/ToolbarImagePopup.js.map +1 -1
- package/build/esm/core/SchemaDynamicModifier.d.ts +29 -0
- package/build/esm/core/SchemaDynamicModifier.js +17 -1
- package/build/esm/core/SchemaDynamicModifier.js.map +1 -1
- package/build/esm/core/markdown/MarkdownParser.d.ts +69 -1
- package/build/esm/core/markdown/MarkdownParser.js +54 -4
- package/build/esm/core/markdown/MarkdownParser.js.map +1 -1
- package/build/esm/core/markdown/MarkdownSerializerDynamicModifier.d.ts +40 -1
- package/build/esm/core/markdown/MarkdownSerializerDynamicModifier.js +0 -1
- package/build/esm/core/markdown/MarkdownSerializerDynamicModifier.js.map +1 -1
- package/build/esm/core/types/dynamicModifiers.d.ts +28 -1
- package/build/esm/core/types/dynamicModifiers.js.map +1 -1
- package/build/esm/core/types/parser.d.ts +2 -0
- package/build/esm/core/types/parser.js.map +1 -1
- package/build/esm/extensions/markdown/Link/paste-plugin.js +8 -2
- package/build/esm/extensions/markdown/Link/paste-plugin.js.map +1 -1
- package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js +2 -1
- package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/YfmTableSpecs/index.d.ts +2 -1
- package/build/esm/extensions/yfm/YfmTable/YfmTableSpecs/index.js +12 -1
- package/build/esm/extensions/yfm/YfmTable/YfmTableSpecs/index.js.map +1 -1
- package/build/esm/forms/FileForm.d.ts +1 -0
- package/build/esm/forms/FileForm.js +2 -2
- package/build/esm/forms/FileForm.js.map +1 -1
- package/build/esm/forms/ImageForm.d.ts +1 -0
- package/build/esm/forms/ImageForm.js +2 -2
- package/build/esm/forms/ImageForm.js.map +1 -1
- package/build/esm/forms/TextInput.js +1 -1
- package/build/esm/forms/TextInput.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileForm.js","sourceRoot":"../../../src","sources":["forms/FileForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAC,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAsB,EAAE,EAAC,wBAAqB;AACrD,OAAO,EAAC,IAAI,EAAC,+BAAsB;AACnC,OAAO,EAAC,UAAU,EAAC,qBAAkB;AACrC,OAAO,EAAC,eAAe,EAAC,6BAA0B;AAElD,OAAO,EAAC,cAAc,EAAC,uBAAoB;AAC3C,OAAO,IAAI,wBAAe;AAC1B,OAAO,EAAC,YAAY,EAAC,8BAAqB;AAE1C,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;AAE1B,IAAW,KAGV;AAHD,WAAW,KAAK;IACZ,0BAAiB,CAAA;IACjB,sBAAa,CAAA;AACjB,CAAC,EAHU,KAAK,KAAL,KAAK,QAGf;
|
|
1
|
+
{"version":3,"file":"FileForm.js","sourceRoot":"../../../src","sources":["forms/FileForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useLayoutEffect, useState} from 'react';\n\nimport {TextInput, type TextInputProps} from '@gravity-ui/uikit';\nimport {Tabs} from '@gravity-ui/uikit/legacy';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {i18n} from '../i18n/forms';\nimport {isFunction} from '../lodash';\nimport {enterKeyHandler} from '../utils/handlers';\n\nimport {TextInputFixed} from './TextInput';\nimport Form from './base';\nimport {ButtonAttach} from './components';\n\nconst b = cn('file-form');\n\nconst enum TabId {\n Attach = 'attach',\n Link = 'link',\n}\n\nexport type FileFormSubmitParams = {\n src: string;\n name: string;\n};\n\nexport type FileFormProps = ClassNameProps & {\n autoFocus?: boolean;\n onSubmit(params: FileFormSubmitParams): void;\n onCancel(): void;\n onAttach?: (files: File[]) => void;\n loading?: boolean;\n uploadHint?: string;\n};\n\nexport const FileForm: React.FC<FileFormProps> = ({\n className,\n autoFocus,\n onCancel,\n onSubmit,\n onAttach,\n loading,\n uploadHint,\n}) => {\n const [tabId, setTabId] = useState<string>(() =>\n isFunction(onAttach) ? TabId.Attach : TabId.Link,\n );\n const [src, setSrc] = useState('');\n const [name, setName] = useState('');\n\n const shouldRenderTabs = isFunction(onAttach);\n useLayoutEffect(() => {\n if (!shouldRenderTabs && tabId === TabId.Attach) {\n setTabId(TabId.Link);\n }\n }, [shouldRenderTabs, tabId]);\n\n const handleSubmit = () => {\n onSubmit({\n src: src.trim(),\n name: name.trim(),\n });\n };\n const inputEnterKeyHandler: TextInputProps['onKeyDown'] = enterKeyHandler(handleSubmit);\n\n return (\n <Form.Form className={b(null, [className])}>\n {shouldRenderTabs && (\n <Tabs\n activeTab={tabId}\n onSelectTab={setTabId}\n items={[\n {id: TabId.Attach, title: i18n('common_tab_attach')},\n {id: TabId.Link, title: i18n('common_tab_link')},\n ]}\n />\n )}\n {tabId === TabId.Attach && onAttach && (\n <>\n <Form.Layout>{uploadHint ?? i18n('file_upload_help')}</Form.Layout>\n <Form.Footer onCancel={onCancel}>\n <ButtonAttach\n multiple\n buttonProps={{\n size: 's',\n view: 'action',\n loading,\n }}\n onUpdate={onAttach}\n >\n {i18n('common_action_upload')}\n </ButtonAttach>\n </Form.Footer>\n </>\n )}\n {tabId === TabId.Link && (\n <>\n <Form.Layout>\n <Form.Row\n label={i18n('common_link')}\n help={i18n('file_link_help')}\n control={\n <TextInputFixed\n size=\"s\"\n view=\"normal\"\n value={src}\n onUpdate={setSrc}\n placeholder=\"https://\"\n autoFocus={autoFocus}\n className={b('input', {type: 'link'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('file_name')}\n control={\n <TextInput\n size=\"s\"\n view=\"normal\"\n value={name}\n onUpdate={setName}\n className={b('input', {type: 'name'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n </Form.Layout>\n <Form.Footer onCancel={onCancel} onSubmit={handleSubmit} />\n </>\n )}\n </Form.Form>\n );\n};\n"]}
|
|
@@ -16,7 +16,7 @@ var ImageTabId;
|
|
|
16
16
|
ImageTabId["Attach"] = "attach";
|
|
17
17
|
ImageTabId["Link"] = "link";
|
|
18
18
|
})(ImageTabId || (ImageTabId = {}));
|
|
19
|
-
export const ImageForm = ({ className, autoFocus, onCancel, onSubmit, onAttach, loading, imageTitle: providedName, }) => {
|
|
19
|
+
export const ImageForm = ({ className, autoFocus, onCancel, onSubmit, onAttach, loading, imageTitle: providedName, uploadHint, }) => {
|
|
20
20
|
const [tabId, setTabId] = useState(() => isFunction(onAttach) ? ImageTabId.Attach : ImageTabId.Link);
|
|
21
21
|
const [url, setUrl] = useState('');
|
|
22
22
|
const [name, setName] = useState(providedName ?? '');
|
|
@@ -45,6 +45,6 @@ export const ImageForm = ({ className, autoFocus, onCancel, onSubmit, onAttach,
|
|
|
45
45
|
return (_jsxs(Form.Form, { className: b(null, [className]), children: [shouldRenderTabs && (_jsx(Tabs, { activeTab: tabId, onSelectTab: setTabId, items: [
|
|
46
46
|
{ id: ImageTabId.Attach, title: i18n('common_tab_attach') },
|
|
47
47
|
{ id: ImageTabId.Link, title: i18n('common_tab_link') },
|
|
48
|
-
] })), tabId === ImageTabId.Attach && onAttach && (_jsxs(_Fragment, { children: [_jsx(Form.Layout, { children: i18n('image_upload_help') }), _jsx(Form.Footer, { onCancel: onCancel, children: _jsx(ButtonAttach, { multiple: true, accept: "image/*", onUpdate: onAttach, buttonProps: { size: 's', view: 'action', loading }, children: i18n('common_action_upload') }) })] })), tabId === ImageTabId.Link && (_jsxs(_Fragment, { children: [_jsxs(Form.Layout, { children: [_jsx(Form.Row, { label: i18n('common_link'), control: _jsx(TextInputFixed, { size: "s", view: "normal", value: url, onUpdate: setUrl, placeholder: "https://", autoFocus: autoFocus, className: b('input', { type: 'link' }), onKeyPress: inputEnterKeyHandler }) }), _jsx(Form.Row, { label: i18n('image_name'), control: _jsx(TextInput, { size: "s", view: "normal", value: name, onUpdate: setName, className: b('input', { type: 'name' }), onKeyPress: inputEnterKeyHandler }) }), _jsx(Form.Row, { label: i18n('image_alt'), help: i18n('image_alt_help'), control: _jsx(TextInput, { size: "s", view: "normal", value: alt, onUpdate: setAlt, className: b('input', { type: 'alt' }), onKeyPress: inputEnterKeyHandler }) }), _jsx(Form.Row, { label: i18n('common_sizes'), control: _jsxs("div", { className: b('size-controls'), children: [_jsx(NumberInput, { min: 0, size: "s", view: "normal", value: width, onUpdate: setWidth, placeholder: i18n('image_size_width'), className: b('input', { type: 'width' }), onKeyDown: inputEnterKeyHandler }), "x", _jsx(NumberInput, { min: 0, size: "s", view: "normal", value: height, onUpdate: setHeight, placeholder: i18n('image_size_height'), className: b('input', { type: 'height' }), onKeyDown: inputEnterKeyHandler })] }) })] }), _jsx(Form.Footer, { onCancel: onCancel, onSubmit: handleSubmit })] }))] }));
|
|
48
|
+
] })), tabId === ImageTabId.Attach && onAttach && (_jsxs(_Fragment, { children: [_jsx(Form.Layout, { children: uploadHint ?? i18n('image_upload_help') }), _jsx(Form.Footer, { onCancel: onCancel, children: _jsx(ButtonAttach, { multiple: true, accept: "image/*", onUpdate: onAttach, buttonProps: { size: 's', view: 'action', loading }, children: i18n('common_action_upload') }) })] })), tabId === ImageTabId.Link && (_jsxs(_Fragment, { children: [_jsxs(Form.Layout, { children: [_jsx(Form.Row, { label: i18n('common_link'), control: _jsx(TextInputFixed, { size: "s", view: "normal", value: url, onUpdate: setUrl, placeholder: "https://", autoFocus: autoFocus, className: b('input', { type: 'link' }), onKeyPress: inputEnterKeyHandler }) }), _jsx(Form.Row, { label: i18n('image_name'), control: _jsx(TextInput, { size: "s", view: "normal", value: name, onUpdate: setName, className: b('input', { type: 'name' }), onKeyPress: inputEnterKeyHandler }) }), _jsx(Form.Row, { label: i18n('image_alt'), help: i18n('image_alt_help'), control: _jsx(TextInput, { size: "s", view: "normal", value: alt, onUpdate: setAlt, className: b('input', { type: 'alt' }), onKeyPress: inputEnterKeyHandler }) }), _jsx(Form.Row, { label: i18n('common_sizes'), control: _jsxs("div", { className: b('size-controls'), children: [_jsx(NumberInput, { min: 0, size: "s", view: "normal", value: width, onUpdate: setWidth, placeholder: i18n('image_size_width'), className: b('input', { type: 'width' }), onKeyDown: inputEnterKeyHandler }), "x", _jsx(NumberInput, { min: 0, size: "s", view: "normal", value: height, onUpdate: setHeight, placeholder: i18n('image_size_height'), className: b('input', { type: 'height' }), onKeyDown: inputEnterKeyHandler })] }) })] }), _jsx(Form.Footer, { onCancel: onCancel, onSubmit: handleSubmit })] }))] }));
|
|
49
49
|
};
|
|
50
50
|
//# sourceMappingURL=ImageForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageForm.js","sourceRoot":"../../../src","sources":["forms/ImageForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useLayoutEffect, useState} from 'react';\n\nimport {TextInput, type TextInputProps} from '@gravity-ui/uikit';\nimport {Tabs} from '@gravity-ui/uikit/legacy';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {i18n} from '../i18n/forms';\nimport {isFunction} from '../lodash';\nimport {enterKeyHandler} from '../utils/handlers';\n\nimport {TextInputFixed} from './TextInput';\nimport Form from './base';\nimport {ButtonAttach, NumberInput} from './components';\n\nimport './ImageForm.scss';\n\nconst b = cn('image-form');\n\nconst enum ImageTabId {\n Attach = 'attach',\n Link = 'link',\n}\n\nexport type ImageFormSubmitParams = {\n url: string;\n name: string;\n alt: string;\n width?: number;\n height?: number;\n};\n\nexport type ImageFormProps = ClassNameProps & {\n autoFocus?: boolean;\n onSubmit(params: ImageFormSubmitParams): void;\n onCancel(): void;\n onAttach?: (files: File[]) => void;\n loading?: boolean;\n imageTitle?: string;\n};\n\nexport const ImageForm: React.FC<ImageFormProps> = ({\n className,\n autoFocus,\n onCancel,\n onSubmit,\n onAttach,\n loading,\n imageTitle: providedName,\n}) => {\n const [tabId, setTabId] = useState<string>(() =>\n isFunction(onAttach) ? ImageTabId.Attach : ImageTabId.Link,\n );\n const [url, setUrl] = useState('');\n const [name, setName] = useState(providedName ?? '');\n const [alt, setAlt] = useState('');\n const [width, setWidth] = useState<number | undefined>();\n const [height, setHeight] = useState<number | undefined>();\n\n const shouldRenderTabs = isFunction(onAttach);\n useLayoutEffect(() => {\n if (!shouldRenderTabs && tabId === ImageTabId.Attach) {\n setTabId(ImageTabId.Link);\n }\n }, [shouldRenderTabs, tabId]);\n\n const handleSubmit = () => {\n const data: ImageFormSubmitParams = {\n url: url.trim(),\n name: name.trim(),\n alt: alt.trim(),\n };\n if (typeof width === 'number' && width >= 0) data.width = width;\n if (typeof height === 'number' && height >= 0) data.height = height;\n onSubmit(data);\n };\n const inputEnterKeyHandler: TextInputProps['onKeyDown'] = enterKeyHandler(handleSubmit);\n\n return (\n <Form.Form className={b(null, [className])}>\n {shouldRenderTabs && (\n <Tabs\n activeTab={tabId}\n onSelectTab={setTabId}\n items={[\n {id: ImageTabId.Attach, title: i18n('common_tab_attach')},\n {id: ImageTabId.Link, title: i18n('common_tab_link')},\n ]}\n />\n )}\n {tabId === ImageTabId.Attach && onAttach && (\n <>\n <Form.Layout>{i18n('image_upload_help')}</Form.Layout>\n <Form.Footer onCancel={onCancel}>\n <ButtonAttach\n multiple\n accept=\"image/*\"\n onUpdate={onAttach}\n buttonProps={{size: 's', view: 'action', loading}}\n >\n {i18n('common_action_upload')}\n </ButtonAttach>\n </Form.Footer>\n </>\n )}\n {tabId === ImageTabId.Link && (\n <>\n <Form.Layout>\n <Form.Row\n label={i18n('common_link')}\n control={\n <TextInputFixed\n size=\"s\"\n view=\"normal\"\n value={url}\n onUpdate={setUrl}\n placeholder=\"https://\"\n autoFocus={autoFocus}\n className={b('input', {type: 'link'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('image_name')}\n control={\n <TextInput\n size=\"s\"\n view=\"normal\"\n value={name}\n onUpdate={setName}\n className={b('input', {type: 'name'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('image_alt')}\n help={i18n('image_alt_help')}\n control={\n <TextInput\n size=\"s\"\n view=\"normal\"\n value={alt}\n onUpdate={setAlt}\n className={b('input', {type: 'alt'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('common_sizes')}\n control={\n <div className={b('size-controls')}>\n <NumberInput\n min={0}\n size=\"s\"\n view=\"normal\"\n value={width}\n onUpdate={setWidth}\n placeholder={i18n('image_size_width')}\n className={b('input', {type: 'width'})}\n onKeyDown={inputEnterKeyHandler}\n />\n x\n <NumberInput\n min={0}\n size=\"s\"\n view=\"normal\"\n value={height}\n onUpdate={setHeight}\n placeholder={i18n('image_size_height')}\n className={b('input', {type: 'height'})}\n onKeyDown={inputEnterKeyHandler}\n />\n </div>\n }\n />\n </Form.Layout>\n <Form.Footer onCancel={onCancel} onSubmit={handleSubmit} />\n </>\n )}\n </Form.Form>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ImageForm.js","sourceRoot":"../../../src","sources":["forms/ImageForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useLayoutEffect, useState} from 'react';\n\nimport {TextInput, type TextInputProps} from '@gravity-ui/uikit';\nimport {Tabs} from '@gravity-ui/uikit/legacy';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {i18n} from '../i18n/forms';\nimport {isFunction} from '../lodash';\nimport {enterKeyHandler} from '../utils/handlers';\n\nimport {TextInputFixed} from './TextInput';\nimport Form from './base';\nimport {ButtonAttach, NumberInput} from './components';\n\nimport './ImageForm.scss';\n\nconst b = cn('image-form');\n\nconst enum ImageTabId {\n Attach = 'attach',\n Link = 'link',\n}\n\nexport type ImageFormSubmitParams = {\n url: string;\n name: string;\n alt: string;\n width?: number;\n height?: number;\n};\n\nexport type ImageFormProps = ClassNameProps & {\n autoFocus?: boolean;\n onSubmit(params: ImageFormSubmitParams): void;\n onCancel(): void;\n onAttach?: (files: File[]) => void;\n loading?: boolean;\n imageTitle?: string;\n uploadHint?: string;\n};\n\nexport const ImageForm: React.FC<ImageFormProps> = ({\n className,\n autoFocus,\n onCancel,\n onSubmit,\n onAttach,\n loading,\n imageTitle: providedName,\n uploadHint,\n}) => {\n const [tabId, setTabId] = useState<string>(() =>\n isFunction(onAttach) ? ImageTabId.Attach : ImageTabId.Link,\n );\n const [url, setUrl] = useState('');\n const [name, setName] = useState(providedName ?? '');\n const [alt, setAlt] = useState('');\n const [width, setWidth] = useState<number | undefined>();\n const [height, setHeight] = useState<number | undefined>();\n\n const shouldRenderTabs = isFunction(onAttach);\n useLayoutEffect(() => {\n if (!shouldRenderTabs && tabId === ImageTabId.Attach) {\n setTabId(ImageTabId.Link);\n }\n }, [shouldRenderTabs, tabId]);\n\n const handleSubmit = () => {\n const data: ImageFormSubmitParams = {\n url: url.trim(),\n name: name.trim(),\n alt: alt.trim(),\n };\n if (typeof width === 'number' && width >= 0) data.width = width;\n if (typeof height === 'number' && height >= 0) data.height = height;\n onSubmit(data);\n };\n const inputEnterKeyHandler: TextInputProps['onKeyDown'] = enterKeyHandler(handleSubmit);\n\n return (\n <Form.Form className={b(null, [className])}>\n {shouldRenderTabs && (\n <Tabs\n activeTab={tabId}\n onSelectTab={setTabId}\n items={[\n {id: ImageTabId.Attach, title: i18n('common_tab_attach')},\n {id: ImageTabId.Link, title: i18n('common_tab_link')},\n ]}\n />\n )}\n {tabId === ImageTabId.Attach && onAttach && (\n <>\n <Form.Layout>{uploadHint ?? i18n('image_upload_help')}</Form.Layout>\n <Form.Footer onCancel={onCancel}>\n <ButtonAttach\n multiple\n accept=\"image/*\"\n onUpdate={onAttach}\n buttonProps={{size: 's', view: 'action', loading}}\n >\n {i18n('common_action_upload')}\n </ButtonAttach>\n </Form.Footer>\n </>\n )}\n {tabId === ImageTabId.Link && (\n <>\n <Form.Layout>\n <Form.Row\n label={i18n('common_link')}\n control={\n <TextInputFixed\n size=\"s\"\n view=\"normal\"\n value={url}\n onUpdate={setUrl}\n placeholder=\"https://\"\n autoFocus={autoFocus}\n className={b('input', {type: 'link'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('image_name')}\n control={\n <TextInput\n size=\"s\"\n view=\"normal\"\n value={name}\n onUpdate={setName}\n className={b('input', {type: 'name'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('image_alt')}\n help={i18n('image_alt_help')}\n control={\n <TextInput\n size=\"s\"\n view=\"normal\"\n value={alt}\n onUpdate={setAlt}\n className={b('input', {type: 'alt'})}\n onKeyPress={inputEnterKeyHandler}\n />\n }\n />\n <Form.Row\n label={i18n('common_sizes')}\n control={\n <div className={b('size-controls')}>\n <NumberInput\n min={0}\n size=\"s\"\n view=\"normal\"\n value={width}\n onUpdate={setWidth}\n placeholder={i18n('image_size_width')}\n className={b('input', {type: 'width'})}\n onKeyDown={inputEnterKeyHandler}\n />\n x\n <NumberInput\n min={0}\n size=\"s\"\n view=\"normal\"\n value={height}\n onUpdate={setHeight}\n placeholder={i18n('image_size_height')}\n className={b('input', {type: 'height'})}\n onKeyDown={inputEnterKeyHandler}\n />\n </div>\n }\n />\n </Form.Layout>\n <Form.Footer onCancel={onCancel} onSubmit={handleSubmit} />\n </>\n )}\n </Form.Form>\n );\n};\n"]}
|
|
@@ -30,5 +30,5 @@ export const TextAreaFixed = forwardRef((props, ref) => {
|
|
|
30
30
|
});
|
|
31
31
|
return _jsx(TextAreaUIKit, { ref: ref, ...props, controlRef: controlRef, autoFocus: false });
|
|
32
32
|
});
|
|
33
|
-
TextAreaFixed.displayName = '
|
|
33
|
+
TextAreaFixed.displayName = 'TextAreaFixed';
|
|
34
34
|
//# sourceMappingURL=TextInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.js","sourceRoot":"../../../src","sources":["forms/TextInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAE,MAAM,EAAC,MAAM,OAAO,CAAC;AAEzC,OAAO,EAEH,QAAQ,IAAI,aAAa,EAEzB,SAAS,IAAI,cAAc,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAExC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAkC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrF,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,UAAU,GAAI,KAAK,CAAC,UAAgD,IAAI,QAAQ,CAAC;IAEvF,aAAa,CAAC,GAAG,EAAE;QACf,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,EAAE;gBACZ,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,OAAO,KAAC,cAAc,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,GAAI,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAE9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAiC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAI,KAAK,CAAC,UAAmD,IAAI,QAAQ,CAAC;IAE1F,aAAa,CAAC,GAAG,EAAE;QACf,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,EAAE;gBACZ,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAC,aAAa,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,GAAI,CAAC;AAC5F,CAAC,CAAC,CAAC;AAEH,aAAa,CAAC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"TextInput.js","sourceRoot":"../../../src","sources":["forms/TextInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAE,MAAM,EAAC,MAAM,OAAO,CAAC;AAEzC,OAAO,EAEH,QAAQ,IAAI,aAAa,EAEzB,SAAS,IAAI,cAAc,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAExC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAkC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrF,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,UAAU,GAAI,KAAK,CAAC,UAAgD,IAAI,QAAQ,CAAC;IAEvF,aAAa,CAAC,GAAG,EAAE;QACf,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,EAAE;gBACZ,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,OAAO,KAAC,cAAc,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,GAAI,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAE9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAiC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAI,KAAK,CAAC,UAAmD,IAAI,QAAQ,CAAC;IAE1F,aAAa,CAAC,GAAG,EAAE;QACf,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,EAAE;gBACZ,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAC,aAAa,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,GAAI,CAAC;AAC5F,CAAC,CAAC,CAAC;AAEH,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC","sourcesContent":["import {forwardRef, useRef} from 'react';\n\nimport {\n type TextAreaProps,\n TextArea as TextAreaUIKit,\n type TextInputProps,\n TextInput as TextInputUIKit,\n} from '@gravity-ui/uikit';\nimport {useEffectOnce} from 'react-use';\n\n// TODO: remove after fix https://github.com/yandex-cloud/uikit/issues/133\nexport const TextInputFixed = forwardRef<HTMLSpanElement, TextInputProps>((props, ref) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const controlRef = (props.controlRef as React.RefObject<HTMLInputElement>) ?? inputRef;\n\n useEffectOnce(() => {\n if (props.autoFocus) {\n setTimeout(() => {\n controlRef.current?.focus();\n }, 30);\n }\n });\n\n // eslint-disable-next-line jsx-a11y/no-autofocus\n return <TextInputUIKit ref={ref} {...props} controlRef={controlRef} autoFocus={false} />;\n});\n\nTextInputFixed.displayName = 'TextInputFixed';\n\n// TODO: remove after fix https://github.com/yandex-cloud/uikit/issues/133\nexport const TextAreaFixed = forwardRef<HTMLSpanElement, TextAreaProps>((props, ref) => {\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const controlRef = (props.controlRef as React.RefObject<HTMLTextAreaElement>) ?? inputRef;\n\n useEffectOnce(() => {\n if (props.autoFocus) {\n setTimeout(() => {\n controlRef.current?.focus();\n }, 30);\n }\n });\n\n return <TextAreaUIKit ref={ref} {...props} controlRef={controlRef} autoFocus={false} />;\n});\n\nTextAreaFixed.displayName = 'TextAreaFixed';\n"]}
|
package/build/esm/version.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** During build process, the current version will be injected here */
|
|
2
|
-
export const VERSION = typeof '15.
|
|
2
|
+
export const VERSION = typeof '15.16.0' !== 'undefined' ? '15.16.0' : 'unknown';
|
|
3
3
|
//# sourceMappingURL=version.js.map
|
package/build/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.16.0' !== 'undefined' ? '15.16.0' : 'unknown';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/markdown-editor",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.16.0",
|
|
4
4
|
"description": "Markdown wysiwyg and markup editor",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
"@diplodoc/mermaid-extension": "1.2.1",
|
|
229
229
|
"@diplodoc/quote-link-extension": "0.1.3",
|
|
230
230
|
"@diplodoc/tabs-extension": "^3.5.1",
|
|
231
|
-
"@diplodoc/transform": "^4.
|
|
231
|
+
"@diplodoc/transform": "^4.58.0",
|
|
232
232
|
"@gravity-ui/components": "4.2.2",
|
|
233
233
|
"@gravity-ui/eslint-config": "3.3.0",
|
|
234
234
|
"@gravity-ui/gulp-utils": "1.0.3",
|