@contentstack/live-preview-utils
Version:
Contentstack provides the Live Preview SDK to establish a communication channel between the various Contentstack SDKs and your website, transmitting live changes to the preview pane.
58 lines (57 loc) • 1.64 kB
JavaScript
import "../../chunk-5WRI5ZAA.js";
// src/visualBuilder/utils/handleInlineEditableField.ts
import { ALLOWED_INLINE_EDITABLE_FIELD } from "./constants.js";
import { isFieldMultiple } from "./isFieldMultiple.js";
import { enableInlineEditing } from "./enableInlineEditing.js";
function handleInlineEditableField({
fieldType,
fieldSchema,
fieldMetadata,
expectedFieldData,
editableElement,
elements
}) {
if (!ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType)) return;
const index = Number(
fieldMetadata.instance.fieldPathWithIndex.split(".").at(-1)
);
const isInstance = Number.isFinite(index);
if (isFieldMultiple(fieldSchema)) {
let expectedFieldInstanceData = null;
if (Array.isArray(expectedFieldData)) {
if (!isInstance) {
return;
}
if (index >= expectedFieldData.length) {
} else {
expectedFieldInstanceData = expectedFieldData.at(index);
}
} else {
expectedFieldInstanceData = expectedFieldData;
}
enableInlineEditing({
fieldType,
expectedFieldData: expectedFieldInstanceData,
editableElement,
elements
});
} else {
let expectedFieldInstanceData = null;
if (isInstance) {
if (index !== 0) {
return;
}
expectedFieldInstanceData = Array.isArray(expectedFieldData) ? expectedFieldData.at(0) : expectedFieldData;
}
enableInlineEditing({
fieldType,
expectedFieldData: expectedFieldInstanceData ?? expectedFieldData,
editableElement,
elements
});
}
}
export {
handleInlineEditableField
};
//# sourceMappingURL=handleInlineEditableField.js.map