attached-windows
Version:
Using Chrome extension API attach multiple normal and/or popup windows together that behave like a single window.
140 lines (103 loc) • 4.72 kB
Markdown
attached-windows<br>
[](https://www.npmjs.com/package/attached-windows)
[](https://packagephobia.now.sh/result?p=attached-windows)
[](https://www.npmjs.com/package/attached-windows)
[](https://github.com/SheikhAminul/attached-windows/blob/main/LICENSE)
================
Use attached-windows module in your Chrome extension to attach multiple normal and/or popup windows together that behave like a single window.
## Table of Contents
* [Features](#features)
* [Install](#install)
* [Usage](#usage)
* [API Reference](#api-reference)
* [Contributing](#contributing)
* [License](#license)
* [Author](#author)
## Features
* Attaches multiple windows to each other.
* Keeps track of the state, position, and size of each window.
* Supports normal and popup window types.
* Automatically updates the position and size of attached windows when one of them is resized or closed.
## Install
```plaintext
npm i attached-windows
```
## Usage
A minimal example of attaching 3 windows:
```javascript
import AttachedWindows from 'attached-windows'
import { AttachedWindowsConfiguration } from 'attached-windows'
const configuration: AttachedWindowsConfiguration = {
container: {
top: 0,
left: 0,
width: 1300,
height: 600,
state: 'normal'
},
windows: [
{
id: (await chrome.windows.create({ type: 'normal', url: 'https://twitter.com/' })).id as number,
widthFraction: 0.5,
isPrimary: true,
isHidden: false,
type: 'normal'
},
{
id: (await chrome.windows.create({ type: 'normal', url: 'https://www.google.com/' })).id as number,
widthFraction: 0.225,
isPrimary: false,
type: 'popup'
},
{
id: (await chrome.windows.create({ type: 'normal', url: 'https://www.github.com/' })).id as number,
widthFraction: 0.25,
isPrimary: false,
type: 'popup'
}
]
}
AttachedWindows.initialize(configuration)
```
Terminates the AttachedWindows instance and close attached windows:
```javascript
AttachedWindows.terminate({ closeWindows: true, closePrimary: false })
```
You can specify the options `closeWindows` and `closePrimary` to control if all windows or just the primary window should be closed.
## API Reference
### Interfaces
`AttachedWindowsContainer` - An interface that represents the configuration of the attached windows container.<br>
Properties:
- `top`: number
- `left`: number
- `width`: number
- `height`: number
- `state`: 'normal' | 'minimized'
`AttachedWindowsWindow` - An interface that represents the configuration of a single window within the container.<br>
Properties:
- `id`: number
- `name`: any (optional)
- `widthFraction`: number
- `isPrimary`: boolean (optional)
- `isHidden`: boolean (optional)
- `type`: 'normal' | 'popup'
- `bounds`: `AttachedWindowsContainer`
`AttachedWindowsConfiguration` - An interface that represents the configuration for the AttachedWindows class.<br>
Properties:
- `container`: `AttachedWindowsContainer`
- `windows`: `AttachedWindowsWindow[]`
### Classes
`AttachedWindows` - The main class for managing attached windows.
Properties:
- `onRemoveAttachedWindow`: Function (optional)
Methods:
- `initialize`: A method that initializes and attaches multiple windows. The input parameter `configuration` is an object of type `AttachedWindowsConfiguration` that includes the information required to initialize the attached windows.
- `terminate`: A method that terminates the AttachedWindows instance and closes the attached windows. You can specify the options `closeWindows` and `closePrimary` to control if all windows or just the primary window should be closed.
## Contributing
You are welcome to contribute! If you are adding a feature or fixing a bug, please contribute to the [GitHub repository](https://github.com/SheikhAminul/attached-windows/).
## License
attached-windows is licensed under the [MIT license](https://github.com/SheikhAminul/attached-windows/blob/main/LICENSE).
## Author
|[](https://github.com/SheikhAminul)|
|:---:|
|[@SheikhAminul](https://github.com/SheikhAminul)|