@ablogcms/media 3.2.28-beta.0 → 3.2.29
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/{chunk-5P6HFS6L.mjs → chunk-2FTUIE3I.mjs} +2 -2
- package/dist/{chunk-JJTHI4QP.mjs → chunk-J26FETK2.mjs} +13 -54
- package/dist/chunk-J26FETK2.mjs.map +1 -0
- package/dist/{chunk-32U7ADG2.mjs → chunk-MZAVCJIC.mjs} +3 -3
- package/dist/chunk-MZAVCJIC.mjs.map +1 -0
- package/dist/{chunk-KQNVYJOK.mjs → chunk-XLN3FIK4.mjs} +8 -5
- package/dist/{chunk-KQNVYJOK.mjs.map → chunk-XLN3FIK4.mjs.map} +1 -1
- package/dist/{chunk-LAZAMWG6.mjs → chunk-ZFNOFCCD.mjs} +3 -3
- package/dist/components/media-admin/media-admin.mjs +2 -2
- package/dist/components/media-droparea/media-droparea.d.ts +1 -1
- package/dist/components/media-droparea/media-droparea.mjs +4 -4
- package/dist/components/media-droparea/media-droparea.mjs.map +1 -1
- package/dist/components/media-edit-modal/media-edit-modal.d.ts +1 -1
- package/dist/components/media-insert/media-insert.mjs +3 -3
- package/dist/components/media-unit/media-unit.d.ts +1 -1
- package/dist/components/media-unit/media-unit.mjs +5 -5
- package/dist/components/media-update/media-update.mjs +2 -2
- package/dist/components/media-uploader/media-uploader.d.ts +1 -1
- package/dist/containers/media-admin.d.ts +1 -1
- package/dist/containers/media-insert.d.ts +2 -2
- package/dist/setup-media-unit.mjs +16 -9
- package/dist/setup-media-unit.mjs.map +1 -1
- package/dist/utils/index.d.ts +6 -0
- package/package.json +22 -19
- package/dist/chunk-32U7ADG2.mjs.map +0 -1
- package/dist/chunk-JJTHI4QP.mjs.map +0 -1
- package/dist/components/media-modal/pdf-previewer.d.ts +0 -8
- /package/dist/{chunk-5P6HFS6L.mjs.map → chunk-2FTUIE3I.mjs.map} +0 -0
- /package/dist/{chunk-LAZAMWG6.mjs.map → chunk-ZFNOFCCD.mjs.map} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MediaList,
|
|
3
3
|
MediaUploader
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XLN3FIK4.mjs";
|
|
5
5
|
import {
|
|
6
6
|
MediaModal,
|
|
7
7
|
actions_exports,
|
|
8
8
|
reducer_default,
|
|
9
9
|
rootSaga
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-J26FETK2.mjs";
|
|
11
11
|
import {
|
|
12
12
|
getMediaFillStore
|
|
13
13
|
} from "./chunk-3SYVRD3N.mjs";
|
|
@@ -228,4 +228,4 @@ var media_insert_default2 = MediaInsert;
|
|
|
228
228
|
export {
|
|
229
229
|
media_insert_default2 as media_insert_default
|
|
230
230
|
};
|
|
231
|
-
//# sourceMappingURL=chunk-
|
|
231
|
+
//# sourceMappingURL=chunk-ZFNOFCCD.mjs.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MediaList,
|
|
3
3
|
MediaUploader
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-XLN3FIK4.mjs";
|
|
5
5
|
import {
|
|
6
6
|
MediaModal,
|
|
7
7
|
actions_exports,
|
|
8
8
|
reducer_default,
|
|
9
9
|
rootSaga
|
|
10
|
-
} from "../../chunk-
|
|
10
|
+
} from "../../chunk-J26FETK2.mjs";
|
|
11
11
|
import {
|
|
12
12
|
getMediaFillStore
|
|
13
13
|
} from "../../chunk-3SYVRD3N.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from 'react';
|
|
2
|
-
import type { ExtendedFile } from '@ablogcms/
|
|
2
|
+
import type { ExtendedFile } from '@ablogcms/read-files';
|
|
3
3
|
import { MediaItem, MediaType } from '../../types/index.js';
|
|
4
4
|
type AcceptMediaType = Extract<MediaType, 'image' | 'file'> | 'all';
|
|
5
5
|
type MediaDropAreaProps = {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
media_update_default
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-2FTUIE3I.mjs";
|
|
4
4
|
import {
|
|
5
5
|
media_insert_default
|
|
6
|
-
} from "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
6
|
+
} from "../../chunk-ZFNOFCCD.mjs";
|
|
7
|
+
import "../../chunk-XLN3FIK4.mjs";
|
|
8
|
+
import "../../chunk-J26FETK2.mjs";
|
|
9
9
|
import "../../chunk-3SYVRD3N.mjs";
|
|
10
10
|
import "../../chunk-J5LGTIGS.mjs";
|
|
11
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/media-droparea/media-droparea.tsx"],"sourcesContent":["import { CSSProperties, Component } from 'react';\nimport type { ExtendedFile } from '@ablogcms/
|
|
1
|
+
{"version":3,"sources":["../../../src/components/media-droparea/media-droparea.tsx"],"sourcesContent":["import { CSSProperties, Component } from 'react';\nimport type { ExtendedFile } from '@ablogcms/read-files';\nimport { DropZone, DropZoneFileSelector, DropZoneText } from '@ablogcms/components/drop-zone';\nimport MediaInsert from '../media-insert/media-insert';\nimport MediaUpdate from '../media-update/media-update';\nimport { MediaItem, MediaType } from '../../types';\n\ntype AcceptMediaType = Extract<MediaType, 'image' | 'file'> | 'all';\ntype MediaDropAreaProps = {\n /**\n * メディアID\n */\n mid?: number;\n\n /**\n * サムネイル画像のパス\n */\n thumbnail: string;\n\n /**\n * キャプション\n */\n caption: string;\n\n /**\n * 幅\n */\n width: React.CSSProperties['width'];\n\n /**\n * 高さ\n */\n height: React.CSSProperties['height'];\n\n /**\n * メディアタイプ\n */\n mediaType?: MediaType;\n\n /**\n * 受け付けるメディアタイプ\n */\n accept?: AcceptMediaType;\n\n /**\n * メディアの変更時のコールバック\n */\n onChange: (media: MediaItem | null) => void;\n\n /**\n * エラー時のコールバック\n */\n onError: () => void;\n};\n\ninterface MediaDropAreaState {\n isInsertModalOpen: boolean;\n isUpdateModalOpen: boolean;\n files: File[];\n}\n\nexport default class MediaDropArea extends Component<MediaDropAreaProps, MediaDropAreaState> {\n static defaultProps = {\n accept: 'image',\n };\n\n constructor(props: MediaDropAreaProps) {\n super(props);\n this.state = {\n isInsertModalOpen: false,\n isUpdateModalOpen: false,\n files: [],\n };\n }\n\n onComplete = (files: ExtendedFile[]) => {\n this.setState({\n files: files.map((item) => item.file),\n isInsertModalOpen: true,\n });\n };\n\n uploadFile = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files instanceof FileList) {\n this.setState({\n files: Array.from(e.target.files),\n isInsertModalOpen: true,\n });\n }\n };\n\n onInsert = (items: MediaItem[]) => {\n const { accept = 'image' } = this.props;\n const [item] = items;\n const fileOrImage = item.media_type === 'image' || item.media_type === 'svg' ? 'image' : 'file';\n if (accept !== 'all' && accept !== fileOrImage) {\n this.props.onError();\n this.setState({\n isInsertModalOpen: false,\n });\n return;\n }\n this.setState({\n isInsertModalOpen: false,\n });\n this.props.onChange(item);\n };\n\n onClose = () => {\n this.setState({\n isInsertModalOpen: false,\n });\n };\n\n onUpdateModalClose = () => {\n this.setState({\n isUpdateModalOpen: false,\n });\n };\n\n onUpdateModalUpdate = (item: MediaItem) => {\n this.setState({\n isUpdateModalOpen: false,\n });\n this.props.onChange(item);\n };\n\n handleRemove = () => {\n this.props.onChange(null);\n };\n\n openEditModal = () => {\n this.setState({\n isUpdateModalOpen: true,\n });\n };\n\n render() {\n const { isInsertModalOpen, isUpdateModalOpen, files } = this.state;\n const { mediaType, accept = 'image', caption, width, height, mid, thumbnail } = this.props;\n\n const style: CSSProperties = {};\n\n if (width) {\n style.width = width;\n }\n if (height) {\n style.height = height;\n }\n\n return (\n <>\n <DropZone onComplete={this.onComplete}>\n <div>\n {mid === undefined && (\n <div className=\"acms-admin-media-unit-droparea\" style={style}>\n <DropZoneText>{ACMS.i18n('media.add_new_media')}</DropZoneText>\n <DropZoneFileSelector onChange={this.uploadFile} disabled={isInsertModalOpen} />\n <DropZoneText>{ACMS.i18n('media.drop_file')}</DropZoneText>\n </div>\n )}\n {mid != null && mid > 0 && (\n <div className=\"acms-admin-media-unit-preview-wrap\">\n <div className=\"acms-admin-media-unit-preview-overlay\" />\n <button\n type=\"button\"\n className=\"acms-admin-media-unit-preview-remove-btn\"\n onClick={this.handleRemove}\n aria-label={ACMS.i18n('media.clear_button_label')}\n />\n {(mediaType === 'image' || mediaType === 'svg') && (\n <img className=\"acms-admin-media-field-preview\" src={`${thumbnail}`} alt=\"\" />\n )}\n {mediaType === 'file' && (\n <div className=\"acms-admin-media-unit-file-icon-wrap\">\n <img className=\"acms-admin-media-unit-file-icon\" src={`${thumbnail}`} alt=\"\" />\n <p className=\"acms-admin-media-unit-file-caption\">{caption}</p>\n </div>\n )}\n <button\n type=\"button\"\n className=\"acms-admin-media-edit-btn acms-admin-media-unit-preview-edit-btn\"\n onClick={() => this.openEditModal()}\n >\n {ACMS.i18n('media.edit')}\n </button>\n </div>\n )}\n </div>\n </DropZone>\n <MediaInsert\n isOpen={isInsertModalOpen}\n onInsert={this.onInsert}\n files={files}\n onClose={this.onClose}\n tab=\"upload\"\n filetype={accept}\n />\n {mid != null && mid > 0 && (\n <MediaUpdate\n isOpen={isUpdateModalOpen}\n mid={mid}\n onClose={this.onUpdateModalClose}\n onUpdate={this.onUpdateModalUpdate}\n />\n )}\n </>\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import { Component } from 'react';
|
|
|
2
2
|
import { DragEndEvent, Modifier } from '@dnd-kit/core';
|
|
3
3
|
import { Transform } from '@dnd-kit/utilities';
|
|
4
4
|
import Cropper from 'cropperjs';
|
|
5
|
-
import { ExtendedFile } from '@ablogcms/
|
|
5
|
+
import { ExtendedFile } from '@ablogcms/read-files';
|
|
6
6
|
|
|
7
7
|
import { FocalPoint } from '../../types/index.js';
|
|
8
8
|
interface MediaEditModalProps {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
media_insert_default
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-ZFNOFCCD.mjs";
|
|
4
|
+
import "../../chunk-XLN3FIK4.mjs";
|
|
5
|
+
import "../../chunk-J26FETK2.mjs";
|
|
6
6
|
import "../../chunk-3SYVRD3N.mjs";
|
|
7
7
|
import "../../chunk-J5LGTIGS.mjs";
|
|
8
8
|
export {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MediaUnit
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-MZAVCJIC.mjs";
|
|
4
|
+
import "../../chunk-2FTUIE3I.mjs";
|
|
5
|
+
import "../../chunk-ZFNOFCCD.mjs";
|
|
6
|
+
import "../../chunk-XLN3FIK4.mjs";
|
|
7
|
+
import "../../chunk-J26FETK2.mjs";
|
|
8
8
|
import "../../chunk-3SYVRD3N.mjs";
|
|
9
9
|
import "../../chunk-J5LGTIGS.mjs";
|
|
10
10
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
media_update_default
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-2FTUIE3I.mjs";
|
|
4
|
+
import "../../chunk-J26FETK2.mjs";
|
|
5
5
|
import "../../chunk-3SYVRD3N.mjs";
|
|
6
6
|
import "../../chunk-J5LGTIGS.mjs";
|
|
7
7
|
export {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from 'react';
|
|
2
|
-
import { type ExtendedFile } from '@ablogcms/
|
|
2
|
+
import { type ExtendedFile } from '@ablogcms/read-files';
|
|
3
3
|
import { MediaAjaxConfig, MediaItem, MediaTag } from '../../types/index.js';
|
|
4
4
|
import * as actions from '../../stores/actions.js';
|
|
5
5
|
interface MediaUploadItem {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import MediaAdminView from '../components/media-admin/media-admin-view.js';
|
|
2
2
|
declare const _default: import("react-redux").ConnectedComponent<typeof MediaAdminView, {
|
|
3
|
-
tab?: "upload" | "select" | undefined;
|
|
4
3
|
key?: import("react").Key | null | undefined;
|
|
5
4
|
ref?: import("react").Ref<MediaAdminView> | undefined;
|
|
5
|
+
tab?: "upload" | "select" | undefined;
|
|
6
6
|
mode: "edit" | "insert";
|
|
7
7
|
context?: import("react").Context<import("react-redux").ReactReduxContextValue<any, import("redux").UnknownAction> | null> | undefined;
|
|
8
8
|
store?: import("redux").Store | undefined;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import MediaInsertModal from '../components/media-insert/media-insert-modal.js';
|
|
2
2
|
declare const _default: import("react-redux").ConnectedComponent<typeof MediaInsertModal, {
|
|
3
|
-
tab?: "upload" | "select" | undefined;
|
|
4
|
-
files?: File[] | undefined;
|
|
5
3
|
key?: import("react").Key | null | undefined;
|
|
6
4
|
ref?: import("react").Ref<MediaInsertModal> | undefined;
|
|
5
|
+
files?: File[] | undefined;
|
|
7
6
|
filetype?: import("../types/index.js").MediaViewFileType | undefined;
|
|
7
|
+
tab?: "upload" | "select" | undefined;
|
|
8
8
|
isOpen: boolean;
|
|
9
9
|
onClose: () => void;
|
|
10
10
|
container?: HTMLElement | undefined;
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MediaUnit
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-MZAVCJIC.mjs";
|
|
4
|
+
import "./chunk-2FTUIE3I.mjs";
|
|
5
|
+
import "./chunk-ZFNOFCCD.mjs";
|
|
6
|
+
import "./chunk-XLN3FIK4.mjs";
|
|
7
|
+
import "./chunk-J26FETK2.mjs";
|
|
8
8
|
import "./chunk-3SYVRD3N.mjs";
|
|
9
9
|
import "./chunk-J5LGTIGS.mjs";
|
|
10
10
|
|
|
11
11
|
// src/setup-media-unit.tsx
|
|
12
12
|
import { emit } from "@ablogcms/events";
|
|
13
|
-
import { render } from "@ablogcms/utils
|
|
13
|
+
import { render } from "@ablogcms/react-utils";
|
|
14
14
|
import { triggerEvent } from "@ablogcms/utils";
|
|
15
15
|
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
var elementOwners = /* @__PURE__ */ new WeakMap();
|
|
16
17
|
function setupMediaUnit(context, options = {}) {
|
|
17
18
|
const elements = context.querySelectorAll(".js-media-unit");
|
|
18
19
|
if (elements.length === 0) {
|
|
19
20
|
return () => {
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
|
-
const
|
|
23
|
+
const owner = /* @__PURE__ */ Symbol("setup-media-unit");
|
|
24
|
+
const ownedRoots = [];
|
|
23
25
|
elements.forEach((element) => {
|
|
24
26
|
element.classList.add("done");
|
|
27
|
+
elementOwners.set(element, owner);
|
|
25
28
|
const {
|
|
26
29
|
id = "",
|
|
27
30
|
primaryImageId = "",
|
|
@@ -104,10 +107,14 @@ function setupMediaUnit(context, options = {}) {
|
|
|
104
107
|
),
|
|
105
108
|
element
|
|
106
109
|
);
|
|
107
|
-
|
|
110
|
+
ownedRoots.push({ element, root });
|
|
108
111
|
});
|
|
109
112
|
return () => {
|
|
110
|
-
|
|
113
|
+
ownedRoots.forEach(({ element, root }) => {
|
|
114
|
+
if (elementOwners.get(element) !== owner) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
elementOwners.delete(element);
|
|
111
118
|
root.unmount();
|
|
112
119
|
});
|
|
113
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/setup-media-unit.tsx"],"sourcesContent":["import { emit } from '@ablogcms/events';\nimport { render } from '@ablogcms/utils
|
|
1
|
+
{"version":3,"sources":["../src/setup-media-unit.tsx"],"sourcesContent":["import { emit } from '@ablogcms/events';\nimport { render } from '@ablogcms/react-utils';\nimport { triggerEvent } from '@ablogcms/utils';\nimport { MediaItem } from './types';\nimport MediaUnit from './components/media-unit/media-unit';\n\n// 各 DOM 要素が「現在どの setupMediaUnit 呼び出しに所有されているか」を記録するモジュールスコープの\n// WeakMap。要素プロパティへの直接生やし込み(例: (element as any).__owner)は型を汚染し、要素が\n// 破棄された後も参照が残るメモリリークの温床になるため、WeakMap で「要素 → 所有者トークン」を管理する。\nconst elementOwners = new WeakMap<HTMLElement, symbol>();\n\nexport default function setupMediaUnit(\n context: HTMLElement,\n options: Partial<React.ComponentPropsWithoutRef<typeof MediaUnit>> = {}\n) {\n const elements = context.querySelectorAll<HTMLElement>('.js-media-unit');\n if (elements.length === 0) {\n return () => {};\n }\n // この setupMediaUnit 呼び出し自身を一意に識別するトークン。React 19 は同一 DOM 要素を保持した\n // まま effect だけを破棄→再実行することがあり、このとき同じ要素に対して setupMediaUnit が\n // 2回目走る。要素には1回目の root が残っているため render() は短絡して root を共有するが、\n // 1回目の cleanup は setTimeout で遅延実行されるため、2回目の setup の後に発火することがある。\n // その遅延 cleanup が「もう自分の担当ではない」要素の root を unmount しないよう、\n // 要素ごとに現在の所有者を記録し、cleanup 時に所有権を確認する。\n const owner = Symbol('setup-media-unit');\n const ownedRoots: { element: HTMLElement; root: ReturnType<typeof render> }[] = [];\n elements.forEach((element) => {\n element.classList.add('done');\n elementOwners.set(element, owner);\n const {\n id = '',\n primaryImageId = '',\n mediaSizes,\n multiUpload,\n mediaDir = '',\n active = ACMS.Config.mediaLibrary,\n enlarged,\n primary,\n thumbnail,\n type,\n pdf,\n pdfIcon,\n caption,\n text,\n alt,\n mid,\n link,\n landscape,\n lang,\n name,\n nolink,\n overrideLink = '',\n overrideAlt = '',\n overrideCaption = '',\n } = element.dataset;\n const items: MediaItem[] = [];\n if (mid) {\n const thumbnailPath = type === 'file' ? thumbnail : `${mediaDir}${thumbnail}`;\n const item = {\n media_caption: caption,\n media_text: text,\n media_alt: alt,\n media_id: Number(mid),\n media_link: link,\n media_landscape: landscape,\n media_thumbnail: thumbnailPath,\n media_type: type,\n media_pdf: pdf,\n media_title: name,\n } as MediaItem;\n items.push(item);\n }\n let mediaSizesFiltered = [];\n if (mediaSizes) {\n mediaSizesFiltered = JSON.parse(mediaSizes).filter((obj: object) => {\n if (Object.keys(obj).length === 0) {\n return false;\n }\n return true;\n });\n }\n const root = render(\n <MediaUnit\n items={items}\n id={id}\n primaryImageId={primaryImageId}\n mediaSizes={mediaSizesFiltered}\n active={active as 'on' | 'off'}\n lang={lang}\n primary={primary as 'true' | 'false'}\n multiUpload={multiUpload === 'false' ? 'false' : 'true'}\n usePdfIcon={pdfIcon as 'yes' | 'no'}\n enlarged={enlarged as 'true' | 'false'}\n hasLink={nolink as 'true' | 'false'}\n overrideLink={overrideLink}\n overrideAlt={overrideAlt}\n overrideCaption={overrideCaption}\n {...options}\n onChange={(mediaItems) => {\n if (options.onChange) {\n options.onChange(mediaItems);\n }\n void emit('media-unit.change', { target: element, mediaItems });\n triggerEvent(element, 'acms.media-unit.change', { bubbles: true, detail: { mediaItems } });\n }}\n />,\n element\n );\n ownedRoots.push({ element, root });\n });\n\n return () => {\n ownedRoots.forEach(({ element, root }) => {\n // 現所有者が自分のトークンと一致する場合のみ unmount する。一致しない場合\n // (後続の setupMediaUnit 呼び出しがすでにこの要素の所有権を取得している場合)は、\n // その要素の root には触れない。\n if (elementOwners.get(element) !== owner) {\n return;\n }\n elementOwners.delete(element);\n root.unmount();\n });\n };\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAiFvB;AA1EN,IAAM,gBAAgB,oBAAI,QAA6B;AAExC,SAAR,eACL,SACA,UAAqE,CAAC,GACtE;AACA,QAAM,WAAW,QAAQ,iBAA8B,gBAAgB;AACvE,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAOA,QAAM,QAAQ,uBAAO,kBAAkB;AACvC,QAAM,aAA0E,CAAC;AACjF,WAAS,QAAQ,CAAC,YAAY;AAC5B,YAAQ,UAAU,IAAI,MAAM;AAC5B,kBAAc,IAAI,SAAS,KAAK;AAChC,UAAM;AAAA,MACJ,KAAK;AAAA,MACL,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,SAAS,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,cAAc;AAAA,MACd,kBAAkB;AAAA,IACpB,IAAI,QAAQ;AACZ,UAAM,QAAqB,CAAC;AAC5B,QAAI,KAAK;AACP,YAAM,gBAAgB,SAAS,SAAS,YAAY,GAAG,QAAQ,GAAG,SAAS;AAC3E,YAAM,OAAO;AAAA,QACX,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,UAAU,OAAO,GAAG;AAAA,QACpB,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,aAAa;AAAA,MACf;AACA,YAAM,KAAK,IAAI;AAAA,IACjB;AACA,QAAI,qBAAqB,CAAC;AAC1B,QAAI,YAAY;AACd,2BAAqB,KAAK,MAAM,UAAU,EAAE,OAAO,CAAC,QAAgB;AAClE,YAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AACjC,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,UAAM,OAAO;AAAA,MACX;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAa,gBAAgB,UAAU,UAAU;AAAA,UACjD,YAAY;AAAA,UACZ;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACC,GAAG;AAAA,UACJ,UAAU,CAAC,eAAe;AACxB,gBAAI,QAAQ,UAAU;AACpB,sBAAQ,SAAS,UAAU;AAAA,YAC7B;AACA,iBAAK,KAAK,qBAAqB,EAAE,QAAQ,SAAS,WAAW,CAAC;AAC9D,yBAAa,SAAS,0BAA0B,EAAE,SAAS,MAAM,QAAQ,EAAE,WAAW,EAAE,CAAC;AAAA,UAC3F;AAAA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AACA,eAAW,KAAK,EAAE,SAAS,KAAK,CAAC;AAAA,EACnC,CAAC;AAED,SAAO,MAAM;AACX,eAAW,QAAQ,CAAC,EAAE,SAAS,KAAK,MAAM;AAIxC,UAAI,cAAc,IAAI,OAAO,MAAM,OAAO;AACxC;AAAA,MACF;AACA,oBAAc,OAAO,OAAO;AAC5B,WAAK,QAAQ;AAAA,IACf,CAAC;AAAA,EACH;AACF;","names":[]}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { Transform } from '@dnd-kit/utilities';
|
|
2
|
+
import type { PdfWorkerSource } from '@ablogcms/pdf';
|
|
2
3
|
import { FocalPoint, FocalPointCoordinates, MediaItem } from '../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @ablogcms/pdf のグローバル依存除去(ACMS.Config を options 引数に注入する設計)に伴い、
|
|
6
|
+
* 呼び出し側であるこのファイルに ACMS.Config.root 参照を閉じ込める。
|
|
7
|
+
*/
|
|
8
|
+
export declare function createPdfWorkerSource(): PdfWorkerSource;
|
|
3
9
|
export declare function getFocalPoint(media: MediaItem): FocalPoint;
|
|
4
10
|
export declare function coordinatesToTransform(focalPointCoordinates: FocalPointCoordinates, canvas: Cropper.CanvasData): Transform;
|
|
5
11
|
export declare function focalPointToCoordinates(focalPoint: [number, number], canvas: Cropper.CanvasData): FocalPointCoordinates;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ablogcms/media",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.29",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "React media library for a-blog cms",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://www.a-blogcms.jp",
|
|
8
8
|
"repository": {
|
|
@@ -16,32 +16,35 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@dnd-kit/core": "^6.3.1",
|
|
18
18
|
"@dnd-kit/utilities": "^3.2.2",
|
|
19
|
-
"@tanstack/react-table": "^8.
|
|
19
|
+
"@tanstack/react-table": "^8.21.3",
|
|
20
20
|
"classnames": "^2.5.1",
|
|
21
21
|
"cropperjs": "^1.6.2",
|
|
22
|
-
"dayjs": "^1.11.
|
|
23
|
-
"dompurify": "^3.
|
|
24
|
-
"heic-to": "^1.
|
|
25
|
-
"rc-slider": "^11.1.
|
|
26
|
-
"react-redux": "^9.
|
|
22
|
+
"dayjs": "^1.11.21",
|
|
23
|
+
"dompurify": "^3.4.12",
|
|
24
|
+
"heic-to": "^1.5.2",
|
|
25
|
+
"rc-slider": "^11.1.9",
|
|
26
|
+
"react-redux": "^9.3.0",
|
|
27
27
|
"redux": "^5.0.1",
|
|
28
|
-
"redux-saga": "^1.
|
|
29
|
-
"@ablogcms/
|
|
30
|
-
"@ablogcms/events": "3.2.
|
|
31
|
-
"@ablogcms/
|
|
32
|
-
"@ablogcms/
|
|
33
|
-
"@ablogcms/
|
|
34
|
-
"@ablogcms/
|
|
35
|
-
"@ablogcms/
|
|
36
|
-
"@ablogcms/
|
|
28
|
+
"redux-saga": "^1.5.1",
|
|
29
|
+
"@ablogcms/components": "3.2.29",
|
|
30
|
+
"@ablogcms/events": "3.2.29",
|
|
31
|
+
"@ablogcms/fetch-client": "3.2.29",
|
|
32
|
+
"@ablogcms/pending": "3.2.29",
|
|
33
|
+
"@ablogcms/pdf": "3.2.29",
|
|
34
|
+
"@ablogcms/react-utils": "3.2.29",
|
|
35
|
+
"@ablogcms/notify": "3.2.29",
|
|
36
|
+
"@ablogcms/read-files": "3.2.29",
|
|
37
|
+
"@ablogcms/types": "3.2.29",
|
|
38
|
+
"@ablogcms/resize-image": "3.2.29",
|
|
39
|
+
"@ablogcms/utils": "3.2.29"
|
|
37
40
|
},
|
|
38
41
|
"devDependencies": {
|
|
39
42
|
"@testing-library/react": "^16.3.2",
|
|
40
|
-
"vitest": "^4.1.
|
|
43
|
+
"vitest": "^4.1.10"
|
|
41
44
|
},
|
|
42
45
|
"peerDependencies": {
|
|
43
46
|
"react": "^19",
|
|
44
|
-
"@types/react": "^19.2.
|
|
47
|
+
"@types/react": "^19.2.18"
|
|
45
48
|
},
|
|
46
49
|
"peerDependenciesMeta": {
|
|
47
50
|
"@types/react": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/media-unit/media-unit.tsx"],"sourcesContent":["import { Component, createRef } from 'react';\nimport { ExtendedFile } from '@ablogcms/lib/read-files';\nimport { DropZone, DropZoneFileSelector, DropZoneText } from '@ablogcms/components/drop-zone';\nimport { AutoResizeTextarea } from '@ablogcms/components/textarea';\nimport MediaInsert from '../media-insert/media-insert';\nimport MediaUpdate from '../media-update/media-update';\nimport { MediaItem } from '../../types';\n\ntype MediaUnitProps = {\n items: MediaItem[];\n mediaSizes?: { value: string; label: string; selected: boolean }[];\n primaryImageId: string;\n id: string;\n active: 'on' | 'off';\n lang?: string;\n usePdfIcon: 'yes' | 'no';\n primary: 'true' | 'false';\n hasLink: 'true' | 'false';\n multiUpload: 'true' | 'false';\n enlarged: 'true' | 'false';\n overrideLink: string;\n overrideAlt: string;\n overrideCaption: string;\n onMount?: () => void;\n onChange?: (mediaItems: MediaItem[]) => void;\n};\n\ntype MediaUnitState = {\n insertModalOpened: boolean;\n updateModalOpened: boolean;\n newMedia: boolean;\n noLink: 'yes' | 'no';\n noLarge: 'yes' | 'no';\n useIcon: 'yes' | 'no';\n modalType: 'upload' | 'select';\n link: string;\n targetId: number | null;\n items: MediaItem[];\n files: File[];\n landscape: boolean;\n alt: string;\n caption: string;\n};\n\nexport default class MediaUnit extends Component<MediaUnitProps, MediaUnitState> {\n static defaultProps = {\n items: [],\n mediaSizes: [],\n lang: 'ja',\n };\n\n rootRef = createRef<HTMLDivElement>();\n\n handleMediaUpdated?: (event: Event) => void;\n\n constructor(props: MediaUnitProps) {\n super(props);\n\n let newMedia = false;\n if (props.items.length === 0) {\n newMedia = true;\n }\n this.state = {\n insertModalOpened: false,\n updateModalOpened: false,\n modalType: 'upload',\n targetId: null,\n items: props.items,\n files: [],\n landscape: true,\n newMedia,\n noLarge: props.enlarged === 'true' ? 'no' : 'yes',\n noLink: props.hasLink === 'true' ? 'no' : 'yes',\n useIcon: props.usePdfIcon === 'yes' ? 'yes' : 'no',\n link: props.overrideLink,\n alt: props.overrideAlt,\n caption: props.overrideCaption,\n };\n }\n\n componentDidMount() {\n const { items, newMedia } = this.state;\n if (items.length > 0 && !newMedia) {\n const [item] = items;\n const img = new Image();\n img.onload = () => {\n if (img.width < img.height) {\n this.setState({\n landscape: false,\n });\n }\n };\n img.src = item.media_thumbnail;\n }\n\n if (this.props.onMount) {\n this.props.onMount();\n }\n\n // メディア更新イベントを購読\n this.handleMediaUpdated = (event: Event) => {\n if (!(event instanceof CustomEvent)) {\n return;\n }\n const updatedMedia = event.detail.data as MediaItem;\n const { items: currentItems } = this.state;\n // 現在のitems内に該当するメディアIDがあるか確認\n const findIndex = currentItems.findIndex((item) => item.media_id === updatedMedia.media_id);\n if (findIndex !== -1) {\n // 該当するメディアを更新\n const newItems = [...currentItems.slice(0, findIndex), updatedMedia, ...currentItems.slice(findIndex + 1)];\n this.setState({\n items: newItems,\n });\n }\n };\n document.addEventListener('acms.media-updated', this.handleMediaUpdated);\n }\n\n componentWillUnmount() {\n if (this.handleMediaUpdated) {\n document.removeEventListener('acms.media-updated', this.handleMediaUpdated);\n }\n }\n\n componentDidUpdate(_: MediaUnitProps, prevState: MediaUnitState) {\n if (prevState.items !== this.state.items && this.props.onChange) {\n this.props.onChange(this.state.items);\n }\n }\n\n openInsertModal = () => {\n this.setState({\n modalType: 'select',\n insertModalOpened: true,\n });\n };\n\n onInsert = (items: MediaItem[]) => {\n this.setState({\n items,\n insertModalOpened: false,\n });\n };\n\n onClose = () => {\n this.setState({\n insertModalOpened: false,\n });\n };\n\n onUpdateModalClose = () => {\n this.setState({\n updateModalOpened: false,\n });\n };\n\n onUpdateModalUpdate = (item: MediaItem) => {\n const { items, targetId } = this.state;\n const findIndex = items.findIndex((currentItem) => {\n if (currentItem.media_id === targetId) {\n return true;\n }\n return false;\n });\n const updated = [...items.slice(0, findIndex), item, ...items.slice(findIndex + 1)];\n this.setState({\n updateModalOpened: false,\n items: updated,\n });\n };\n\n removeMediaAt = (index: number) => {\n const { items } = this.state;\n const filtered = items.filter((item, i) => i !== index);\n this.setState({\n items: filtered,\n });\n };\n\n openEditModal = (targetId: number) => {\n this.setState({\n targetId,\n updateModalOpened: true,\n });\n };\n\n onComplete = (files: ExtendedFile[]) => {\n this.setState({\n files: files.map((item) => item.file),\n insertModalOpened: true,\n modalType: 'upload',\n });\n };\n\n uploadFile = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!(e.target.files instanceof FileList)) {\n return;\n }\n this.setState({\n files: Array.from(e.target.files),\n insertModalOpened: true,\n modalType: 'upload',\n });\n };\n\n render() {\n const {\n insertModalOpened,\n updateModalOpened,\n modalType,\n targetId,\n items,\n files,\n newMedia,\n noLarge,\n useIcon,\n link,\n alt,\n caption,\n } = this.state;\n const { mediaSizes, primaryImageId, id, active, enlarged, usePdfIcon, primary, lang, multiUpload } = this.props;\n const item = items.at(0);\n\n return (\n <div ref={this.rootRef}>\n <DropZone\n onComplete={(files) => {\n this.onComplete(files);\n }}\n >\n <table className=\"entryFormColumnSettingTable entryFormColumnTable\">\n <tbody>\n <tr className=\"entryFormFileControl\">\n <td className=\"acms-admin-media-unit-preview-area\">\n {items.length === 0 && (\n <div>\n <div className=\"acms-admin-media-unit-droparea\">\n <DropZoneText>{ACMS.i18n('media.add_new_media')}</DropZoneText>\n <DropZoneFileSelector onChange={this.uploadFile} disabled={insertModalOpened} />\n <DropZoneText>{ACMS.i18n('media.drop_file')}</DropZoneText>\n </div>\n <input type=\"hidden\" name={`media_id_${id}[]`} value=\"\" />\n </div>\n )}\n {items.length > 0 && items.length < 2 && item !== undefined && (\n <div className=\"acms-admin-media-unit-preview-wrap\">\n <div className=\"acms-admin-media-unit-preview-overlay\" />\n <button\n type=\"button\"\n className=\"acms-admin-media-unit-preview-remove-btn\"\n onClick={() => this.removeMediaAt(0)}\n aria-label={ACMS.i18n('media.clear_button_label')}\n />\n <div className=\"acms-admin-media-unit-preview-edit-overlay\" />\n {(item.media_type === 'image' || item.media_type === 'svg') && (\n <img className=\"acms-admin-media-unit-preview\" src={`${item.media_thumbnail}`} alt=\"\" />\n )}\n {item.media_type === 'file' && (\n <div className=\"acms-admin-media-unit-file-icon-wrap\">\n <img className=\"acms-admin-media-unit-file-icon\" src={`${item.media_thumbnail}`} alt=\"\" />\n <p className=\"acms-admin-media-unit-file-caption\">{item.media_title}</p>\n </div>\n )}\n <button\n type=\"button\"\n className=\"acms-admin-media-edit-btn acms-admin-media-unit-preview-edit-btn\"\n onClick={() => this.openEditModal(item.media_id)}\n >\n {ACMS.i18n('media.edit')}\n </button>\n <input type=\"hidden\" name={`media_id_${id}[]`} value={item.media_id.toString()} />\n </div>\n )}\n </td>\n <td className=\"entryFormFileControl\">\n <table className=\"acms-admin-margin-bottom-mini\" style={{ width: '100%' }}>\n <tbody>\n <tr>\n <th>ID</th>\n <td>\n <div style={{ display: 'inline-block' }}>\n {item && item.media_id && (\n <span className=\"acms-admin-label acms-admin-label-default acms-admin-margin-right-mini\">\n {item.media_id}\n </span>\n )}\n </div>\n <button type=\"button\" className=\"acms-admin-btn-admin\" onClick={this.openInsertModal}>\n {ACMS.i18n('media.select_from_media')}\n </button>\n {active !== 'on' && <span style={{ color: 'red' }}>{ACMS.i18n('media.media_unit_use')}</span>}\n </td>\n </tr>\n {mediaSizes && mediaSizes.length !== 0 && (\n <tr>\n <th>\n <label htmlFor={`unit-media-size-${id}`}>{ACMS.i18n('media.size')}</label>\n </th>\n <td>\n <select\n defaultValue={mediaSizes.find((size) => size.selected)?.value}\n key={mediaSizes.find((size) => size.selected)?.value}\n name={`media_size_${id}[]`}\n id={`unit-media-size-${id}`}\n >\n {mediaSizes.map((mediaSize) => (\n <option value={mediaSize.value} key={mediaSize.label}>\n {mediaSize.label}\n </option>\n ))}\n </select>\n {item &&\n item.media_type === 'file' &&\n (item.media_pdf === 'yes' ||\n (item.media_ext && item.media_ext.toUpperCase() === 'PDF')) && (\n <div className=\"acms-admin-form-checkbox\" style={{ marginLeft: '10px' }}>\n <input type=\"hidden\" name={`media_use_icon_${id}[]`} value={useIcon} />\n <input\n type=\"checkbox\"\n value=\"yes\"\n id={`input-checkbox-media_use_icon_${id}_${lang}`}\n defaultChecked={usePdfIcon === 'yes'}\n onChange={(e) => {\n if (e.target.checked) {\n this.setState({\n useIcon: 'yes',\n });\n } else {\n this.setState({\n useIcon: 'no',\n });\n }\n }}\n />\n <label htmlFor={`input-checkbox-media_use_icon_${id}_${lang}`}>\n <i className=\"acms-admin-ico-checkbox\" />\n {ACMS.i18n('media.use_icon')}\n </label>\n </div>\n )}\n </td>\n </tr>\n )}\n {items.length < 2 && (\n <tr>\n <th>\n <label id={`unit-media-caption-label-${id}`} htmlFor={`unit-media-caption-${id}`}>\n {ACMS.i18n('media.caption')}\n </label>\n </th>\n <td>\n <input\n type=\"text\"\n name={`media_caption_${id}[]`}\n id={`unit-media-caption-${id}`}\n aria-labelledby={`unit-media-caption-label-${id}`}\n className=\"acms-admin-form-width-full\"\n defaultValue={caption}\n placeholder={item && item.media_caption ? `${item.media_caption}` : ''}\n />\n </td>\n </tr>\n )}\n {items.length < 2 && (\n <tr>\n <th>\n <label id={`unit-media-alt-text-label-${id}`} htmlFor={`unit-media-alt-text-${id}`}>\n {ACMS.i18n('media.alt')}\n </label>\n </th>\n <td>\n <AutoResizeTextarea\n name={`media_alt_${id}[]`}\n defaultValue={alt}\n id={`unit-media-alt-text-${id}`}\n aria-labelledby={`unit-media-alt-text-label-${id}`}\n className=\"acms-admin-form-width-full\"\n placeholder={item && item.media_alt ? `${item.media_alt}` : ''}\n maxRows={4}\n />\n </td>\n </tr>\n )}\n {items.length < 2 &&\n item !== undefined &&\n (item.media_type === 'image' || item.media_type === 'svg') && (\n <tr>\n <th>\n <label\n id={`input-text-media_link-label-${id}-${lang}`}\n htmlFor={`input-text-media_link_${id}_${lang}`}\n >\n {ACMS.i18n('media.url_link_to')}\n </label>\n </th>\n <td>\n <input\n type=\"text\"\n id={`input-text-media_link_${id}_${lang}`}\n aria-labelledby={`input-text-media_link-label-${id}-${lang}`}\n name={`media_link_${id}[]`}\n className=\"acms-admin-form-width-full\"\n placeholder={item.media_link || ''}\n defaultValue={link}\n />\n </td>\n </tr>\n )}\n {items.length < 2 &&\n item !== undefined &&\n (item.media_type === 'image' || item.media_type === 'svg') && (\n <tr>\n <th>\n <label htmlFor={`input-checkbox-media_enlarged_${id}_${lang}`}>\n {ACMS.i18n('media.image_link')}\n </label>\n </th>\n <td>\n <div className=\"acms-admin-form-checkbox\">\n <input type=\"hidden\" name={`media_enlarged_${id}[]`} value={noLarge} />\n <input\n type=\"checkbox\"\n value=\"no\"\n id={`input-checkbox-media_enlarged_${id}_${lang}`}\n defaultChecked={enlarged === 'true'}\n onChange={(e) => {\n if (e.target.checked) {\n this.setState({\n noLarge: 'no',\n });\n } else {\n this.setState({\n noLarge: 'yes',\n });\n }\n }}\n />\n <label htmlFor={`input-checkbox-media_enlarged_${id}_${lang}`}>\n <i className=\"acms-admin-ico-checkbox\" />\n {ACMS.i18n('media.no_image_link')}\n </label>\n </div>\n </td>\n </tr>\n )}\n {items.length < 2 &&\n primaryImageId !== 'no' &&\n item &&\n item.media_type === 'image' &&\n !newMedia && (\n <tr>\n <th>\n <label htmlFor={`input-radio-image_primary_image_${id}_${lang}`}>\n {ACMS.i18n('media.main_image')}\n </label>\n </th>\n <td>\n <div className=\"acms-admin-form-radio\">\n <input\n type=\"radio\"\n name=\"primary_image\"\n value={primaryImageId}\n id={`input-radio-image_primary_image_${id}_${lang}`}\n defaultChecked={primary === 'true'}\n />\n <label htmlFor={`input-radio-image_primary_image_${id}_${lang}`}>\n <i className=\"acms-admin-ico-radio\" />\n {ACMS.i18n('media.set_as_main_image')}\n </label>\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n {!(items.length < 2 && item && (item.media_type === 'image' || item.media_type === 'svg')) && (\n <input type=\"hidden\" name={`media_enlarged_${id}[]`} value=\"no\" />\n )}\n </td>\n </tr>\n {items.length >= 2 && (\n <tr>\n <td colSpan={2}>\n <div className=\"acms-admin-media-unit-preview-group\">\n {items.map((item, index) => (\n <div\n className=\"acms-admin-media-unit-preview-wrap acms-admin-media-unit-preview-group-item\"\n key={item.media_id}\n >\n <div className=\"acms-admin-media-unit-preview-group-item-inner\">\n <div className=\"acms-admin-media-unit-preview-edit-overlay\" />\n {(item.media_type === 'image' || item.media_type === 'svg') && (\n <img\n className=\"acms-admin-media-unit-preview-group-img\"\n src={`${item.media_thumbnail}`}\n alt=\"\"\n />\n )}\n {item.media_type === 'file' && (\n <div className=\"acms-admin-media-unit-file-icon-wrap\">\n <img\n className=\"acms-admin-media-unit-file-icon\"\n src={`${item.media_thumbnail}`}\n alt=\"\"\n />\n <p className=\"acms-admin-media-unit-file-caption\">{item.media_title}</p>\n </div>\n )}\n <input type=\"hidden\" name={`media_id_${id}[]`} value={item.media_id.toString()} />\n </div>\n <div className=\"acms-admin-media-unit-preview-overlay\" />\n <button\n type=\"button\"\n className=\"acms-admin-media-unit-preview-remove-btn\"\n onClick={() => this.removeMediaAt(index)}\n aria-label={ACMS.i18n('media.clear_button_label')}\n />\n <button\n type=\"button\"\n className=\"acms-admin-media-edit-btn acms-admin-media-unit-preview-edit-btn\"\n onClick={() => this.openEditModal(item.media_id)}\n >\n {ACMS.i18n('media.edit')}\n </button>\n </div>\n ))}\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n <MediaInsert\n isOpen={insertModalOpened}\n onInsert={this.onInsert}\n radioMode={multiUpload === 'false'}\n files={files}\n onClose={this.onClose}\n tab={modalType}\n filetype=\"all\"\n />\n {targetId != null && targetId > 0 && (\n <MediaUpdate\n isOpen={updateModalOpened}\n mid={targetId}\n onClose={this.onUpdateModalClose}\n onUpdate={this.onUpdateModalUpdate}\n />\n )}\n </DropZone>\n </div>\n );\n }\n}\n"],"mappings":"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","names":["files","item"]}
|