@tamagui/use-presence 1.0.1-beta.194
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/PresenceContext.js +30 -0
- package/dist/cjs/PresenceContext.js.map +7 -0
- package/dist/cjs/index.js +20 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/usePresence.js +51 -0
- package/dist/cjs/usePresence.js.map +7 -0
- package/dist/esm/PresenceContext.js +6 -0
- package/dist/esm/PresenceContext.js.map +7 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/usePresence.js +25 -0
- package/dist/esm/usePresence.js.map +7 -0
- package/package.json +30 -0
- package/src/PresenceContext.ts +14 -0
- package/src/index.ts +2 -0
- package/src/usePresence.ts +35 -0
- package/types/PresenceContext.d.ts +13 -0
- package/types/index.d.ts +3 -0
- package/types/useDirection.d.ts +11 -0
- package/types/usePresence.d.ts +14 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var PresenceContext_exports = {};
|
|
20
|
+
__export(PresenceContext_exports, {
|
|
21
|
+
PresenceContext: () => PresenceContext
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(PresenceContext_exports);
|
|
24
|
+
var import_react = require("react");
|
|
25
|
+
const PresenceContext = (0, import_react.createContext)(null);
|
|
26
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
27
|
+
0 && (module.exports = {
|
|
28
|
+
PresenceContext
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=PresenceContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/PresenceContext.ts"],
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\nexport interface PresenceContextProps {\n id: string\n isPresent: boolean\n register: (id: string) => () => void\n onExitComplete?: (id: string) => void\n initial?: false | string | string[]\n custom?: any\n exitVariant?: string | null\n enterVariant?: string | null\n}\n\nexport const PresenceContext = createContext<PresenceContextProps | null>(null)\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAavB,MAAM,sBAAkB,4BAA2C,IAAI;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var src_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(src_exports);
|
|
18
|
+
__reExport(src_exports, require("./PresenceContext"), module.exports);
|
|
19
|
+
__reExport(src_exports, require("./usePresence"), module.exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var usePresence_exports = {};
|
|
20
|
+
__export(usePresence_exports, {
|
|
21
|
+
isPresent: () => isPresent,
|
|
22
|
+
useIsPresent: () => useIsPresent,
|
|
23
|
+
usePresence: () => usePresence
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(usePresence_exports);
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
var import_PresenceContext = require("./PresenceContext");
|
|
28
|
+
function usePresence() {
|
|
29
|
+
const context = (0, import_react.useContext)(import_PresenceContext.PresenceContext);
|
|
30
|
+
if (!context) {
|
|
31
|
+
return [true, null];
|
|
32
|
+
}
|
|
33
|
+
const { isPresent: isPresent2, onExitComplete, register } = context;
|
|
34
|
+
const id = (0, import_react.useId)() || "";
|
|
35
|
+
(0, import_react.useEffect)(() => register(id), [id, register]);
|
|
36
|
+
const safeToRemove = () => onExitComplete == null ? void 0 : onExitComplete(id);
|
|
37
|
+
return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];
|
|
38
|
+
}
|
|
39
|
+
function useIsPresent() {
|
|
40
|
+
return isPresent((0, import_react.useContext)(import_PresenceContext.PresenceContext));
|
|
41
|
+
}
|
|
42
|
+
function isPresent(context) {
|
|
43
|
+
return context === null ? true : context.isPresent;
|
|
44
|
+
}
|
|
45
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
+
0 && (module.exports = {
|
|
47
|
+
isPresent,
|
|
48
|
+
useIsPresent,
|
|
49
|
+
usePresence
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=usePresence.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/usePresence.ts"],
|
|
4
|
+
"sourcesContent": ["import { useContext, useEffect, useId } from 'react'\n\nimport { PresenceContext, PresenceContextProps } from './PresenceContext'\n\nexport type SafeToRemove = () => void\ntype AlwaysPresent = [true, null]\ntype Present = [true]\ntype NotPresent = [false, SafeToRemove]\n\nexport function usePresence(): AlwaysPresent | Present | NotPresent {\n const context = useContext(PresenceContext)\n if (!context) {\n return [true, null]\n }\n\n const { isPresent, onExitComplete, register } = context\n const id = useId() || ''\n useEffect(() => register(id), [id, register])\n\n const safeToRemove = () => onExitComplete?.(id)\n\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true]\n}\n\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n */\nexport function useIsPresent() {\n return isPresent(useContext(PresenceContext))\n}\n\nexport function isPresent(context: PresenceContextProps | null) {\n return context === null ? true : context.isPresent\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6C;AAE7C,6BAAsD;AAO/C,SAAS,cAAoD;AAClE,QAAM,cAAU,yBAAW,sCAAe;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC,MAAM,IAAI;AAAA,EACpB;AAEA,QAAM,EAAE,WAAAA,YAAW,gBAAgB,SAAS,IAAI;AAChD,QAAM,SAAK,oBAAM,KAAK;AACtB,8BAAU,MAAM,SAAS,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC;AAE5C,QAAM,eAAe,MAAM,iDAAiB;AAE5C,SAAO,CAACA,cAAa,iBAAiB,CAAC,OAAO,YAAY,IAAI,CAAC,IAAI;AACrE;AAMO,SAAS,eAAe;AAC7B,SAAO,cAAU,yBAAW,sCAAe,CAAC;AAC9C;AAEO,SAAS,UAAU,SAAsC;AAC9D,SAAO,YAAY,OAAO,OAAO,QAAQ;AAC3C;",
|
|
6
|
+
"names": ["isPresent"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/PresenceContext.ts"],
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\nexport interface PresenceContextProps {\n id: string\n isPresent: boolean\n register: (id: string) => () => void\n onExitComplete?: (id: string) => void\n initial?: false | string | string[]\n custom?: any\n exitVariant?: string | null\n enterVariant?: string | null\n}\n\nexport const PresenceContext = createContext<PresenceContextProps | null>(null)\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAavB,MAAM,kBAAkB,cAA2C,IAAI;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useContext, useEffect, useId } from "react";
|
|
2
|
+
import { PresenceContext } from "./PresenceContext";
|
|
3
|
+
function usePresence() {
|
|
4
|
+
const context = useContext(PresenceContext);
|
|
5
|
+
if (!context) {
|
|
6
|
+
return [true, null];
|
|
7
|
+
}
|
|
8
|
+
const { isPresent: isPresent2, onExitComplete, register } = context;
|
|
9
|
+
const id = useId() || "";
|
|
10
|
+
useEffect(() => register(id), [id, register]);
|
|
11
|
+
const safeToRemove = () => onExitComplete == null ? void 0 : onExitComplete(id);
|
|
12
|
+
return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];
|
|
13
|
+
}
|
|
14
|
+
function useIsPresent() {
|
|
15
|
+
return isPresent(useContext(PresenceContext));
|
|
16
|
+
}
|
|
17
|
+
function isPresent(context) {
|
|
18
|
+
return context === null ? true : context.isPresent;
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
isPresent,
|
|
22
|
+
useIsPresent,
|
|
23
|
+
usePresence
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=usePresence.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/usePresence.ts"],
|
|
4
|
+
"sourcesContent": ["import { useContext, useEffect, useId } from 'react'\n\nimport { PresenceContext, PresenceContextProps } from './PresenceContext'\n\nexport type SafeToRemove = () => void\ntype AlwaysPresent = [true, null]\ntype Present = [true]\ntype NotPresent = [false, SafeToRemove]\n\nexport function usePresence(): AlwaysPresent | Present | NotPresent {\n const context = useContext(PresenceContext)\n if (!context) {\n return [true, null]\n }\n\n const { isPresent, onExitComplete, register } = context\n const id = useId() || ''\n useEffect(() => register(id), [id, register])\n\n const safeToRemove = () => onExitComplete?.(id)\n\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true]\n}\n\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n */\nexport function useIsPresent() {\n return isPresent(useContext(PresenceContext))\n}\n\nexport function isPresent(context: PresenceContextProps | null) {\n return context === null ? true : context.isPresent\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,YAAY,WAAW,aAAa;AAE7C,SAAS,uBAA6C;AAO/C,SAAS,cAAoD;AAClE,QAAM,UAAU,WAAW,eAAe;AAC1C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC,MAAM,IAAI;AAAA,EACpB;AAEA,QAAM,EAAE,WAAAA,YAAW,gBAAgB,SAAS,IAAI;AAChD,QAAM,KAAK,MAAM,KAAK;AACtB,YAAU,MAAM,SAAS,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC;AAE5C,QAAM,eAAe,MAAM,iDAAiB;AAE5C,SAAO,CAACA,cAAa,iBAAiB,CAAC,OAAO,YAAY,IAAI,CAAC,IAAI;AACrE;AAMO,SAAS,eAAe;AAC7B,SAAO,UAAU,WAAW,eAAe,CAAC;AAC9C;AAEO,SAAS,UAAU,SAAsC;AAC9D,SAAO,YAAY,OAAO,OAAO,QAAQ;AAC3C;",
|
|
6
|
+
"names": ["isPresent"]
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tamagui/use-presence",
|
|
3
|
+
"version": "1.0.1-beta.194",
|
|
4
|
+
"types": "./types/index.d.ts",
|
|
5
|
+
"main": "dist/cjs",
|
|
6
|
+
"module": "dist/esm",
|
|
7
|
+
"files": [
|
|
8
|
+
"src",
|
|
9
|
+
"types",
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tamagui-build",
|
|
14
|
+
"watch": "tamagui-build --watch",
|
|
15
|
+
"lint": "eslint",
|
|
16
|
+
"lint:fix": "yarn lint --fix",
|
|
17
|
+
"clean": "tamagui-build clean",
|
|
18
|
+
"clean:build": "tamagui-build clean:build"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@tamagui/build": "^1.0.1-beta.194",
|
|
22
|
+
"react": "*"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"react": "*"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createContext } from 'react'
|
|
2
|
+
|
|
3
|
+
export interface PresenceContextProps {
|
|
4
|
+
id: string
|
|
5
|
+
isPresent: boolean
|
|
6
|
+
register: (id: string) => () => void
|
|
7
|
+
onExitComplete?: (id: string) => void
|
|
8
|
+
initial?: false | string | string[]
|
|
9
|
+
custom?: any
|
|
10
|
+
exitVariant?: string | null
|
|
11
|
+
enterVariant?: string | null
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const PresenceContext = createContext<PresenceContextProps | null>(null)
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useContext, useEffect, useId } from 'react'
|
|
2
|
+
|
|
3
|
+
import { PresenceContext, PresenceContextProps } from './PresenceContext'
|
|
4
|
+
|
|
5
|
+
export type SafeToRemove = () => void
|
|
6
|
+
type AlwaysPresent = [true, null]
|
|
7
|
+
type Present = [true]
|
|
8
|
+
type NotPresent = [false, SafeToRemove]
|
|
9
|
+
|
|
10
|
+
export function usePresence(): AlwaysPresent | Present | NotPresent {
|
|
11
|
+
const context = useContext(PresenceContext)
|
|
12
|
+
if (!context) {
|
|
13
|
+
return [true, null]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const { isPresent, onExitComplete, register } = context
|
|
17
|
+
const id = useId() || ''
|
|
18
|
+
useEffect(() => register(id), [id, register])
|
|
19
|
+
|
|
20
|
+
const safeToRemove = () => onExitComplete?.(id)
|
|
21
|
+
|
|
22
|
+
return !isPresent && onExitComplete ? [false, safeToRemove] : [true]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.
|
|
27
|
+
* There is no `safeToRemove` function.
|
|
28
|
+
*/
|
|
29
|
+
export function useIsPresent() {
|
|
30
|
+
return isPresent(useContext(PresenceContext))
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function isPresent(context: PresenceContextProps | null) {
|
|
34
|
+
return context === null ? true : context.isPresent
|
|
35
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface PresenceContextProps {
|
|
3
|
+
id: string;
|
|
4
|
+
isPresent: boolean;
|
|
5
|
+
register: (id: string) => () => void;
|
|
6
|
+
onExitComplete?: (id: string) => void;
|
|
7
|
+
initial?: false | string | string[];
|
|
8
|
+
custom?: any;
|
|
9
|
+
exitVariant?: string | null;
|
|
10
|
+
enterVariant?: string | null;
|
|
11
|
+
}
|
|
12
|
+
export declare const PresenceContext: import("react").Context<PresenceContextProps | null>;
|
|
13
|
+
//# sourceMappingURL=PresenceContext.d.ts.map
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
declare type Direction = 'ltr' | 'rtl';
|
|
3
|
+
interface DirectionProviderProps {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
dir: Direction;
|
|
6
|
+
}
|
|
7
|
+
export declare const DirectionProvider: React.FC<DirectionProviderProps>;
|
|
8
|
+
export declare function useDirection(localDir?: Direction): Direction;
|
|
9
|
+
export declare const Provider: React.FC<DirectionProviderProps>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=useDirection.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PresenceContextProps } from './PresenceContext';
|
|
2
|
+
export declare type SafeToRemove = () => void;
|
|
3
|
+
declare type AlwaysPresent = [true, null];
|
|
4
|
+
declare type Present = [true];
|
|
5
|
+
declare type NotPresent = [false, SafeToRemove];
|
|
6
|
+
export declare function usePresence(): AlwaysPresent | Present | NotPresent;
|
|
7
|
+
/**
|
|
8
|
+
* Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.
|
|
9
|
+
* There is no `safeToRemove` function.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useIsPresent(): boolean;
|
|
12
|
+
export declare function isPresent(context: PresenceContextProps | null): boolean;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=usePresence.d.ts.map
|