
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
msc-any-pip
Advanced tools
Imaging what if we can let anything Picture-in-Picture (not only <video />) ?! Here comes <msc-any-pip /> to let it dream comes true. <msc-any-pip /> apply Document Picture-in-Picture API to given elements have Picture-in-Picture feature.
Imaging what if we can let anything Picture-in-Picture (not only <video />) ?! Here comes <msc-any-pip /> to let it dream comes true. <msc-any-pip /> apply Document Picture-in-Picture API to given elements have Picture-in-Picture feature.
<msc-any-pip /> is a web component. All we need to do is put the required script into your HTML document. Then follow <msc-any-pip />'s html structure and everything will be all set.
<script
type="module"
src="https://unpkg.com/msc-any-pip/mjs/wc-msc-any-pip.js">
</script>
Put <msc-any-pip /> into HTML document. It will have different functions and looks with attribute mutation.
<msc-any-pip>
<script type="application/json">
{
"winwidth": 450,
"winheight": 300,
"disallowreturntoopener": false,
"preferinitialwindowplacement": false,
"dismisswhenbacktoopener": false
}
</script>
<!-- Put any HTML element you like -->
<div class="element-i-like-to-have-pip">
...
...
...
</div>
</msc-any-pip>
Otherwise, developers could also choose remoteconfig
to fetch config for <msc-any-pip />.
<msc-any-pip
remoteconfig="https://your-domain/api-path"
...
></msc-any-pip>
<msc-any-pip /> could also use JavaScript to create DOM element. Here comes some examples.
<script type="module">
import { MscAnyPip } from 'https://your-domain/wc-msc-any-pip.js';
const template = document.querySelector('.my-template');
// use DOM api
const nodeA = document.createElement('msc-any-pip');
document.body.appendChild(nodeA);
nodeA.appendChild(template.content.cloneNode(true));
// new instance with Class
const nodeB = new MscAnyPip();
document.body.appendChild(nodeB);
nodeB.appendChild(template.content.cloneNode(true));
nodeB.winwidth = 450;
nodeB.winheight = 300;
// new instance with Class & default config
const config = {
winwidth: 450,
winheight: 300,
disallowreturntoopener: false,
preferinitialwindowplacement: true
};
const nodeC = new MscAnyPip(config);
document.body.appendChild(nodeC);
nodeC.appendChild(template.content.cloneNode(true));
</script>
Developers could apply styles to decorate <msc-any-pip />'s looking.
<style>
msc-any-pip {
--msc-any-pip-piping-text: 'Playing in Picture-in-Picture.';
--msc-any-pip-piping-color: #39e75f;
--msc-any-pip-piping-font-size: 16px;
--msc-any-pip-button-z-index: 1;
}
</style>
Otherwise delevelopers could also add className - align-container-size
to make <msc-any-pip />'s size same as container's size.(default is inline-size: 100%
only)
<msc-any-pip class="align-container-size">
...
</msc-any-pip>
<msc-any-pip /> supports some attributes to let it become more convenience & useful.
Set Picture-in-Picture window width. Default is <msc-any-pip />'s clientWidth
. (Picture-in-Picture's min window width is 300)
<msc-any-pip winwidth="450">
...
</msc-any-pip>
Set Picture-in-Picture window height. Default is <msc-any-pip />'s clientHeight
. (Picture-in-Picture's min window height is 300)
<msc-any-pip winheight="300">
...
</msc-any-pip>
Hides the "back to tab" button in the Picture-in-Picture window if true. It is false by default (not set).
<msc-any-pip disallowreturntoopener>
...
</msc-any-pip>
Open the Picture-in-Picture window in its default position and size if true. It is false by default (not set).
<msc-any-pip preferinitialwindowplacement>
...
</msc-any-pip>
Auto dismiss the Picture-in-Picture window when user switch back to the opener window if true. It is false by default (not set)..
<msc-any-pip dismisswhenbacktoopener>
...
</msc-any-pip>
Property Name | Type | Description |
---|---|---|
winwidth | Number | Getter / Setter for Picture-in-Picture window width. Default is <msc-any-pip />'s clientWidth. |
winheight | Number | Getter / Setter for Picture-in-Picture window height. Default is <msc-any-pip />'s clientHeight. |
disallowreturntoopener | Boolean | Getter / Setter for disallowreturntoopener. Hides the "back to tab" button in the Picture-in-Picture window if true. It is false by default. |
preferinitialwindowplacement | Boolean | Getter / Setter for preferinitialwindowplacement. Open the Picture-in-Picture window in its default position and size if true. It is false by default. |
dismisswhenbacktoopener | Boolean | Getter / Setter for dismisswhenbacktoopener. Auto dismiss the Picture-in-Picture window when user switch back to the opener window if true. It is false by default. |
Mathod Signature | Description |
---|---|
requestPictureInPicture | Request <msc-any-pip /> turn in Document Picture-in-Picture mode. |
Event Signature | Description |
---|---|
msc-any-pip-piping | Fired when user press confirm. |
msc-any-pip-pip-end | Fired when Picture-in-Picture end. |
FAQs
Imaging what if we can let anything Picture-in-Picture (not only <video />) ?! Here comes <msc-any-pip /> to let it dream comes true. <msc-any-pip /> apply Document Picture-in-Picture API to given elements have Picture-in-Picture feature.
We found that msc-any-pip demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.