mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-06-28 14:20:12 +00:00
[semantic-ui-embed] Different weak-type workaround.
This commit is contained in:
74
types/semantic-ui-embed/global.d.ts
vendored
74
types/semantic-ui-embed/global.d.ts
vendored
@@ -50,19 +50,43 @@ declare namespace SemanticUI {
|
||||
* Destroys instance and removes all events
|
||||
*/
|
||||
(behavior: 'destroy'): JQuery;
|
||||
<K extends keyof EmbedSettings>(behavior: 'setting', name: K, value?: undefined): EmbedSettings[K];
|
||||
<K extends keyof EmbedSettings>(behavior: 'setting', name: K, value: EmbedSettings[K]): JQuery;
|
||||
(behavior: 'setting', value: EmbedSettings.Param): JQuery;
|
||||
(settings?: EmbedSettings.Param): JQuery;
|
||||
<K extends keyof EmbedSettings>(behavior: 'setting', name: K, value?: undefined): EmbedSettings._Impl[K];
|
||||
<K extends keyof EmbedSettings>(behavior: 'setting', name: K, value: EmbedSettings._Impl[K]): JQuery;
|
||||
(behavior: 'setting', value: EmbedSettings): JQuery;
|
||||
(settings?: EmbedSettings): JQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link http://semantic-ui.com/modules/embed.html#/settings}
|
||||
*/
|
||||
interface EmbedSettings extends Pick<EmbedSettings._Impl, keyof EmbedSettings._Impl> { }
|
||||
type EmbedSettings = EmbedSettings.Param;
|
||||
|
||||
namespace EmbedSettings {
|
||||
type Param = EmbedSettings | object;
|
||||
type Param = (Pick<_Impl, 'url'> |
|
||||
Pick<_Impl, 'icon'> |
|
||||
Pick<_Impl, 'source'> |
|
||||
Pick<_Impl, 'id'> |
|
||||
Pick<_Impl, 'parameters'> |
|
||||
Pick<_Impl, 'autoplay'> |
|
||||
Pick<_Impl, 'color'> |
|
||||
Pick<_Impl, 'hd'> |
|
||||
Pick<_Impl, 'brandedUI'> |
|
||||
Pick<_Impl, 'onCreate'> |
|
||||
Pick<_Impl, 'onDisplay'> |
|
||||
Pick<_Impl, 'onPlaceholderDisplay'> |
|
||||
Pick<_Impl, 'onEmbed'> |
|
||||
Pick<_Impl, 'selector'> |
|
||||
Pick<_Impl, 'metadata'> |
|
||||
Pick<_Impl, 'className'> |
|
||||
Pick<_Impl, 'templates'> |
|
||||
Pick<_Impl, 'error'> |
|
||||
Pick<_Impl, 'namespace'> |
|
||||
Pick<_Impl, 'name'> |
|
||||
Pick<_Impl, 'silent'> |
|
||||
Pick<_Impl, 'debug'> |
|
||||
Pick<_Impl, 'performance'> |
|
||||
Pick<_Impl, 'verbose'>) &
|
||||
Partial<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
/**
|
||||
@@ -216,20 +240,23 @@ declare namespace SemanticUI {
|
||||
}
|
||||
|
||||
namespace Embed {
|
||||
interface ParametersSettings extends Pick<ParametersSettings._Impl, keyof ParametersSettings._Impl> { }
|
||||
type ParametersSettings = ParametersSettings._Impl;
|
||||
|
||||
namespace ParametersSettings {
|
||||
type Param = ParametersSettings | object;
|
||||
type Param = _Impl;
|
||||
|
||||
interface _Impl {
|
||||
[key: string]: any;
|
||||
}
|
||||
}
|
||||
|
||||
interface SelectorSettings extends Pick<SelectorSettings._Impl, keyof SelectorSettings._Impl> { }
|
||||
type SelectorSettings = SelectorSettings.Param;
|
||||
|
||||
namespace SelectorSettings {
|
||||
type Param = SelectorSettings | object;
|
||||
type Param = (Pick<_Impl, 'embed'> |
|
||||
Pick<_Impl, 'placeholder'> |
|
||||
Pick<_Impl, 'play'>) &
|
||||
Partial<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
/**
|
||||
@@ -247,10 +274,15 @@ declare namespace SemanticUI {
|
||||
}
|
||||
}
|
||||
|
||||
interface MetadataSettings extends Pick<MetadataSettings._Impl, keyof MetadataSettings._Impl> { }
|
||||
type MetadataSettings = MetadataSettings.Param;
|
||||
|
||||
namespace MetadataSettings {
|
||||
type Param = MetadataSettings | object;
|
||||
type Param = (Pick<_Impl, 'id'> |
|
||||
Pick<_Impl, 'icon'> |
|
||||
Pick<_Impl, 'placeholder'> |
|
||||
Pick<_Impl, 'source'> |
|
||||
Pick<_Impl, 'url'>) &
|
||||
Partial<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
/**
|
||||
@@ -276,10 +308,12 @@ declare namespace SemanticUI {
|
||||
}
|
||||
}
|
||||
|
||||
interface ClassNameSettings extends Pick<ClassNameSettings._Impl, keyof ClassNameSettings._Impl> { }
|
||||
type ClassNameSettings = ClassNameSettings.Param;
|
||||
|
||||
namespace ClassNameSettings {
|
||||
type Param = ClassNameSettings | object;
|
||||
type Param = (Pick<_Impl, 'active'> |
|
||||
Pick<_Impl, 'embed'>) &
|
||||
Partial<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
/**
|
||||
@@ -293,10 +327,12 @@ declare namespace SemanticUI {
|
||||
}
|
||||
}
|
||||
|
||||
interface TemplatesSettings extends Pick<TemplatesSettings._Impl, keyof TemplatesSettings._Impl> { }
|
||||
type TemplatesSettings = TemplatesSettings.Param;
|
||||
|
||||
namespace TemplatesSettings {
|
||||
type Param = TemplatesSettings | object;
|
||||
type Param = (Pick<_Impl, 'iframe'> |
|
||||
Pick<_Impl, 'placeholder'>) &
|
||||
Partial<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
/**
|
||||
@@ -310,10 +346,12 @@ declare namespace SemanticUI {
|
||||
}
|
||||
}
|
||||
|
||||
interface ErrorSettings extends Pick<ErrorSettings._Impl, keyof ErrorSettings._Impl> { }
|
||||
type ErrorSettings = ErrorSettings.Param;
|
||||
|
||||
namespace ErrorSettings {
|
||||
type Param = ErrorSettings | object;
|
||||
type Param = (Pick<_Impl, 'noURL'> |
|
||||
Pick<_Impl, 'method'>) &
|
||||
Partial<Pick<_Impl, keyof _Impl>>;
|
||||
|
||||
interface _Impl {
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
function test_embed_static() {
|
||||
$.fn.embed.settings.error.method = 'method';
|
||||
$.fn.embed.settings.error!.method = 'method';
|
||||
$.fn.embed.settings.namespace = 'namespace';
|
||||
$.fn.embed.settings.name = 'name';
|
||||
$.fn.embed.settings.silent = false;
|
||||
@@ -10,20 +10,21 @@ function test_embed_static() {
|
||||
|
||||
function test_embed() {
|
||||
const selector = '.ui.embed';
|
||||
$(selector).embed('change', 'source', 'id', 'url') === $();
|
||||
$(selector).embed('reset') === $();
|
||||
$(selector).embed('show') === $();
|
||||
$(selector).embed('hide') === $();
|
||||
$(selector).embed('get id') === 'get';
|
||||
$(selector).embed('get placeholder') === 'get';
|
||||
$(selector).embed('get sources') === 'get';
|
||||
$(selector).embed('get type') === 'get';
|
||||
$(selector).embed('get url') === 'get';
|
||||
$(selector).embed('change', 'source', 'id', 'url'); // $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed('reset'); // $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed('show'); // $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed('hide'); // $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed('get id'); // $ExpectType string
|
||||
$(selector).embed('get placeholder'); // $ExpectType string
|
||||
$(selector).embed('get sources'); // $ExpectType string
|
||||
$(selector).embed('get type'); // $ExpectType string
|
||||
$(selector).embed('get url'); // $ExpectType string
|
||||
$(selector).embed('has placeholder') === true;
|
||||
$(selector).embed('destroy') === $();
|
||||
$(selector).embed('setting', 'debug', undefined) === false;
|
||||
$(selector).embed('setting', 'debug') === false;
|
||||
$(selector).embed('setting', 'debug', true) === $();
|
||||
$(selector).embed('destroy'); // $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed('setting', 'debug', undefined); // $ExpectType boolean
|
||||
$(selector).embed('setting', 'debug'); // $ExpectType boolean
|
||||
$(selector).embed('setting', 'debug', true); // $ExpectType JQuery<HTMLElement>
|
||||
// $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed('setting', {
|
||||
namespace: 'namespace',
|
||||
name: 'name',
|
||||
@@ -31,7 +32,8 @@ function test_embed() {
|
||||
debug: true,
|
||||
performance: true,
|
||||
verbose: true
|
||||
}) === $();
|
||||
});
|
||||
// $ExpectType JQuery<HTMLElement>
|
||||
$(selector).embed({
|
||||
url: 'url',
|
||||
icon: 'icon',
|
||||
@@ -45,18 +47,19 @@ function test_embed() {
|
||||
hd: false,
|
||||
brandedUI: true,
|
||||
onCreate(url) {
|
||||
this === $();
|
||||
url === 'url';
|
||||
this; // $ExpectType JQuery<HTMLElement>
|
||||
url; // $ExpectType string
|
||||
},
|
||||
onDisplay() {
|
||||
this === $();
|
||||
this; // $ExpectType JQuery<HTMLElement>
|
||||
},
|
||||
onPlaceholderDisplay() {
|
||||
this === $();
|
||||
this; // $ExpectType JQuery<HTMLElement>
|
||||
},
|
||||
onEmbed(parameters) {
|
||||
this === $();
|
||||
parameters.key = 'value';
|
||||
this; // $ExpectType JQuery<HTMLElement>
|
||||
parameters; // $ExpectType _Impl
|
||||
|
||||
return parameters;
|
||||
},
|
||||
selector: {
|
||||
@@ -77,26 +80,32 @@ function test_embed() {
|
||||
},
|
||||
templates: {
|
||||
iframe(url, parameters) {
|
||||
url === 'url';
|
||||
parameters === 'parameters';
|
||||
return url + parameters;
|
||||
url; // $ExpectType string
|
||||
parameters; // $ExpectType string
|
||||
|
||||
return '<div></div>';
|
||||
},
|
||||
placeholder(image, icon) {
|
||||
image === 'image';
|
||||
icon === 'icon';
|
||||
return image + icon;
|
||||
image; // $ExpectType string
|
||||
icon; // $ExpectType string
|
||||
|
||||
return '<div></div>';
|
||||
}
|
||||
},
|
||||
error: {
|
||||
noURL: 'noURL',
|
||||
method: 'method'
|
||||
}
|
||||
}) === $();
|
||||
$(selector).embed() === $();
|
||||
});
|
||||
$(selector).embed(); // $ExpectType JQuery<HTMLElement>
|
||||
|
||||
$(selector).embed('foo'); // $ExpectError
|
||||
$(selector).embed({ foo: 'bar' }); // $ExpectError
|
||||
}
|
||||
|
||||
import embed = require('semantic-ui-embed');
|
||||
|
||||
function test_module() {
|
||||
embed; // $ExpectType Embed
|
||||
$.fn.embed = embed;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user