Best JavaScript code snippet using storybook-root
main.js
Source:main.js
1"use strict";2Hooks.on('renderPlaylistDirectory', (app, html, data) => {3 if(game.user?.isGM || game.user?.can('SETTINGS_MODIFY'))4 {5 html.find('.directory-footer')[0].style.display = 'inherit';6 let container = $(`<div class="footer-actions action-buttons flexrow"></div>`);7 let importButton = $(`<button class="import-json"><i class="fas fa-file-import"></i>Import Playlists</button>`);8 let exportButton = $(`<button class="export-json"><i class="fas fa-file-export"></i>Export Playlists</button>`);9 container.append(importButton);10 container.append(exportButton);11 html.find('.directory-footer').append(container);12 importButton.on('click', PIJ.openImportDialog);13 exportButton.on('click', PIJ.exportData);14 }15});16let PIJ = {17 // This is based on ClientDocumentMixin.exportToJSON()18 exportData: function(event) {19 let allData = {20 exportSource: {21 world: game.world.id,22 system: game.system.id,23 coreVersion: game.version,24 systemVersion: game.system.data.version,25 module: "playlist-import-json",26 moduleVersion: game.modules.get('playlist-import-json').data.version,27 },28 playlists: [],29 };30 for(let playlist of game.playlists)31 allData.playlists.push(playlist.toCompendium(null));32 saveDataToFile(JSON.stringify(allData, null, 2), "text/json", `fvtt-exported-playlists.json`);33 },34 35 openImportDialog: async function(event) {36 new Dialog({37 title: `Playlist Import JSON`,38 content: await renderTemplate("templates/apps/import-data.html",39 {40 hint1: `Select a JSON file from your computer to use as the playlist data to import.`,41 hint2: `Compatible with JSON files exported from this Foundry module or Roll20.`,42 }),43 buttons: {44 import: {45 icon: '<i class="fas fa-file-import"></i>',46 label: "Import",47 callback: PIJ.importJSON48 },49 no: {50 icon: '<i class="fas fa-times"></i>',51 label: "Cancel"52 }53 },54 default: "import"55 }, {56 width: 40057 }).render(true);58 },59 60 // This is mostly a copy of ClientDocumentMixin.importFromJSON()61 importJSON: function(html) {62 let form = html.find("form")[0];63 if ( !form.data.files.length ) return ui.notifications.error("You did not upload a data file!");64 readTextFromFile(form.data.files[0]).then(PIJ.parseJSON);65 },66 67 parseJSON: async function(json) {68 let data = JSON.parse(json);69 let fromRoll20 = (data.schema_version!==undefined);70 let playlistCount = 0;71 for(let playlistData of data.playlists)72 {73 try74 {75 let playlist = await PIJ.createPlaylist(playlistData, fromRoll20, data.exportSource);76 if(fromRoll20)77 {78 for(let sound of playlistData.songs)79 {80 await playlist.createEmbeddedDocuments(81 'PlaylistSound',82 [{83 name: sound.title,84 path: sound.track_id,85 repeat: sound.loop,86 volume: sound.volume/100,87 playing: sound.playing,88 //fade: sound.softstop, // idk how either of these work89 }],90 {},91 );92 }93 }94 playlistCount++;95 }96 catch(err)97 {98 if(typeof(err) == "string")99 ui.notifications.error(err);100 else101 ui.notifications.error("An exception occurred while importing playlists. Check the console.");102 console.error(err);103 }104 }105 ui.notifications.info(`${playlistCount} playlists imported.`);106 },107 108 createPlaylist: function(playlistData, fromRoll20, exportSource) {109 return new Promise(async (resolve, reject) => {110 let playlist = game.playlists?.contents.find((p) => p.name === playlistData.name);111 if(playlist)112 {113 if(playlist.getFlag('playlist-import-json', 'isImported'))114 await playlist.delete();115 else116 {117 reject(`Refused to import playlist "${playlistData.name}," because a playlist by that name already exists, which was not imported by this module.`);118 return;119 }120 }121 try {122 playlist = await Playlist.create({123 name: playlistData.name,124 mode: fromRoll20 ? PIJ.roll20Conv.mode[playlistData.mode] : playlistData.mode,125 playing: false,126 });127 if(!fromRoll20 && exportSource)128 await PIJ.reimportPlaylist(playlist, playlistData, exportSource);129 await playlist?.setFlag('playlist-import-json', 'isImported', true);130 resolve(playlist);131 } catch (error) {132 reject(error);133 }134 });135 },136 137 // This is based on ClientDocumentMixin.importFromJSON()138 reimportPlaylist: function(playlist, playlistData, exportSource) {139 playlistData._id = playlist.id;140 playlistData = playlist.collection.fromCompendium(playlistData, {addFlags: false, keepId: true});141 let d = new playlist.constructor.schema(playlistData);142 // Preserve certain fields143 let {folder, sort, permission} = playlist.data;144 playlist.data.update(foundry.utils.mergeObject(d.toObject(), {folder, sort, permission}), {recursive: false});145 return playlist.update(playlist.toObject(), {diff: false, recursive: false}).then(doc => {146 return doc;147 });148 },149 150 roll20Conv: {151 mode: {152 s: CONST.PLAYLIST_MODES.SHUFFLE,153 },154 },...
index.js
Source:index.js
1/**2 * External dependencies3 */4import { Link } from 'react-router-dom';5/**6 * WordPress dependencies7 */8import { useDispatch, useSelect } from '@wordpress/data';9import { __, sprintf } from '@wordpress/i18n';10import { useEffect, useState } from '@wordpress/element';11import {12 Button,13 Card,14 CardHeader,15 CardBody,16 Flex,17} from '@wordpress/components';18import { dateI18n } from '@wordpress/date';19/**20 * Internal dependencies21 */22import { STORE_NAME } from '@ithemes/security.import-export.data';23import { PageHeader, useNavigation } from '@ithemes/security.pages.settings';24import {25 CheckboxGroupControl,26 FlexSpacer,27 ResultSummary,28} from '@ithemes/security-components';29import { withNavigate } from '@ithemes/security-hocs';30import {31 RoleMapping,32 UserMapping,33 WordPressConnectHeader,34} from '../../components';35import './style.scss';36export default function ImportSummary( { baseUrl } ) {37 const { goNext } = useNavigation();38 const { result, data, sources, exportSource, selectedSources } = useSelect(39 ( select ) => ( {40 result: select( STORE_NAME ).getImportExportValidationResult(),41 data: select( STORE_NAME ).getImportExportData(),42 sources: select( STORE_NAME ).getSources(),43 exportSource: select( STORE_NAME ).getImportExportSource(),44 selectedSources: select( STORE_NAME ).getImportSources(),45 } ),46 []47 );48 const {49 applyExportData,50 editImportSources: setSelectedSources,51 } = useDispatch( STORE_NAME );52 useEffect( () => {53 setSelectedSources( Object.keys( data?.sources || {} ) );54 }, [ data ] );55 const sourceOptions = sources56 .filter( ( source ) => data?.sources[ source.slug ] )57 .map( ( source ) => ( {58 value: source.slug,59 label: source.title,60 help: source.description,61 } ) );62 const [ isApplying, setIsApplying ] = useState( false );63 const onContinue = async () => {64 setIsApplying( true );65 await applyExportData();66 setIsApplying( false );67 goNext();68 };69 return (70 <>71 <PageHeader title={ __( 'Import Summary', 'it-l10n-ithemes-security-pro' ) } />72 <ResultSummary result={ result } />73 <Card>74 { exportSource === 'connect' && (75 <CardHeader>76 <WordPressConnectHeader isConnected />77 </CardHeader>78 ) }79 <ExportDetails data={ data } source={ exportSource } />80 </Card>81 { data && (82 <Card>83 <CardBody>84 <CheckboxGroupControl85 label={ __( 'Export Data', 'it-l10n-ithemes-security-pro' ) }86 help={ __(87 'Choose what iThemes Security info youâd like to import.',88 'it-l10n-ithemes-security-pro'89 ) }90 value={ selectedSources }91 onChange={ setSelectedSources }92 options={ sourceOptions }93 className="itsec-import-summary-select-data"94 />95 { selectedSources.length > 0 && (96 <>97 <UserMapping />98 <RoleMapping />99 </>100 ) }101 </CardBody>102 </Card>103 ) }104 <Flex>105 <Link106 to={ getBackLink( baseUrl, exportSource ) }107 isSecondary108 component={ withNavigate( Button ) }109 text={ __( 'Back', 'it-l10n-ithemes-security-pro' ) }110 />111 <FlexSpacer />112 <Button113 onClick={ onContinue }114 isPrimary115 isBusy={ isApplying }116 disabled={ isApplying || ! selectedSources.length }117 text={ __( 'Continue', 'it-l10n-ithemes-security-pro' ) }118 />119 </Flex>120 </>121 );122}123function ExportDetails( { data, source } ) {124 let title = data.metadata.title;125 if ( ! title && source !== 'connect' ) {126 title = sprintf(127 /* translators: 1. URL */128 __( 'Exported from %s', 'it-l10n-ithemes-security-pro' ),129 data.metadata.home_url130 );131 }132 return (133 <CardBody className="itsec-import-summary-export-details">134 { title && <h3>{ data.metadata.title }</h3> }135 <span>136 { sprintf(137 /* translators: 1. Date */138 __( 'Exported on %s', 'it-l10n-ithemes-security-pro' ),139 dateI18n( 'M j, Y', data.metadata.exported_at )140 ) }141 </span>142 <span>143 { sprintf(144 /* translators: 1. Version number */145 __( 'Version %s', 'it-l10n-ithemes-security-pro' ),146 data.metadata.version147 ) }148 </span>149 </CardBody>150 );151}152function getBackLink( baseUrl, source ) {153 switch ( source ) {154 case 'connect':155 return baseUrl + '/wordpress-select';156 default:157 return baseUrl;158 }...
gulpfile.js
Source:gulpfile.js
1/* Dependencies */2const gulp = require("gulp");3const sass = require("gulp-sass");4const cleanCSS = require("gulp-clean-css");5const concat = require("gulp-concat");6const uglify = require("gulp-uglify");7const ts = require("gulp-typescript");8const rename = require("gulp-rename");9const lineec = require("gulp-line-ending-corrector");10const clean = require("gulp-clean");11/* Directories */12const clientsource = "assets/client/";13const exportsource = "assets/export/";14const serversource = "assets/server/";15/* Tasks */16const directories = () => {17 return gulp.src("*.*", {read: false})18 .pipe(gulp.dest(exportsource))19 .pipe(gulp.dest(exportsource + "public"))20}21const copyViews = () => {22 return gulp.src(clientsource + "*.html")23 .pipe(lineec())24 .pipe(gulp.dest(exportsource));25}26const sassCompile = () => {27 return gulp.src(clientsource + "scss/*.scss")28 .pipe(sass().on("error", sass.logError))29 .pipe(gulp.dest(clientsource + "css/"));30}31const concatCSS = () => {32 return gulp.src(clientsource + "css/*.css")33 .pipe(concat("styles.min.css"))34 .pipe(cleanCSS())35 .pipe(lineec())36 .pipe(gulp.dest(exportsource + "public/"));37}38const typescript = () => {39 const tsProject = ts.createProject("tsconfig.json");40 return tsProject.src()41 .pipe(tsProject())42 .js.pipe(uglify())43 .pipe(lineec())44 .pipe(rename({45 extname: ".min.js"46 }))47 .pipe(gulp.dest(exportsource));48}49const cleanup = () => {50 return gulp.src(clientsource + "css", {read: false})51 .pipe(clean());52}53const refactor = gulp.series(directories, copyViews, sassCompile, concatCSS, typescript, cleanup);...
Using AI Code Generation
1import { exportSource } from 'storybook-root-exports';2export const story = () => <div>hello</div>;3export default {4 parameters: {5 docs: {6 page: () => {7 return exportSource('test.js', 'Test');8 },9 },10 },11};12import { addParameters } from '@storybook/react';13import { SourceDecorator } from 'storybook-root-exports';14addParameters({15 docs: {16 prepareForInline: (storyFn) => storyFn(),17 },18});19export const decorators = [SourceDecorator];20export const decorators = [SourceDecorator];21import { exportSource } from 'storybook-root-exports';22export const story = () => <div>hello</div>;23export default {24 parameters: {25 docs: {26 page: () => {27 return exportSource('test.js', 'Test');28 },29 },30 },31};32import { addParameters } from '@storybook/react';33import { SourceDecorator } from 'storybook-root-exports';34addParameters({35 docs: {36 prepareForInline: (storyFn) => storyFn(),37 },38});39export const decorators = [SourceDecorator];40export const decorators = [SourceDecorator];
Using AI Code Generation
1export { default } from 'storybook-root'2import Button from 'components/Button'3import Card from 'components/Card'4import Input from 'components/Input'5import Link from 'components/Link'6import Text from 'components/Text'7export {8}9import Button from './Button'10import React from 'react'11import PropTypes from 'prop-types'12import classNames from 'classnames'13import './Button.css'14const Button = ({ children, className, ...props }) => (15 className={classNames('Button', className)}16 {...props}17 {children}18Button.propTypes = {19}20Button.defaultProps = {21}22.Button {23 background-color: red;24}25import Card from './Card'26import React from 'react'27import PropTypes from 'prop-types'28import classNames from 'classnames'29import './Card.css'30const Card = ({ children, className, ...props }) => (31 className={classNames('Card', className)}32 {...props}33 {children}34Card.propTypes = {35}36Card.defaultProps = {37}38.Card {39 background-color: blue;40}41import Input from './Input'42import React from 'react'43import PropTypes from 'prop-types'44import classNames from 'classnames'45import './Input.css'46const Input = ({ children, className, ...props }) => (47 className={classNames('Input', className)}48 {...props}49 {children}50Input.propTypes = {51}52Input.defaultProps = {53}
Using AI Code Generation
1const { exportSource } = require('storybook-root');2const { Storybook } = require('storybook-root');3const path = require('path');4const storybook = new Storybook();5storybook.exportSource({6 sourceDir: path.join(__dirname, 'src'),7 outputDir: path.join(__dirname, 'dist'),8});9import { Button } from 'storybook-root';10import { Button } from 'storybook-root/dist/components/Button/Button.js';11import { Button } from 'storybook-root';12import { Button } from 'storybook-root/components/Button/Button.js';13import { Button } from 'storybook-root';14import { Button } from 'storybook-root/components/Button/Button.js';15import { Button } from 'storybook-root';16import { Button } from 'storybook-root/dist/components/Button/Button.js';17import { Button } from 'storybook-root';18import { Button } from 'storybook-root/dist/components/Button/Button.js';19import { Button } from 'storybook-root';20import { Button } from 'storybook-root/components/Button/Button.js';21import { Button } from 'storybook-root';22import { Button } from 'storybook-root/dist/components/Button/Button.js';23import { Button } from 'storybook-root';24import { Button } from 'storybook-root/dist/components/Button/Button.js';25import { Button } from 'storybook-root';26import { Button } from 'storybook-root/components/Button/Button.js';27import { Button } from 'storybook-root';28import { Button } from 'storybook-root/dist/components/Button/Button.js';29import { Button } from 'storybook-root';30import { Button } from 'storybook-root/dist/components/Button/Button.js';31import { Button } from 'storybook-root
Using AI Code Generation
1const { exportSource } = require('storybook-root-cause');2const { exportSource } = require('storybook-root-cause');3exportSource({4});5{6 "scripts": {7 }8}9import React from 'react';10import { render, screen } from '@testing-library/react';11import { Button } from '../src/Button';12test('renders Button', () => {13 render(<Button />);14 const buttonElement = screen.getByText(/Button/i);15 expect(buttonElement).toBeInTheDocument();16});17 ✓ renders Button (17 ms)
Using AI Code Generation
1const storybook = require("storybook-root");2const copyDir = require("copy-dir");3const path = require("path");4storybook.exportSource("/path/to/server", {5})6 .then(() => {7 console.log("done");8 })9 .catch(err => {10 console.log(err);11 });
Using AI Code Generation
1import { exportSource } from 'storybook-root-exports';2exportSource('storybook-react', 'react-component', 'ReactComponent');3import { ReactComponent } from 'storybook-react';4### exportSource(packageName, sourcePath, exportName)5| exportName | string | The name of the export. This is the name that will be used to import the module in the consumer app. |6| importSource | function | A function that takes the argument `packageName` and returns the exported module from the package. |
Using AI Code Generation
1import { exportSource } from "storybook-root-exports"2exportSource({3})4{5 "scripts": {6 }7}8import { addDecorator } from "@storybook/react";9import { withInfo } from "@storybook/addon-info";10import { withA11y } from "@storybook/addon-a11y";11import { withKnobs } from "@storybook/addon-knobs";12import { withThemesProvider } from "storybook-addon-styled-component-theme";13import { withPerformance } from "storybook-addon-performance";14import { withTests } from "@storybook/addon-jest";15import { withConsole } from "@storybook/addon-console";16import { withViewport } from "@storybook/addon-viewport";17import { withRTL } from "storybook-addon-rtl";18import { withContexts } from "@storybook/addon-contexts/react";19import { withRedux } from "addon-redux/withRedux";20import { withState } from "@dump247/storybook-state";21import { withPropsTable } from "storybook-addon-react-docgen";22import { withCode } from "storybook-addon-code";23import { withNextRouter } from "storybook-addon-next-router";24import { withPolymer } from "storybook-addon-polymer";25import { withHTML } from "@whitespace/storybook-addon-html/react";26import { withA11y as withA11yReact } from "@storybook/addon-a11y/react";27import { withA11y as withA11yVue } from "@storybook/addon-a11y/vue";28import { withA11y as withA11yAngular } from "@storybook/addon-a11y/angular";29import { withA11y as withA11ySvelte } from "@storybook/addon-a11y/svelte";30import { withA11y as withA11yEmber } from "@storybook/addon-a11y/ember";31import { withA11y as withA11yMithril } from "@storybook/addon-a11y/mithril";
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!