@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
32 lines • 1.2 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
/**
* Hook for managing source code editing functionality
*/
export function useSourceEditing(_ref) {
var context = _ref.context,
selectedVariantKey = _ref.selectedVariantKey,
effectiveCode = _ref.effectiveCode,
selectedVariant = _ref.selectedVariant;
var contextSetCode = context == null ? void 0 : context.setCode;
var setSource = React.useCallback(function (source) {
if (contextSetCode) {
contextSetCode(function (currentCode) {
var newCode = {};
if (!currentCode) {
newCode = _extends({}, effectiveCode); // TODO: ensure all source are strings
}
newCode[selectedVariantKey] = _extends(_extends({}, newCode[selectedVariantKey] || selectedVariant), {}, {
source: source,
extraFiles: {}
});
return newCode;
});
} else {
console.warn('setCode is not available in the current context. Ensure you are using CodeControllerContext.');
}
}, [contextSetCode, selectedVariantKey, effectiveCode, selectedVariant]);
return {
setSource: contextSetCode ? setSource : undefined
};
}