open-index/open-npm huggingface dataset:
npm package: @nstudio/nativescript-rad-imagepicker
Description: Whatsapp style imagepicker for NativeScript apps
Author: MultiShiv19
Latest version: 2.0.5

# NativeScript Rad Imagepicker Plugin ![apple](https://cdn3.iconfinder.com/data/icons/picons-social/57/16-apple-32.png) ![android](https://cdn4.iconfinder.com/data/icons/logos-3/228/android-32.png)

NativeScript plugin for whatsapp style image picking. 
This Plugin uses [PixImagePicker](https://github.com/akshay2211/PixImagePicker) for Android and [ImagePicker](https://github.com/hyperoslo/ImagePicker) for iOS

<img src="https://github.com/shiv19/nativescript-rad-imagepicker/blob/master/assets/demo-android.gif?raw=true" height="320" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://github.com/shiv19/nativescript-rad-imagepicker/blob/master/assets/demo-ios.gif" height="320" > 

## Installation

```javascript
tns plugin add @nstudio/nativescript-rad-imagepicker
```

## Usage 
	
```javascript
const RadImagepicker = require('@nstudio/nativescript-rad-imagepicker').RadImagepicker;
const PickerOptions = require('@nstudio/nativescript-rad-imagepicker').PickerOptions;
const radImagepicker = new RadImagepicker();
radImagepicker.pick(opts).then((selectedImages) => {
    if (selectedImages) {
        // Do something with selected images
        // currently 
        // the image will be of type nativescript image source
        // tns-core-modules/image-source
    }
});
```

## API

Following picker options are available
```javascript
PickerOptions {
    doneButtonTitle?: string; // only affects ios
    noImagesTitle?: string; // only affects ios
    allowVideoSelection?: boolean; // only affects ios
    imageLimit?: number;
}
```

Picker api
```javascript
pick(options: PickerOptions): Promise<Array<any>>;
```

When the promise resolves, you will get array of imageSource

### Theming

#### Android
Add desired colors in `app/App_Resources/Android/src/main/res/values/colors.xml`
```xml
<color name="ns_blue">#272734</color>
<color name="colorPrimaryPix">#075e54</color>
<color name="colorPrimaryLightPix">#80075e54</color>
```

### Permissions

### Android

Make sure these lines are in your Manifest.xml

```xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
```

### iOS

Add these to info.plist, you can add more descriptive message here
```xml
<key>NSCameraUsageDescription</key>
<string>This app uses your camera</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app uses your photo library</string>
```

----

Made With ♥️ for {N} Community by [nStudio](https://nstudio.io)

Special Thanks to [Richard Smith](https://github.com/dicksmith) and [Osei Fortune](https://github.com/triniwiz) :)
    
## License

Apache License Version 2.0, January 2004
npm package: @nstudio/nativescript-rich-paste
Description: Rich pasteboard handling for input controls in NativeScript.
Author: nstudio
Latest version: 1.0.0

# @nstudio/nativescript-rich-paste

Rich paste and drag-and-drop support for NativeScript text inputs. Handles images, GIFs, files, and text from the clipboard. 

```
npm install @nstudio/nativescript-rich-paste
```

Compatible with Angular, React, Solid, Svelte and Vue.

Drop-in replacements for [TextField](https://docs.nativescript.org/ui/text-field) and [TextView](https://docs.nativescript.org/ui/text-view) which work identical but with enhanced rich paste features. Just append `RichPaste` to the end of the element name and register it in your framework of choice.

## Usage

```xml
<Page xmlns:pi="@nstudio/nativescript-rich-paste">
  <pi:TextFieldRichPaste accept="all" hint="Paste rich data..." paste="{{ onPaste }}" />
</Page>
```

```typescript
import { PasteEventData } from '@nstudio/nativescript-rich-paste';

onPaste(args: PasteEventData) {
  const payload = args.data;
  switch (payload.type) {
    case 'text':
      console.log('Text:', payload.value);
      break;
    case 'images':
      payload.items.forEach((img) => {
        console.log(img.uri, img.mimeType, img.animated);
      });
      break;
    case 'files':
      payload.items.forEach((file) => {
        console.log(file.name, file.mimeType, file.size);
      });
      break;
  }
}
```

## Other Flavors

### Angular

```typescript
import { registerElement } from '@nativescript/angular';
import { TextFieldRichPaste, TextViewRichPaste } from '@nstudio/nativescript-rich-paste';

registerElement('TextFieldRichPaste', () => TextFieldRichPaste);
registerElement('TextViewRichPaste', () => TextViewRichPaste);
```

### React

```typescript
import { registerElement } from 'react-nativescript';
import { TextFieldRichPaste, TextViewRichPaste } from '@nstudio/nativescript-rich-paste';

registerElement('textFieldRichPaste', () => TextFieldRichPaste);
registerElement('textViewRichPaste', () => TextViewRichPaste);
```

### Solid

```typescript
import { registerElement } from 'dominative';
import { TextFieldRichPaste, TextViewRichPaste } from '@nstudio/nativescript-rich-paste';

registerElement('textFieldRichPaste', TextFieldRichPaste);
registerElement('textViewRichPaste', TextViewRichPaste);
```

### Svelte

```typescript
import { registerNativeViewElement } from '@nativescript-community/svelte-native/dom';
import { TextFieldRichPaste, TextViewRichPaste } from '@nstudio/nativescript-rich-paste';

registerNativeViewElement('textFieldRichPaste', () => TextFieldRichPaste);
registerNativeViewElement('textViewRichPaste', () => TextViewRichPaste);
```

### Vue

```typescript
import { registerElement } from 'nativescript-vue';
import { TextFieldRichPaste, TextViewRichPaste } from '@nstudio/nativescript-rich-paste';

registerElement('TextFieldRichPaste', () => TextFieldRichPaste);
registerElement('TextViewRichPaste', () => TextViewRichPaste);
```

## Docs

[https://plugins.nstudio.io/plugins/rich-paste](https://plugins.nstudio.io/plugins/rich-paste)

## License

Apache License Version 2.0
npm package: @nstudio/nativescript-shimmer
Description: Shimmer for NativeScript
Author: nstudio
Latest version: 1.0.7

# @nstudio/nativescript-shimmer

Shimmer for NativeScript

```javascript
npm install @nstudio/nativescript-shimmer
```

## Usage

```
<Page xmlns="http://schemas.nativescript.org/tns.xsd"
  xmlns:ui="@nstudio/nativescript-shimmer">
  ...
    <ui:Shimmer>
        <GridLayout>
            <ContentView height="20" width="65%" backgroundColor="#333"/>
        </GridLayout>
    </ui:Shimmer>

```

It can also be registered with various flavors, for example with Angular:

```
import { registerElement } from '@nativescript/angular';
import { Shimmer } from '@nstudio/nativescript-shimmer';

registerElement('Shimmer', () => Shimmer);

// can now be used in components:
<Shimmer>
    <GridLayout>
        <ContentView height="20" width="65%" backgroundColor="#333"/>
    </GridLayout>
</Shimmer>
```

### Properties

- `autoStart: boolean`: Default to `true`. `<Shimmer autoStart="false">` to disable starting automatically

**iOS Only**:

You can start shimmer on any view statically:

```ts
import { Shimmer } from '@nstudio/nativescript-shimmer';

loadedView(args) {
    view = args.object;
    // start shimmer
    Shimmer.start(view);
    // stop shimmer
    Shimmer.stop(view);
}
```

Android will always need a Shimmer instance to start the effect however you can statically stop the shimmer effect if that instance is passed into `Shimmer.stop(view /* shimmer instance */)`.

- `Shimmer.defaults`: you can adjust any of the default effect settings in your app (often in `app.ts` or `main.ts` before bootstrap depending on your flavor) to avoid passing in the same settings each time the effect is configured:

```ts
Shimmer.defaults = {
    speed: 0.9,
    direction: ShimmerDirection.topToBottom,
    repeat: 4,
    lightColor: 'rgba(255,255,255,.8)',
    darkColor: 'rgba(0,0,0,.7)',
};

// bootstrap app...
```

## License

Apache License Version 2.0
npm package: @nstudio/nativescript-smart-adserver
Description: SmartAdServer SDK Implementation for NativeScript
Author: Shiva Prasad
Latest version: 1.0.4

# nativescript-smart-adserver

Note: Only the Banner module is currently available in this plugin.

Works on Android and iOS

## Screenshots

### Android

<img src="https://github.com/nstudio/nativescript-smart-adserver/blob/master/assets/android-ss.jpeg?raw=true" height="640" >

### iOS

<img src="https://github.com/nstudio/nativescript-smart-adserver/blob/master/assets/ios-ss.png?raw=true" height="640" >

## Installation

```javascript
tns plugin add @nstudio/nativescript-smart-adserver
```

## Usage

To use this plugin, you will need Site ID, Base URL of your site, Page ID and Format ID from SmartAdServer.

### TypeScript

In app.ts you have to initialize the plugin

```js
import { SmartAdBanner } from "@nstudio/nativescript-smart-adserver";

SmartAdBanner.init(104808, "https://mobile.smartadserver.com");
```

Then in the xml file, include this namespace on the parent component of where you
want to place the AdView.

```xml
xmlns:sas="@nstudio/nativescript-smart-adserver"
```

Now you can create smart ad banner like this,

```xml
<sas:SmartAdBanner height="150"
        pageId="663262"
        formatId="15140"
        autoRefresh="true" />
```

### JavaScript

Same as Typescript, but the import statement will be

```js
const SmartAdBanner = require("@nstudio/nativescript-smart-adserver").SmartAdBanner;
```

### Angular

In main.ts you have to initialize the plugin

```js
import { SmartAdBanner } from "@nstudio/nativescript-smart-adserver";

SmartAdBanner.init(104808, "https://mobile.smartadserver.com");
```

In the module where you want to add Ads (eg, app.module.ts), import it like this\

```js
import { NativescriptSmartAdBannerModule } from "@nstudio/nativescript-smart-adserver/angular";
```

Now add `NativescriptSmartAdBannerModule` to the imports array of that module

You can now use the banner using this markup

```xml
<SmartAdBanner height="150"
        pageId="663262"
        formatId="15140"
        autoRefresh="true"></SmartAdBanner>
```

## API

Banner Module API (XML/HTML element Properties)

* pageId - the page id assigned by smart ad server
* formatId - format id given by smart ad server
* autoRefresh - specific if the ad should change over time

## License

Apache License Version 2.0, January 2004
npm package: @nstudio/nativescript-smartlook
Description: Smartlook SDK for NativeScript
Author: nstudio
Latest version: 2.0.0

# @nstudio/nativescript-smartlook

[Smartlook](https://www.smartlook.com) SDK for NativeScript.

Comprehensive product analytics & visual user insights.

```bash
npm install @nstudio/nativescript-smartlook
```

For iOS, configure your `nativescript.config.ts` to use the Swift Package:

```ts
ios: {
    SPMPackages: [
        {
            name: "SmartlookAnalytics",
            libs: ["SmartlookAnalytics"],
            repositoryURL: "https://github.com/smartlook/analytics-swift-package.git",
            version: "2.2.4"
        }
    ]
}
```

## Usage

Initialize the SDK with your api key before the app boots:

```ts
Application.on(Application.launchEvent, () => {
  Smartlook.start('<api-key>');
});

// bootstrap app...
```

### API

- `Smartlook.start(key: string)`: Start the sdk session and recording.
- `Smartlook.stop()`: Stop recording.
- `Smartlook.isRecording(): boolean`: Check status of recording.
- `Smartlook.sessionUrl(withTimestamp?: boolean): string`: Get the current session url.
- `Smartlook.setRenderingMode(mode?: SmartlookRenderMode): void`: Set current rendering mode.
- `Smartlook.getRenderingMode(): number`: Get current rendering mode.
- `Smartlook.setSensitivity(view: View, sensitive: boolean)`: Set sensitivity to specific View.
- `Smartlook.setUser(id: string, name?: string, email?: string, extraData?: any)`: Set user details.
- `Smartlook.trackEvent(name: string, properties?: any): void`: Track event with optional properties.
- `Smartlook.trackNavigationEvent(name: string)`: Track navigation event.

## License

Apache License Version 2.0
npm package: @nstudio/nativescript-snackbar
Description: A NativeScript plugin for the Material Design SnackBar.
Author: Brad Martin
Latest version: 2.1.0

<a align="center" href="https://www.npmjs.com/package/@nstudio/nativescript-snackbar">
    <h2 align="center">NativeScript-Snackbar 🍭 🍫 🍦</h2>
</a>
<h4 align="center">
NativeScript plugin for Material Design SnackBar component.
</h4>

<p align="center">
    <a href="https://www.npmjs.com/package/@nstudio/nativescript-snackbar">
        <img src="https://github.com/nstudio/nativescript-snackbar/workflows/Build%20CI/badge.svg" alt="Action Build">
    </a>
    <a href="https://www.npmjs.com/package/@nstudio/nativescript-snackbar">
        <img src="https://img.shields.io/npm/v/@nstudio/nativescript-snackbar.svg" alt="npm">
    </a>
    <a href="https://www.npmjs.com/package/@nstudio/nativescript-snackbar">
        <img src="https://img.shields.io/npm/dt/@nstudio/nativescript-snackbar.svg?label=npm%20downloads" alt="npm">
    </a>
</p>

---

### Installation:

NativeScript 7+:
`tns plugin add @nstudio/nativescript-snackbar`

NativeScript version prior to 7:
`tns plugin add @nstudio/nativescript-snackbar@1.1.2`

## Demo

![Snackbar](./screens/snackbar.gif)

## Usage

### TS

```typescript
import { SnackBar, SnackBarOptions } from "@nstudio/nativescript-snackbar";

// Create an instance of SnackBar
const snackbar = new SnackBar();

/// Show a simple snackbar with no actions
public showSimple() {
    snackbar.simple('Snackbar', 'red', '#fff', 3, false).then((args) => {
         this.set('jsonResult', JSON.stringify(args));
   })
}

/// Show an Action snack bar
public showAction() {
  const options: SnackBarOptions = {
    actionText: this.get('actionText'),
    actionTextColor: '#ff4081',
    snackText: this.get('snackText'),
    textColor: '#346db2',
    hideDelay: 3500,
    backgroundColor: '#eaeaea',
    maxLines: 3, // Optional, Android Only
    isRTL: false,
    view: <View>someView, // Optional, Android Only, default to topmost().currentPage
    padding: number //Optional, iOS only
  };

  snackbar.action(options).then((args) => {
    if (args.command === "Action") {
      this.set('jsonResult', JSON.stringify(args));
    } else {
      this.set('jsonResult', JSON.stringify(args));
    }
  });
}
```

### API

Show a simple SnackBar (color args will only work on Android)

- **simple(snackText: string, textColor?: string, backgroundColor?: string, maxLines?: number, isRTL?: boolean, view?: View): Promise<any>**

Show a SnackBar with Action.

- **action(options: SnackBarOptions): Promise<any>**

Manually dismiss an active SnackBar

- **dismiss(): Promise<any>**

### SnackBarOptions Interface

- **actionText: string**
- **actionTextColor: string**
- **snackText: string**
- **hideDelay: number**
- **textColor: string**
- **backgroundColor: string**
- **maxLines: number**
- **isRTL: boolean**
- **view: View**
- **padding: number**

## Run Demo

```bash
git clone https://github.com/nstudio/nativescript-snackbar.git
cd nativescript-snackbar/src
npm run build

npm run demo.ios

// or...

npm run demo.android
```

## [Changelog](./CHANGELOG.md)

## [Contributing](./CONTRIBUTING.md)
npm package: @nstudio/nativescript-tracking-transparency
Description: 🕵️ A NativeScript Library for interacting with the tracking API for iOS 14+
Author: nStudio LLC
Latest version: 1.0.0

# @nstudio/nativescript-tracking-transparency

🕵️ A NativeScript Library for interacting with the tracking API for iOS 14+

```javascript
ns plugin add @nstudio/nativescript-tracking-transparency
```

## Usage

Open App_Resources/iOS/Info.plist and add this to the bottom:

```Plist
<key>NSUserTrackingUsageDescription</key>
<string>$(PRODUCT_NAME) requires your permission to track in order to show you more relevant ads.</string>
```

Replace `NSUserTrackingUsageDescription` description string with something of your liking.

```
import { TrackingTransparency, TrackingStatus } from '@nstudio/nativescript-tracking-transparency';

// get status
const status = TrackingTransparency.getTrackingStatus();
if (status === TrackingStatus.Authorized || status === TrackingStatus.Unavailable) {
    // enable tracking features
}

// request access
TrackingTransparency.requestTrackingPermission().then(status => {
  if (status === TrackingStatus.Authorized) {
    // enable tracking features
  }
});
```

* `TrackingStatus.Unavailable`: The tracking API is not available on the current device. That's the case on Android devices and iPhones below iOS 14.
* `TrackingStatus.Denied`: The user has explicitly denied permission to track. You'd want to respect that and disable any tracking features in your app.
* `TrackingStatus.Authorized`: The user has granted permission to track. You can now enable tracking features in your app.
* `TrackingStatus.Restricted`: The tracking permission alert cannot be shown, because the device is restricted. See [ATTrackingManager.AuthorizationStatus.restricted](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/authorizationstatus/restricted) for more information.
* `TrackingStatus.NotDetermined`: The user has not been asked to grant tracking permissions yet. Call requestTrackingPermission().

## License

Apache License Version 2.0
npm package: @nstudio/nativescript-variable-blur-view
Description: Variable Blur View for NativeScript
Author: nstudio
Latest version: 1.0.3

# @nstudio/nativescript-variable-blur-view

Variable Blur View for NativeScript. Inspired by [@jtrivedi](https://github.com/jtrivedi), [@aheze](https://github.com/aheze/VariableBlurView), and [@candlefinance](https://github.com/candlefinance/blur-view)

## Preview
https://github.com/nstudio/nativescript-ui-kit/assets/457187/8d82d1b4-1dfc-421f-89b1-697c3c433b26

```javascript
npm install @nstudio/nativescript-variable-blur-view
```

## Usage

**Note**: iOS Only (*at the moment*)

Register the element for usage in your markup:

```ts
import { VariableBlurView } from '@nstudio/nativescript-variable-blur-view'

// Angular
import { registerElement } from '@nativescript/angular'
registerElement('VariableBlurView', () => VariableBlurView)

// Solid
import { registerElement } from 'dominative';
registerElement('variableBlurView', VariableBlurView);

// Svelte
import { registerNativeViewElement } from 'svelte-native/dom'
registerNativeViewElement('variableBlurView', () => VariableBlurView);

// React
import { registerElement } from 'react-nativescript';
registerElement('variableBlurView', () => VariableBlurView);

// Vue
import Vue from 'nativescript-vue'
Vue.registerElement('VariableBlurView', () => VariableBlurView)
```

Place on top of any UI in your layouts you want blurred:

```xml
<VariableBlurView width="100%" height="200"/>
```

*Tip*: You can flip the blur view vertically by doing this:

```xml
<VariableBlurView width="100%" height="200" scaleY="-1"/>
```

## License

Apache License Version 2.0
npm package: @nstudio/nativescript-vlc-player
Description: VLC Player for NativeScript. Supports RTSP, RTMP and other protocols.
Author: nStudio
Latest version: 0.0.1

# @nstudio/nativescript-vlc-player

```javascript
npm install @nstudio/nativescript-vlc-player
```

## Usage

Register `VLCPlayer` element using any flavor for usage.

```html
<VLCPlayer autoPlay="true" src="rtsp://your-stream" loaded="loaded"></VLCPlayer>
```

### API

- `play`: Start playback
- `pause`: Pause playback

### Example

```html
<VLCPlayer autoPlay="true" src="rtsp://your-stream" loaded="loaded"></VLCPlayer>
```

```ts
import { EventData } from '@nativescript/core';
import { VLCPlayer } from '@nstudio/nativescript-vlc-player';

let player: VLCPlayer;
function loaded(args: EventData) {
    player = args.object as VLCPlayer;
}

function play() {
    player.play();
}

function pause() {
    player.pause();
}
```

## License

Apache License Version 2.0