/// type AmeDictionary = Record; // noinspection JSUnusedGlobalSymbols type KeysMatchingType = { [K in keyof T]: T[K] extends V ? K : never }[keyof T]; type AmeCssBorderStyle = 'none' | 'solid' | 'dashed' | 'dotted' | 'double' | 'groove' | 'ridge' | 'outset'; interface AmeCssBorderSettings { style: AmeCssBorderStyle; color: string; width: number; } type AmeObservablePropertiesOf = { [P in keyof T]: KnockoutObservable; } type AmeRecursiveObservablePropertiesOf = { [P in keyof T]: T[P] extends object ? AmeRecursiveObservablePropertiesOf : KnockoutObservable; } type Constructor = new (...args: any[]) => T; type WithRequiredKey = Omit & Required>; interface JQuery { //My jQuery typings are out of date, and are missing this signature for the "off" method //where the callback takes additional arguments. off(events: string, handler: (eventObject: JQueryEventObject, ...args: any[]) => any): JQuery; } /** * Partial type definition for the WordPress "wp" global. * Sure would be nice if WordPress provided this. */ interface AmePartialWpGlobal { codeEditor: { //See /wp-admin/js/code-editor.js for basic method documentation. initialize: (textarea: string|JQuery|Element, options: object) => any; }; media: { (attributes: { button: { text: string }; library: { type: string }; multiple: boolean; title: string }): any; attachment(id: number): any; }; editor: { remove: (id: string) => void; initialize: (id: string, settings: Partial) => any; }; hooks: { addFilter: (filterName: string, namespace: string, callback: (value: unknown, ...args: unknown[]) => unknown, priority?: number) => void; addAction: (actionName: string, namespace: string, callback: (...args: unknown[]) => unknown, priority?: number) => void; removeFilter: (filterName: string, namespace: string) => void; removeAction: (actionName: string, namespace: string) => void; applyFilters: (filterName: string, value: unknown, ...args: unknown[]) => unknown; doAction: (actionName: string, ...args: unknown[]) => void; }; } declare const wp: AmePartialWpGlobal; /** * Incomplete type definition for the settings object that can be passed to wp.editor.initialize(). */ interface WpEditorInitSettings { tinymce: boolean | { wpautop: boolean; toolbar1?: string, toolbar2?: string, toolbar3?: string, toolbar4?: string, }; quicktags: boolean | { buttons?: string; }; mediaButtons: boolean; } /** * Webpack will replace this with a boolean literal. Note that * when not using Webpack, it will be undefined, so a typeof check * is recommended. */ declare const AME_IS_PRODUCTION: boolean;