UNPKG

@r74tech/docusaurus-plugin-panzoom

Version:

A plugin to enable the panzoom component on SVG and other elements

51 lines (50 loc) 1.78 kB
"use strict"; 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; }