@r74tech/docusaurus-plugin-panzoom
Version:
A plugin to enable the panzoom component on SVG and other elements
51 lines (50 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PanZoomPlugin = void 0;
exports.validatedThemeConfig = validatedThemeConfig;
const utils_validation_1 = require("@docusaurus/utils-validation");
const PanzoomPluginOptions_1 = require("./PanzoomPluginOptions");
const path_1 = require("path");
/**
* Main module for the PanZoom plugin
* @param context
* @param options
* @returns
*/
const PanZoomPlugin = (_context, _options) => {
return {
name: 'docusaurus-plugin-panzoom',
getClientModules() {
return [(0, path_1.resolve)(__dirname, './PanZoom'), (0, path_1.resolve)(__dirname, './styles/panzoom.css')];
},
};
};
exports.PanZoomPlugin = PanZoomPlugin;
// Extract the valid toolbar position values from the enum
const validToolbarPositions = Object.values(PanzoomPluginOptions_1.PanZoomPluginToolbarPosition);
/**
* Theme validation rules for this plugin
*/
const panZoomValidator = utils_validation_1.Joi.object({
zoom: utils_validation_1.Joi.object({
selectors: utils_validation_1.Joi.array(),
wrap: utils_validation_1.Joi.boolean(),
timeout: utils_validation_1.Joi.number(),
excludeClass: utils_validation_1.Joi.string(),
toolbar: utils_validation_1.Joi.object({
enabled: utils_validation_1.Joi.boolean(),
position: utils_validation_1.Joi.string().valid(...validToolbarPositions),
opacity: utils_validation_1.Joi.number().min(0).max(1),
}),
}),
});
/**
* Add a validation for the theme configuration
* @param data
* @returns
*/
function validatedThemeConfig(data) {
const { themeConfig, validate } = data;
const validated = validate(panZoomValidator, themeConfig);
return validated;
}