/** * [[include:modules/widget/file-selector/README.md]] * @packageDocumentation * @module modules/widget/file-selector */ // Jodit import type { IJodit } from 'jodit/types'; import type { ImageSelectorCallbacks } from 'jodit/modules/widget'; import { MediaLists } from 'jodit/modules/widget/search-selector/MediaLists'; // Style import './search-selector.less'; // Variable Section type imageFileType = 'image' | 'gif'; // Main section export const SearchSelectorWidget = ( editor: IJodit, callbacks: ImageSelectorCallbacks, fileType: imageFileType, close: () => void ): HTMLFormElement => { const fileTypeLowercase = fileType.toLowerCase(); const form: HTMLFormElement = editor.c.fromHTML( `
` + `
` + `' + `
` + '
' + `${ fileType === 'image' ? '
Photo By  Unsplash
' : '' }` + '
' ) as HTMLFormElement; const searchInput: HTMLSpanElement = form.querySelector( `.jodit-search-${fileTypeLowercase}__search > input` ) as HTMLDivElement; const resultContainer: HTMLDivElement = form.querySelector( `.jodit-search-${fileTypeLowercase}__search-result` ) as HTMLDivElement; const mediaLists = new MediaLists(editor, callbacks, fileType, close); if (mediaLists.mediaList?.element) { resultContainer.appendChild(mediaLists.mediaList?.element); } if (searchInput) { searchInput.addEventListener( 'input', editor.async.debounce(event => { // @ts-ignore mediaLists.search(event?.target?.value); }, editor.o.searchTimeout) ); } /** * Unsplash API Guidelines: https://unsplash.com/api-terms * Unsplash API Guidelines: https://support.giphy.com/hc/en-us/articles/360028134111-GIPHY-API-Terms-of-Service- */ // let license; // let licenseLink; // switch (fileType) { // case 'image': // license = 'Unsplash'; // licenseLink = 'https://unsplash.com/api-terms'; // break; // case 'gif': // license = 'Giphy'; // licenseLink = // 'https://support.giphy.com/hc/en-us/articles/360028134111-GIPHY-API-Terms-of-Service-'; // break; // } // if (license) { // form.appendChild( // editor.c.fromHTML( // `
Powered by ${license}
` // ) // ); // } return form; };