@parhelia/sharedien-dam 0.1.11652 → 0.1.11666

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.
@@ -0,0 +1,10 @@
1
+ import { DialogProps } from "@parhelia/core";
2
+ import { DamImageValue, DamSelectorProps } from "./types";
3
+ declare global {
4
+ interface Window {
5
+ sharedienAssetBrowser?: {
6
+ show: (url: string, config: any, callback: (content: any, isCancelled: boolean) => void, selector: string) => void;
7
+ };
8
+ }
9
+ }
10
+ export declare function DamSelector({ onClose, language, }: DialogProps<DamImageValue> & DamSelectorProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,255 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Input, Select, SimpleTabs, Dialog, DialogContent, DialogFooter, StyledDialogTitle, useEditContext, } from "@parhelia/core";
3
+ import { useEffect, useState } from "react";
4
+ import React from "react";
5
+ import { ExternalLink, Search, Check, X, Image as ImageIcon } from "lucide-react";
6
+ // Utility function to format file sizes
7
+ function formatFileSize(bytes) {
8
+ if (bytes === 0)
9
+ return "0 Bytes";
10
+ const k = 1024;
11
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
12
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
13
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
14
+ }
15
+ export function DamSelector({ onClose, language = "en", }) {
16
+ const [assetId, setAssetId] = useState("");
17
+ const [selectedDerivative, setSelectedDerivative] = useState(null);
18
+ const [assetData, setAssetData] = useState(null);
19
+ const [loading, setLoading] = useState(false);
20
+ const [error, setError] = useState(null);
21
+ const [activeIndex, setActiveIndex] = useState(0);
22
+ const [isVisible, setIsVisible] = useState(false);
23
+ const [fromWidgetSelection, setFromWidgetSelection] = useState(false);
24
+ const editContext = useEditContext();
25
+ const sharedienDamConfig = editContext?.configuration?.extensions
26
+ ?.sharedienDam;
27
+ const damUrl = sharedienDamConfig?.damUrl ?? "";
28
+ const damScriptUrl = sharedienDamConfig?.damScriptUrl ?? "";
29
+ useEffect(() => {
30
+ const timer = setTimeout(() => {
31
+ setIsVisible(true);
32
+ }, 200);
33
+ return () => clearTimeout(timer);
34
+ }, []);
35
+ // Load the DAM widget script
36
+ useEffect(() => {
37
+ // Load the external script for the DAM widget
38
+ const script = document.createElement("script");
39
+ script.src = damScriptUrl;
40
+ script.async = true;
41
+ document.body.appendChild(script);
42
+ return () => {
43
+ // Clean up script when component unmounts
44
+ if (document.body.contains(script)) {
45
+ document.body.removeChild(script);
46
+ }
47
+ };
48
+ }, [damScriptUrl]);
49
+ // Initialize asset browser when switching to the second tab
50
+ useEffect(() => {
51
+ if (activeIndex === 1) {
52
+ initiateAssetBrowser();
53
+ }
54
+ }, [activeIndex]);
55
+ // Automatically search when assetId changes from widget selection
56
+ useEffect(() => {
57
+ if (assetId && assetId.trim() && fromWidgetSelection) {
58
+ searchAsset();
59
+ setFromWidgetSelection(false); // Reset the flag
60
+ }
61
+ }, [assetId, fromWidgetSelection]);
62
+ // Function to initialize the asset browser (converted from your C# code)
63
+ const initiateAssetBrowser = () => {
64
+ if (!window.sharedienAssetBrowser) {
65
+ console.error("DAM Asset Browser widget not loaded");
66
+ return;
67
+ }
68
+ const configuration = {
69
+ allowMultipleSelection: false,
70
+ canBeClosedByUser: false,
71
+ showMainNavigationBranding: false,
72
+ searchQuery: {
73
+ // Add your filters here if needed
74
+ },
75
+ };
76
+ const callback = (content, isCancelled) => {
77
+ if (isCancelled) {
78
+ console.log("Component has been cancelled");
79
+ }
80
+ else {
81
+ console.log("Message received", content["selectedAssets"][0]);
82
+ // Set the asset ID and switch back to the first tab
83
+ if (content["selectedAssets"] && content["selectedAssets"][0]) {
84
+ setFromWidgetSelection(true); // Mark that this selection is from widget
85
+ setAssetId(content["selectedAssets"][0].identifier);
86
+ setActiveIndex(0); // Switch back to first tab
87
+ }
88
+ }
89
+ };
90
+ window.sharedienAssetBrowser.show(damUrl, configuration, callback, "#damBrowserContainer");
91
+ };
92
+ // Function to search for an asset
93
+ async function searchAsset() {
94
+ if (!assetId.trim()) {
95
+ setError("Please enter an Asset ID");
96
+ return;
97
+ }
98
+ setLoading(true);
99
+ setError(null);
100
+ try {
101
+ // Call the API with assetId and language using POST
102
+ const response = await fetch("/parhelia/sharedien", {
103
+ method: "POST",
104
+ headers: {
105
+ "Content-Type": "application/json",
106
+ },
107
+ body: JSON.stringify({
108
+ assetId: assetId,
109
+ language: language,
110
+ }),
111
+ });
112
+ if (!response.ok) {
113
+ throw new Error(`Error fetching asset: ${response.statusText}`);
114
+ }
115
+ const data = await response.json();
116
+ if (data.Success === false) {
117
+ // Show the error message
118
+ setError(data.Message || "An error occurred during insert");
119
+ return; // Don't close the dialog
120
+ }
121
+ setAssetData(data);
122
+ // Set the preferred derivation as selected by default
123
+ const preferredItem = data.Derivations.find((item) => item.IsPreferred);
124
+ if (preferredItem) {
125
+ setSelectedDerivative(preferredItem.Derivation);
126
+ }
127
+ }
128
+ catch (err) {
129
+ setError(err instanceof Error ? err.message : "An unknown error occurred");
130
+ console.error("Error fetching asset:", err);
131
+ }
132
+ finally {
133
+ setLoading(false);
134
+ }
135
+ }
136
+ ////
137
+ // Create select options from derivatives data
138
+ const getSelectOptions = () => {
139
+ if (!assetData?.Derivations)
140
+ return [];
141
+ return assetData.Derivations.map((item) => ({
142
+ value: item.Derivation.FileName,
143
+ label: `${item.Derivation.DerivationTypeIdentifier} (${item.Derivation.FileTypeIdentifier}) - ${formatFileSize(item.Derivation.FileSize)}${item.IsPreferred ? " [recommended version for import]" : ""}`,
144
+ disabled: false,
145
+ }));
146
+ };
147
+ // Handle select change
148
+ const handleSelectChange = (value) => {
149
+ const selectedItem = assetData?.Derivations.find((item) => item.Derivation.FileName === value);
150
+ if (selectedItem) {
151
+ setSelectedDerivative(selectedItem.Derivation);
152
+ }
153
+ };
154
+ const handleInsert = async () => {
155
+ // Only proceed if a derivative is selected
156
+ if (!selectedDerivative) {
157
+ return;
158
+ }
159
+ try {
160
+ // Set loading state if needed
161
+ setLoading(true);
162
+ // Send POST request to insert endpoint
163
+ const response = await fetch("/parhelia/sharedien/insert", {
164
+ method: "POST",
165
+ headers: {
166
+ "Content-Type": "application/json",
167
+ },
168
+ body: JSON.stringify({
169
+ assetId: assetId,
170
+ language: language,
171
+ derivation: {
172
+ assetTypeIdentifier: selectedDerivative.AssetTypeIdentifier,
173
+ fileTypeIdentifier: selectedDerivative.FileTypeIdentifier,
174
+ fileMimeType: selectedDerivative.FileMimeType,
175
+ derivationTypeIdentifier: selectedDerivative.DerivationTypeIdentifier,
176
+ fileName: selectedDerivative.FileName,
177
+ fileEnding: selectedDerivative.FileEnding,
178
+ fileSize: selectedDerivative.FileSize,
179
+ uri: selectedDerivative.Uri,
180
+ downloadUri: selectedDerivative.DownloadUri,
181
+ status: selectedDerivative.Status,
182
+ },
183
+ }),
184
+ });
185
+ if (!response.ok) {
186
+ throw new Error(`Error inserting asset: ${response.statusText}`);
187
+ }
188
+ // Parse the response
189
+ const result = await response.json();
190
+ // Check if the response indicates failure
191
+ if (result.Success === false) {
192
+ // Show the error message
193
+ setError(result.Message || "An error occurred during insert");
194
+ return; // Don't close the dialog
195
+ }
196
+ // Check if this is a video asset by looking at Asset Type property
197
+ const assetTypeProperty = assetData?.AssetProperties?.find((prop) => prop.FieldName === "Asset Type");
198
+ const isVideo = assetTypeProperty?.Value === "Movie";
199
+ const mediaItemId = result?.length > 0 ? result[0] : undefined;
200
+ // Close the dialog and return the selected derivative info
201
+ onClose({
202
+ mediaId: isVideo ? undefined : mediaItemId,
203
+ videoId: isVideo ? mediaItemId : undefined,
204
+ });
205
+ }
206
+ catch (err) {
207
+ // Handle errors
208
+ setError(err instanceof Error
209
+ ? err.message
210
+ : "An unknown error occurred during insert");
211
+ console.error("Error inserting asset:", err);
212
+ }
213
+ finally {
214
+ // Reset loading state
215
+ setLoading(false);
216
+ }
217
+ };
218
+ const footer = (_jsxs("div", { className: "flex gap-3 p-4", children: [_jsx("span", { title: !selectedDerivative
219
+ ? "Please select a derivative first"
220
+ : loading
221
+ ? "Processing..."
222
+ : assetData?.AssetInfo?.MeetsRestrictions === false
223
+ ? "Cannot insert: " + assetData.AssetInfo.Message
224
+ : !assetData
225
+ ? "Please search for an asset first"
226
+ : undefined, children: _jsxs(Button, { size: "sm", onClick: handleInsert, disabled: !selectedDerivative ||
227
+ loading ||
228
+ assetData?.AssetInfo?.MeetsRestrictions === false ||
229
+ !assetData, children: [loading ? (_jsx("i", { className: "pi pi-spin pi-spinner w-4 h-4" })) : (_jsx(Check, { className: "w-4 h-4" })), "Insert"] }) }), _jsxs(Button, { size: "sm", onClick: () => onClose(null), children: [_jsx(X, { className: "w-4 h-4" }), "Cancel"] })] }));
230
+ return (_jsx(Dialog, { open: true, onOpenChange: () => onClose(null), children: _jsxs(DialogContent, { className: "flex flex-col overflow-hidden border-none p-0 shadow-2xl", style: {
231
+ width: "90vw",
232
+ height: "90vh",
233
+ maxWidth: "90vw",
234
+ maxHeight: "90vh",
235
+ }, children: [_jsx(StyledDialogTitle, { icon: _jsx(ImageIcon, { strokeWidth: 1.5 }), title: "Get Asset from DAM", subtitle: "Browse for your asset in the DAM and copy the Asset ID. Paste the Asset ID below and click Insert to apply the image. If available, you can also use the Asset Browser tab." }), _jsx("div", { className: "flex-1 overflow-hidden flex flex-col min-h-0 px-6", children: isVisible && (_jsx("div", { className: "flex-1 overflow-hidden flex flex-col", children: _jsx(SimpleTabs, { tabs: [
236
+ {
237
+ id: "asset-id",
238
+ label: "SELECT BY ASSET ID",
239
+ content: (_jsxs("div", { className: "h-full overflow-auto pt-4", children: [_jsxs("div", { className: "p-3 bg-blue-50 mb-4 flex align-items-center gap-2", children: [_jsx("i", { className: "p-2 pi pi-info-circle", style: { fontSize: "1.2rem" } }), _jsx("span", { className: "p-1 flex align-items-center", children: "For testing you can open DAM Browser in a new Tab" }), _jsxs(Button, { size: "sm", onClick: () => window.open(damUrl, "_blank"), children: [_jsx(ExternalLink, { className: "w-4 h-4" }), "Open DAM"] })] }), _jsxs("div", { className: "grid grid-cols-2", children: [_jsxs("div", { className: "col-6 pr-4", children: [_jsxs("div", { className: "p-field mb-3", children: [_jsx("label", { htmlFor: "assetId", className: "block mb-2", children: "Asset ID" }), _jsx(Input, { type: "text", id: "assetId", value: assetId, onChange: (e) => setAssetId(e.target.value), className: "w-full h-12 px-4", placeholder: "Enter Asset ID" })] }), _jsxs(Button, { size: "sm", onClick: searchAsset, disabled: loading, children: [_jsx(Search, { className: "w-4 h-4" }), "Search Asset"] }), error && (_jsxs("div", { className: "p-3 bg-red-50 text-red-700 mb-4 border-round", children: [_jsx("i", { className: "pi pi-exclamation-circle mr-2" }), error] })), assetData && (_jsxs("div", { className: "p-field p-card1 p-31", children: [_jsx("label", { htmlFor: "derivative", className: "block mb-2", children: "Select Derivatives" }), _jsx("div", { className: "mb-4", children: _jsx(Select, { id: "derivative", value: selectedDerivative?.FileName || "", onValueChange: handleSelectChange, options: getSelectOptions(), placeholder: "Choose a derivative...", className: "w-full h-12 px-4", disabled: false }) })] }))] }), _jsx("div", { className: "col-6 pl-4", children: _jsxs("div", { className: "p-card p-3 flex flex-column grid grid-cols-1 grid-rows-2", style: { minHeight: "300px" }, children: [_jsx("div", { className: "flex justify-content-center align-items-center row-1", style: { flex: "1" }, children: loading ? (_jsx("i", { className: "pi pi-spin pi-spinner text-6xl text-primary" })) : assetData?.PreviewDerivationSrc ? (_jsx("img", { src: assetData.PreviewDerivationSrc, alt: "Asset preview", className: "w-full h-auto max-h-64 object-contain border border-gray-200 rounded", style: { maxWidth: "100%" } })) : (_jsxs("div", { className: "flex flex-column align-items-center justify-content-center h-full", children: [_jsx("i", { className: "pi pi-image text-6xl text-gray-300 mb-3 p-1" }), _jsx("p", { className: "text-gray-500 text-center", children: "Asset preview will appear here" })] })) }), assetData?.AssetInfo?.MeetsRestrictions === false &&
240
+ assetData?.AssetInfo?.Message && (_jsxs("div", { className: "mt-3 p-3 bg-red-50 border-round", children: [_jsx("i", { className: "pi pi-exclamation-circle mr-2 text-red-500" }), _jsx("span", { children: assetData.AssetInfo.Message })] })), assetData?.AssetInfo?.MeetsRestrictions &&
241
+ assetData?.AssetInfo?.Message && (_jsxs("div", { className: "mt-3 p-3 bg-yellow-50 border-round", children: [_jsx("i", { className: "pi pi-exclamation-triangle mr-2 text-yellow-500" }), _jsx("span", { children: assetData.AssetInfo.Message })] })), assetData?.AssetProperties &&
242
+ assetData.AssetProperties.length > 0 && (_jsx("div", { className: "mt-3 p-3 bg-gray-50 border-round", children: _jsx("div", { className: "grid", children: assetData.AssetProperties.map((prop, index) => (_jsxs(React.Fragment, { children: [_jsxs("div", { className: "col-4 font-bold", children: [prop.FieldName, ":"] }), _jsx("div", { className: "col-8", children: prop.FieldName === "File Size"
243
+ ? formatFileSize(parseInt(prop.Value))
244
+ : prop.FieldName === "Expiry Date"
245
+ ? new Date(prop.Value).toLocaleDateString()
246
+ : prop.Value })] }, index))) }) }))] }) })] })] })),
247
+ },
248
+ {
249
+ id: "browse-dam",
250
+ label: "BROWSE IN DAM",
251
+ content: (_jsx("div", { className: "h-full overflow-hidden pt-4", children: _jsxs("div", { className: "h-full flex flex-col", children: [_jsx("div", { id: "damBrowserContainer", className: "flex-1", style: { minHeight: 0 } }), !window.sharedienAssetBrowser && (_jsx("iframe", { src: damUrl, className: "w-full h-full border border-gray-300", title: "DAM Browser", sandbox: "allow-same-origin allow-scripts allow-popups allow-forms" })), _jsxs("div", { className: "mt-3 p-3 bg-yellow-50 border-round flex-shrink-0", children: [_jsx("i", { className: "pi pi-exclamation-triangle mr-2 text-yellow-500" }), _jsx("span", { children: "Note: If the DAM widget doesn't load, you'll need to manually copy the Asset ID from the DAM and paste it in the Asset ID field on the first tab." })] })] }) })),
252
+ },
253
+ ], activeTab: activeIndex, setActiveTab: setActiveIndex, className: "border-b border-gray-200", variant: "elegant" }) })) }), _jsx(DialogFooter, { className: "flex-shrink-0 border-t bg-white relative z-10", children: footer })] }) }));
254
+ }
255
+ //# sourceMappingURL=DamSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DamSelector.js","sourceRoot":"","sources":["../src/DamSelector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ClientFieldButton } from "@parhelia/core";
2
+ export declare const DamSelectorButton: ClientFieldButton;
@@ -0,0 +1,73 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { DamSelector } from "./DamSelector";
3
+ import { ExternalLink } from "lucide-react";
4
+ export const DamSelectorButton = {
5
+ label: "Select from DAM",
6
+ icon: (_jsx(ExternalLink, { strokeWidth: 1, size: 16 })),
7
+ isPimaryAction: false, // Primary action - appears outside menu
8
+ clientAction: async ({ editContext, field, variantName: contextVariantName, }) => {
9
+ const data = await editContext.openDialog(DamSelector, {
10
+ language: field.descriptor.item.language,
11
+ });
12
+ if (data?.mediaId || data?.videoId) {
13
+ const raw = (() => {
14
+ try {
15
+ return field?.rawValue && field?.rawValue[0] === "{"
16
+ ? JSON.parse(field?.rawValue)
17
+ : { Variants: [] };
18
+ }
19
+ catch (error) {
20
+ console.warn("Failed to parse picture field raw value:", error);
21
+ return { Variants: [] };
22
+ }
23
+ })();
24
+ // Get variant name from context (when called from PictureEditor variant button)
25
+ // or fallback to trying to determine it from field data
26
+ let variantName = contextVariantName;
27
+ if (!variantName && raw.Variants && raw.Variants.length > 0) {
28
+ // Use the first variant's name if available
29
+ variantName = raw.Variants[0]?.Name;
30
+ }
31
+ // If we still don't have a variant name, try to get it from the field's value
32
+ if (!variantName &&
33
+ field.value &&
34
+ typeof field.value === "object" &&
35
+ "variants" in field.value) {
36
+ const variants = field.value.variants;
37
+ if (Array.isArray(variants) &&
38
+ variants.length > 0 &&
39
+ variants[0]?.name) {
40
+ variantName = variants[0].name;
41
+ }
42
+ }
43
+ if (!variantName) {
44
+ console.warn("Cannot determine variant name for DAM selection. No variants found in picture field.");
45
+ return;
46
+ }
47
+ // Update or create the variant
48
+ if (!raw.Variants)
49
+ raw.Variants = [];
50
+ const selected = raw.Variants.find((x) => x.Name == variantName);
51
+ if (selected) {
52
+ selected.MediaId = data.mediaId;
53
+ selected.VideoId = data.videoId;
54
+ }
55
+ else {
56
+ raw.Variants.push({
57
+ Name: variantName,
58
+ MediaId: data.mediaId,
59
+ VideoId: data.videoId,
60
+ });
61
+ }
62
+ editContext.operations.editField({
63
+ field: field.descriptor,
64
+ rawValue: JSON.stringify(raw),
65
+ refresh: "immediate",
66
+ });
67
+ }
68
+ },
69
+ isGenerator: false,
70
+ id: "select-from-dam",
71
+ description: "Opens the sharedien DAM to select an image or video",
72
+ };
73
+ //# sourceMappingURL=DamSelectorButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DamSelectorButton.js","sourceRoot":"","sources":["../src/DamSelectorButton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { EditorConfiguration } from "@parhelia/core";
2
+ import { SharedienDamExtension, DamImageValue, DamSelectorProps } from "./types";
3
+ import { DamSelectorButton } from "./DamSelectorButton";
4
+ import { DamSelector } from "./DamSelector";
5
+ export declare function configureSharedienDam(configuration: EditorConfiguration, sharedienDam: SharedienDamExtension): EditorConfiguration;
6
+ export { DamSelector, DamSelectorButton };
7
+ export type { DamImageValue, DamSelectorProps, SharedienDamExtension };
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ import { DamSelectorButton } from "./DamSelectorButton";
2
+ import { DamSelector } from "./DamSelector";
3
+ export function configureSharedienDam(configuration, sharedienDam) {
4
+ configuration.extensions = {
5
+ ...configuration.extensions,
6
+ sharedienDam: {
7
+ enableDamSelector: sharedienDam.enableDamSelector ?? false,
8
+ damUrl: sharedienDam.damUrl,
9
+ damScriptUrl: sharedienDam.damScriptUrl,
10
+ }
11
+ };
12
+ if (!configuration.fieldTypes.picture) {
13
+ configuration.fieldTypes.picture = {
14
+ editor: () => null,
15
+ variantButtons: []
16
+ };
17
+ }
18
+ if (!configuration.fieldTypes.picture.variantButtons) {
19
+ configuration.fieldTypes.picture.variantButtons = [];
20
+ }
21
+ // Add DAM selector button as a variant button (appears for each picture variant)
22
+ const buttonExists = configuration.fieldTypes.picture.variantButtons.some((btn) => btn.id === DamSelectorButton.id);
23
+ if (!buttonExists) {
24
+ configuration.fieldTypes.picture.variantButtons.push(DamSelectorButton);
25
+ }
26
+ return configuration;
27
+ }
28
+ export { DamSelector, DamSelectorButton };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,qBAAqB,CACnC,aAAkC,EAClC,YAAmC;IAEnC,aAAa,CAAC,UAAU,GAAG;QACzB,GAAG,aAAa,CAAC,UAAU;QAC3B,YAAY,EAAE;YACZ,iBAAiB,EAAE,YAAY,CAAC,iBAAiB,IAAI,KAAK;YAC1D,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,YAAY,EAAE,YAAY,CAAC,YAAY;SACxC;KACF,CAAC;IAEF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACtC,aAAa,CAAC,UAAU,CAAC,OAAO,GAAG;YACjC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,cAAc,EAAE,EAAE;SACnB,CAAA;IACH,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QACrD,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;IACvD,CAAC;IAED,iFAAiF;IACjF,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CACvE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,CACzC,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type DamSelectorProps = {
2
+ language?: string;
3
+ };
4
+ export type DamImageValue = {
5
+ mediaId: string | undefined;
6
+ videoId: string | undefined;
7
+ };
8
+ export type SharedienDamExtension = {
9
+ enableDamSelector?: boolean;
10
+ damUrl?: string;
11
+ damScriptUrl?: string;
12
+ };
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parhelia/sharedien-dam",
3
- "version": "0.1.11652",
3
+ "version": "0.1.11666",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"