0.1.6 • Published 2 years ago
tweakpane-media v0.1.6
tweakpane-media
Add image, video for Tweakpane. Based on leochocolat/tweakpane-plugin-media
Features
- ✨Highly customizable
- ✨Easy to use
- ✨Small size
- ✨Better support for ThreeJS
Usage
- Overview
import {
    PluginVideoInputParams,
    PluginVideoInput,
    PluginImageInputParams,
    PluginImageInput,
} from 'tweakpane-media';
const pane = new Pane();
pane.registerPlugin({plugins: [PluginVideoInput, PluginImageInput]});
//OR
<script src="../path/to/tweakpane.js"></script>
<script src="../path/to/tweakpane-media.min.js"></script>
<script>
    const pane = new Tweakpane.Pane();
    pane.registerPlugin({
        plugins: [
            TweakpaneMediaPlugin.PluginImageInput,
            TweakpaneMediaPlugin.PluginVideoInput,
        ],
    });
</script>
// <= 0.0.x
const PARAMS = {
	image: './image.png',
	video: './video.mp4',
};
// >= 0.1.x
const PARAMS = {
	image: {src: './image.png', checked: true},
	video: {src: './video.mp4', checked: true},
};
pane
    .addInput(PARAMS, 'image', {
        label: 'Image',
        view: 'image',
        containerProps: {},
        imgProps: {
            style: {
                width: '100px',
            },
        },
        inputImageProps: {},
        labelImageProps: {},
        containerCheckBoxProps: {},
        checkBoxProps: {},
        labelCheckBoxProps: {},
        buttonClearProps: {
            children: 'Clear',
        }
    } as PluginImageInputParams)
    .on('change', (ev) => {
        console.log(ev.value);
    });
pane
    .addInput(PARAMS, 'video', {
        label: 'Video',
        view: 'video',
        containerProps: {},
        videoProps: {
            loop: true,
            autoplay: true,
            muted: true,
            playsinline: true,
            width: 100,
            height: 90,
            style: {
                objectFit: 'cover',
            },
        }
        inputVideoProps: {},
        labelVideoProps: {},
        containerCheckBoxProps: {},
        checkBoxProps: {},
        labelCheckBoxProps: {},
        buttonClearProps: {
            children: 'Clear',
        }
    } as PluginVideoInputParams)
    .on('change', (ev) => {
        console.log(ev.value);
    });- Custom checkbox similar Tweakpane core checkbox
<script>
	pane
		.addInput(PARAMS, 'video', {
			label: 'Video',
			view: 'video',
			containerProps: {},
			videoProps: {
				loop: true,
				autoplay: true,
				muted: true,
				playsinline: true,
				width: 100,
				height: 90,
				style: {objectFit: 'cover'},
			},
			inputVideoProps: {},
			labelVideoProps: {},
			containerCheckBoxProps: {},
			checkBoxProps: {},
			labelCheckBoxProps: {},
			buttonClearProps: {children: 'Clear'},
			config: {templateCheckBox: 'tweakpane'},
		})
		.on('change', (ev) => {
			console.log(ev.value);
		});
</script>- Work with React element, Tailwind
import {TiDeleteOutline} from 'react-icons/ti';
import {renderToStaticMarkup} from 'react-dom/server';
const configUI = {
	buttonClearProps: {
		innerHTML: renderToStaticMarkup(
			TiDeleteOutline({
				size: 19,
				className: 'hover:text-slate-400 text-black',
			}),
		),
	},
	containerProps: {
		className: 'gap-1 justify-between',
	},
	labelImageProps: {
		className: 'border border-black hover:border-slate-300 rounded-sm',
	},
	config: {templateCheckBox: 'tweakpane'},
};...
Migrate
0.0.x -> 0.1.x
- I added checked(checkbox's state) toev.value, soev.valueis not a string anymore, it's object{src: string, checked: boolean}
Limitation
I don't know
Other
0.1.4
2 years ago
0.1.3
2 years ago
0.1.6
2 years ago
0.1.5
2 years ago
0.1.2
3 years ago
0.1.1
3 years ago
0.0.12
3 years ago
0.1.0
3 years ago
0.0.11
3 years ago
0.0.10
3 years ago
0.0.9
3 years ago
0.0.8
3 years ago
0.0.7
3 years ago
0.0.6
3 years ago
0.0.5
3 years ago
0.0.4
3 years ago
0.0.3
3 years ago
0.0.2
3 years ago
0.0.1
3 years ago