@reach/auto-id
Advanced tools
Comparing version 0.1.0 to 0.2.0
@@ -1,32 +0,22 @@ | ||
import React, { createContext, useRef, useCallback, useContext } from "react"; | ||
import { useState, useEffect } from "react"; | ||
// Most things that we auto-id aren't server rendered, and are rendered into | ||
// portals anyway, so we can get away with random ids in a default context. If | ||
// people need to server render with auto-ids, they can wrap their app in an | ||
// IdProvider | ||
// Could use UUID but if we hit 9,007,199,254,740,991 unique components over | ||
// the lifetime of the app before it gets reloaded, I mean ... come on. | ||
// I don't even know what xillion that is. | ||
// /me googles | ||
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay. | ||
var id = 0; | ||
var genId = function genId() { | ||
return Math.random().toString(32).substring(2); | ||
return ++id; | ||
}; | ||
var Context = createContext(genId); | ||
export var useId = function useId() { | ||
var _useState = useState(null), | ||
id = _useState[0], | ||
setId = _useState[1]; | ||
export var AutoIdProvider = function AutoIdProvider(_ref) { | ||
var children = _ref.children; | ||
var ref = useRef(0); | ||
// could use UUID but if we hit 9,007,199,254,740,991 unique components over | ||
// the lifetime of the app before it gets reloaded, I mean ... come on. | ||
// I don't even know what xillion that is. | ||
// /me googles | ||
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay. | ||
var genId = useCallback(function () { | ||
return ++ref.current; | ||
useEffect(function () { | ||
return setId(genId()); | ||
}, []); | ||
return React.createElement(Context.Provider, { value: genId, children: children }); | ||
}; | ||
export var useId = function useId() { | ||
var genId = useContext(Context); | ||
var ref = useRef(genId()); | ||
return ref.current; | ||
return id; | ||
}; |
44
index.js
"use strict"; | ||
exports.__esModule = true; | ||
exports.useId = exports.AutoIdProvider = undefined; | ||
exports.useId = undefined; | ||
var _react = require("react"); | ||
var _react2 = _interopRequireDefault(_react); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
// Most things that we auto-id aren't server rendered, and are rendered into | ||
// portals anyway, so we can get away with random ids in a default context. If | ||
// people need to server render with auto-ids, they can wrap their app in an | ||
// IdProvider | ||
// Could use UUID but if we hit 9,007,199,254,740,991 unique components over | ||
// the lifetime of the app before it gets reloaded, I mean ... come on. | ||
// I don't even know what xillion that is. | ||
// /me googles | ||
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay. | ||
var id = 0; | ||
var genId = function genId() { | ||
return Math.random().toString(32).substring(2); | ||
return ++id; | ||
}; | ||
var Context = (0, _react.createContext)(genId); | ||
var useId = exports.useId = function useId() { | ||
var _useState = (0, _react.useState)(null), | ||
id = _useState[0], | ||
setId = _useState[1]; | ||
var AutoIdProvider = exports.AutoIdProvider = function AutoIdProvider(_ref) { | ||
var children = _ref.children; | ||
var ref = (0, _react.useRef)(0); | ||
// could use UUID but if we hit 9,007,199,254,740,991 unique components over | ||
// the lifetime of the app before it gets reloaded, I mean ... come on. | ||
// I don't even know what xillion that is. | ||
// /me googles | ||
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay. | ||
var genId = (0, _react.useCallback)(function () { | ||
return ++ref.current; | ||
(0, _react.useEffect)(function () { | ||
return setId(genId()); | ||
}, []); | ||
return _react2.default.createElement(Context.Provider, { value: genId, children: children }); | ||
}; | ||
var useId = exports.useId = function useId() { | ||
var genId = (0, _react.useContext)(Context); | ||
var ref = (0, _react.useRef)(genId()); | ||
return ref.current; | ||
return id; | ||
}; |
{ | ||
"name": "@reach/auto-id", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "Autogenerate IDs to facilitate WAI-ARIA and server rendering.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -1,29 +0,15 @@ | ||
import React, { createContext, useRef, useCallback, useContext } from "react"; | ||
import { useState, useEffect } from "react"; | ||
// Most things that we auto-id aren't server rendered, and are rendered into | ||
// portals anyway, so we can get away with random ids in a default context. If | ||
// people need to server render with auto-ids, they can wrap their app in an | ||
// IdProvider | ||
const genId = () => | ||
Math.random() | ||
.toString(32) | ||
.substring(2); | ||
// Could use UUID but if we hit 9,007,199,254,740,991 unique components over | ||
// the lifetime of the app before it gets reloaded, I mean ... come on. | ||
// I don't even know what xillion that is. | ||
// /me googles | ||
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay. | ||
let id = 0; | ||
const genId = () => ++id; | ||
const Context = createContext(genId); | ||
export const AutoIdProvider = ({ children }) => { | ||
const ref = useRef(0); | ||
// could use UUID but if we hit 9,007,199,254,740,991 unique components over | ||
// the lifetime of the app before it gets reloaded, I mean ... come on. | ||
// I don't even know what xillion that is. | ||
// /me googles | ||
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay. | ||
const genId = useCallback(() => ++ref.current, []); | ||
return <Context.Provider value={genId} children={children} />; | ||
}; | ||
export const useId = () => { | ||
const genId = useContext(Context); | ||
const ref = useRef(genId()); | ||
return ref.current; | ||
const [id, setId] = useState(null); | ||
useEffect(() => setId(genId()), []); | ||
return id; | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2296
52