Skip to content

Commit e051bd2

Browse files
committed
feat(player): new selector tailwind plugin option
1 parent a481351 commit e051bd2

4 files changed

Lines changed: 27 additions & 71 deletions

File tree

packages/vidstack/src/tailwind.test.ts

Lines changed: 21 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,16 @@ async function run(content: string, options?: PluginOptions) {
3636
corePlugins: { preflight: false },
3737
plugins: [vidstackPlugin(options)],
3838
}),
39-
]).process(['@tailwind components;', '@tailwind utilities;'].join('\n'), {
40-
from: `${path.resolve(__filename)}?test=${'should create variants'}`,
41-
}).css;
39+
])
40+
.process(['@tailwind components;', '@tailwind utilities;'].join('\n'), {
41+
from: `${path.resolve(__filename)}?test=${'should create variants'}`,
42+
})
43+
.then((c) => c.css);
4244
}
4345

4446
it('should create media variants', async () => {
45-
const content = mediaAttributes.map((name) => `media-${name}:hidden`).join(' ');
46-
const css = await run(content);
47+
const content = mediaAttributes.map((name) => `media-${name}:hidden`).join(' '),
48+
css = await run(content);
4749
expect(css).toMatchInlineSnapshot(`
4850
"div[data-autoplay] .media-autoplay\\\\:hidden {
4951
display: none
@@ -109,8 +111,8 @@ it('should create media variants', async () => {
109111
});
110112

111113
it('should create _not_ media variants', async () => {
112-
const content = mediaAttributes.map((name) => `not-media-${name}:hidden`).join(' ');
113-
const css = await run(content);
114+
const content = mediaAttributes.map((name) => `not-media-${name}:hidden`).join(' '),
115+
css = await run(content);
114116
expect(css).toMatchInlineSnapshot(`
115117
"div:not([data-autoplay]) .not-media-autoplay\\\\:hidden {
116118
display: none
@@ -176,67 +178,20 @@ it('should create _not_ media variants', async () => {
176178
});
177179

178180
it('should use web components option', async () => {
179-
const content = mediaAttributes.map((name) => `media-${name}:hidden`).join(' ');
180-
const css = await run(content, { webComponents: true });
181+
const content = 'media-playing:hidden',
182+
css = await run(content, { webComponents: true });
181183
expect(css).toMatchInlineSnapshot(`
182-
"media-player[data-autoplay] .media-autoplay\\\\:hidden {
184+
"media-player[data-playing] .media-playing\\\\:hidden {
183185
display: none
184-
}
185-
media-player[data-autoplay-error] .media-autoplay-error\\\\:hidden {
186-
display: none
187-
}
188-
media-player[data-buffering] .media-buffering\\\\:hidden {
189-
display: none
190-
}
191-
media-player[data-can-fullscreen] .media-can-fullscreen\\\\:hidden {
192-
display: none
193-
}
194-
media-player[data-can-load] .media-can-load\\\\:hidden {
195-
display: none
196-
}
197-
media-player[data-can-play] .media-can-play\\\\:hidden {
198-
display: none
199-
}
200-
media-player[data-ended] .media-ended\\\\:hidden {
201-
display: none
202-
}
203-
media-player[data-error] .media-error\\\\:hidden {
204-
display: none
205-
}
206-
media-player[data-fullscreen] .media-fullscreen\\\\:hidden {
207-
display: none
208-
}
209-
media-player[data-controls] .media-controls\\\\:hidden {
210-
display: none
211-
}
212-
media-player[data-loop] .media-loop\\\\:hidden {
213-
display: none
214-
}
215-
media-player[data-live] .media-live\\\\:hidden {
216-
display: none
217-
}
218-
media-player[data-live-edge] .media-live-edge\\\\:hidden {
219-
display: none
220-
}
221-
media-player[data-muted] .media-muted\\\\:hidden {
222-
display: none
223-
}
224-
media-player[data-paused] .media-paused\\\\:hidden {
225-
display: none
226-
}
227-
media-player[data-playing] .media-playing\\\\:hidden {
228-
display: none
229-
}
230-
media-player[data-playsinline] .media-playsinline\\\\:hidden {
231-
display: none
232-
}
233-
media-player[data-seeking] .media-seeking\\\\:hidden {
234-
display: none
235-
}
236-
media-player[data-started] .media-started\\\\:hidden {
237-
display: none
238-
}
239-
media-player[data-waiting] .media-waiting\\\\:hidden {
186+
}"
187+
`);
188+
});
189+
190+
it('should use player class option', async () => {
191+
const content = 'media-playing:hidden',
192+
css = await run(content, { selector: '.media-player' });
193+
expect(css).toMatchInlineSnapshot(`
194+
".media-player[data-playing] .media-playing\\\\:hidden {
240195
display: none
241196
}"
242197
`);

packages/vidstack/src/utils/time.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ describe(formatTime.name, function () {
6868
});
6969

7070
it('formats hours correctly if seconds >= 3600', function () {
71-
expect(formatTime(3600)).to.equal('1:0:00');
71+
expect(formatTime(3600)).to.equal('1:00:00');
7272
expect(formatTime(5025)).to.equal('1:23:45');
7373
expect(formatTime(45296)).to.equal('12:34:56');
7474
});
7575

7676
it('it should pad hours if `shouldPadHours` is true', function () {
77-
expect(formatTime(3600, true)).to.equal('01:0:00');
77+
expect(formatTime(3600, true)).to.equal('01:00:00');
7878
});
7979

8080
it('it should display hours if `shouldAlwaysShowHours` is true', function () {

packages/vidstack/tailwind.cjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ const mediaAttributes = [
3030
];
3131

3232
module.exports = createPlugin.withOptions(function (options) {
33-
const playerId = options?.webComponents ? 'media-player' : 'div',
33+
const selector = options?.selector ?? (options?.webComponents ? 'media-player' : 'div'),
3434
prefixOpt = options?.prefix ?? options?.mediaPrefix,
3535
prefix = prefixOpt ? `${prefixOpt}-` : 'media-';
3636

3737
return function ({ addVariant }) {
3838
mediaAttributes.forEach((name) => {
39-
addVariant(`${prefix}${name}`, `${playerId}[data-${name}] &`);
40-
addVariant(`not-${prefix}${name}`, `${playerId}:not([data-${name}]) &`);
39+
addVariant(`${prefix}${name}`, `${selector}[data-${name}] &`);
40+
addVariant(`not-${prefix}${name}`, `${selector}:not([data-${name}]) &`);
4141
});
4242
};
4343
});

packages/vidstack/tailwind.d.cts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ declare namespace plugin {
99
export = plugin;
1010

1111
export interface PluginOptions {
12+
selector?: string;
1213
prefix?: string;
1314
webComponents?: boolean;
1415
}

0 commit comments

Comments
 (0)