@solid-primitives/styles 0.0.114 → 0.1.1
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/README.md +2 -3
- package/dist/index.d.ts +5 -8
- package/dist/index.js +65 -41
- package/package.json +4 -8
- package/dist/index.cjs +0 -45
- package/dist/index.d.cts +0 -33
package/README.md
CHANGED
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
# @solid-primitives/styles
|
|
6
6
|
|
|
7
|
-
[](https://turborepo.org/)
|
|
8
7
|
[](https://bundlephobia.com/package/@solid-primitives/styles)
|
|
9
8
|
[](https://www.npmjs.com/package/@solid-primitives/styles)
|
|
10
9
|
[](https://github.com/solidjs-community/solid-primitives#contribution-process)
|
|
11
10
|
|
|
12
11
|
Collection of reactive primitives focused on styles.
|
|
13
12
|
|
|
14
|
-
- [`createRemSize`](#
|
|
13
|
+
- [`createRemSize`](#createremsize) - Create a reactive signal of css `rem` size in pixels.
|
|
15
14
|
|
|
16
15
|
## Installation
|
|
17
16
|
|
|
@@ -46,7 +45,7 @@ createEffect(() => {
|
|
|
46
45
|
|
|
47
46
|
This primitive provides a [singleton root](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createSingletonRoot) variant that will reuse signals, HTML elements and the ResizeObserver instance across all dependents that use it.
|
|
48
47
|
|
|
49
|
-
It's behavior is the same as [`createRemSize`](#
|
|
48
|
+
It's behavior is the same as [`createRemSize`](#createremsize).
|
|
50
49
|
|
|
51
50
|
```ts
|
|
52
51
|
import { useRemSize } from "@solid-primitives/styles";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Accessor } from
|
|
2
|
-
|
|
1
|
+
import { Accessor } from "solid-js";
|
|
3
2
|
/**
|
|
4
3
|
* Reads the current rem size from the document root.
|
|
5
4
|
*/
|
|
6
|
-
declare const getRemSize: () => number;
|
|
5
|
+
export declare const getRemSize: () => number;
|
|
7
6
|
/**
|
|
8
7
|
* Creates a reactive signal with value of the current rem size, and tracks it's changes.
|
|
9
8
|
* @returns A signal with the current rem size in pixels.
|
|
@@ -12,7 +11,7 @@ declare const getRemSize: () => number;
|
|
|
12
11
|
* const remSize = createRemSize();
|
|
13
12
|
* console.log(remSize()); // 16
|
|
14
13
|
*/
|
|
15
|
-
declare function createRemSize(): Accessor<number>;
|
|
14
|
+
export declare function createRemSize(): Accessor<number>;
|
|
16
15
|
/**
|
|
17
16
|
* Returns a reactive signal with value of the current rem size, and tracks it's changes.
|
|
18
17
|
*
|
|
@@ -24,10 +23,8 @@ declare function createRemSize(): Accessor<number>;
|
|
|
24
23
|
* const remSize = useRemSize();
|
|
25
24
|
* console.log(remSize()); // 16
|
|
26
25
|
*/
|
|
27
|
-
declare const useRemSize: () => Accessor<number>;
|
|
26
|
+
export declare const useRemSize: () => Accessor<number>;
|
|
28
27
|
/**
|
|
29
28
|
* Set the server fallback value for the rem size. {@link getRemSize}, {@link createRemSize} and {@link useRemSize} will return this value on the server.
|
|
30
29
|
*/
|
|
31
|
-
declare const setServerRemSize: (size: number) => void;
|
|
32
|
-
|
|
33
|
-
export { createRemSize, getRemSize, setServerRemSize, useRemSize };
|
|
30
|
+
export declare const setServerRemSize: (size: number) => void;
|
package/dist/index.js
CHANGED
|
@@ -1,43 +1,67 @@
|
|
|
1
|
-
import { onCleanup } from
|
|
2
|
-
import { isServer } from
|
|
3
|
-
import { createHydratableSingletonRoot } from
|
|
4
|
-
import { createHydratableSignal, noop } from
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
top: "-9999px",
|
|
14
|
-
left: "-9999px"
|
|
1
|
+
import { onCleanup } from "solid-js";
|
|
2
|
+
import { isServer } from "solid-js/web";
|
|
3
|
+
import { createHydratableSingletonRoot } from "@solid-primitives/rootless";
|
|
4
|
+
import { createHydratableSignal, noop } from "@solid-primitives/utils";
|
|
5
|
+
let serverRemSize = 16;
|
|
6
|
+
const totallyHiddenStyles = {
|
|
7
|
+
border: "0",
|
|
8
|
+
padding: "0",
|
|
9
|
+
visibility: "hidden",
|
|
10
|
+
position: "absolute",
|
|
11
|
+
top: "-9999px",
|
|
12
|
+
left: "-9999px",
|
|
15
13
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
el.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Reads the current rem size from the document root.
|
|
16
|
+
*/
|
|
17
|
+
export const getRemSize = () => isServer ? serverRemSize : parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
18
|
+
/**
|
|
19
|
+
* Creates a reactive signal with value of the current rem size, and tracks it's changes.
|
|
20
|
+
* @returns A signal with the current rem size in pixels.
|
|
21
|
+
* @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/styles#createRemSize.
|
|
22
|
+
* @example
|
|
23
|
+
* const remSize = createRemSize();
|
|
24
|
+
* console.log(remSize()); // 16
|
|
25
|
+
*/
|
|
26
|
+
export function createRemSize() {
|
|
27
|
+
if (isServer) {
|
|
28
|
+
return () => serverRemSize;
|
|
29
|
+
}
|
|
30
|
+
const [remSize, setRemSize] = createHydratableSignal(serverRemSize, getRemSize);
|
|
31
|
+
const el = document.createElement("div");
|
|
32
|
+
Object.assign(el.style, totallyHiddenStyles, { width: "1rem" });
|
|
33
|
+
document.body.appendChild(el);
|
|
34
|
+
let init = true;
|
|
35
|
+
const ro = new ResizeObserver(() => {
|
|
36
|
+
if (init)
|
|
37
|
+
return (init = false);
|
|
38
|
+
setRemSize(getRemSize());
|
|
39
|
+
});
|
|
40
|
+
ro.observe(el);
|
|
41
|
+
onCleanup(() => {
|
|
42
|
+
el.remove();
|
|
43
|
+
ro.disconnect();
|
|
44
|
+
});
|
|
45
|
+
return remSize;
|
|
37
46
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Returns a reactive signal with value of the current rem size, and tracks it's changes.
|
|
49
|
+
*
|
|
50
|
+
* This is a [singleton root primitive](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createSingletonRoot) except if during hydration.
|
|
51
|
+
*
|
|
52
|
+
* @returns A signal with the current rem size in pixels.
|
|
53
|
+
* @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/styles#useRemSize.
|
|
54
|
+
* @example
|
|
55
|
+
* const remSize = useRemSize();
|
|
56
|
+
* console.log(remSize()); // 16
|
|
57
|
+
*/
|
|
58
|
+
export const useRemSize =
|
|
59
|
+
/*#__PURE__*/ createHydratableSingletonRoot(createRemSize);
|
|
60
|
+
/**
|
|
61
|
+
* Set the server fallback value for the rem size. {@link getRemSize}, {@link createRemSize} and {@link useRemSize} will return this value on the server.
|
|
62
|
+
*/
|
|
63
|
+
export const setServerRemSize = isServer
|
|
64
|
+
? (size) => {
|
|
65
|
+
serverRemSize = size;
|
|
66
|
+
}
|
|
67
|
+
: noop;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solid-primitives/styles",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Collection of reactive primitives focused on styles.",
|
|
5
5
|
"author": "Damian Tarnawski <gthetaranv@gmail.com>",
|
|
6
6
|
"contributors": [
|
|
@@ -29,18 +29,14 @@
|
|
|
29
29
|
"files": [
|
|
30
30
|
"dist"
|
|
31
31
|
],
|
|
32
|
-
"main": "./dist/index.cjs",
|
|
33
32
|
"module": "./dist/index.js",
|
|
34
33
|
"types": "./dist/index.d.ts",
|
|
35
34
|
"browser": {},
|
|
36
35
|
"exports": {
|
|
37
36
|
"import": {
|
|
37
|
+
"@solid-primitives/source": "./src/index.ts",
|
|
38
38
|
"types": "./dist/index.d.ts",
|
|
39
39
|
"default": "./dist/index.js"
|
|
40
|
-
},
|
|
41
|
-
"require": {
|
|
42
|
-
"types": "./dist/index.d.cts",
|
|
43
|
-
"default": "./dist/index.cjs"
|
|
44
40
|
}
|
|
45
41
|
},
|
|
46
42
|
"keywords": [
|
|
@@ -50,8 +46,8 @@
|
|
|
50
46
|
"css"
|
|
51
47
|
],
|
|
52
48
|
"dependencies": {
|
|
53
|
-
"@solid-primitives/
|
|
54
|
-
"@solid-primitives/
|
|
49
|
+
"@solid-primitives/utils": "^6.3.1",
|
|
50
|
+
"@solid-primitives/rootless": "^1.5.1"
|
|
55
51
|
},
|
|
56
52
|
"peerDependencies": {
|
|
57
53
|
"solid-js": "^1.6.12"
|
package/dist/index.cjs
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var solidJs = require('solid-js');
|
|
4
|
-
var web = require('solid-js/web');
|
|
5
|
-
var rootless = require('@solid-primitives/rootless');
|
|
6
|
-
var utils = require('@solid-primitives/utils');
|
|
7
|
-
|
|
8
|
-
// src/index.ts
|
|
9
|
-
var serverRemSize = 16;
|
|
10
|
-
var totallyHiddenStyles = {
|
|
11
|
-
border: "0",
|
|
12
|
-
padding: "0",
|
|
13
|
-
visibility: "hidden",
|
|
14
|
-
position: "absolute",
|
|
15
|
-
top: "-9999px",
|
|
16
|
-
left: "-9999px"
|
|
17
|
-
};
|
|
18
|
-
exports.getRemSize = () => web.isServer ? serverRemSize : parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
19
|
-
function createRemSize() {
|
|
20
|
-
if (web.isServer) {
|
|
21
|
-
return () => serverRemSize;
|
|
22
|
-
}
|
|
23
|
-
const [remSize, setRemSize] = utils.createHydratableSignal(serverRemSize, exports.getRemSize);
|
|
24
|
-
const el = document.createElement("div");
|
|
25
|
-
Object.assign(el.style, totallyHiddenStyles, { width: "1rem" });
|
|
26
|
-
document.body.appendChild(el);
|
|
27
|
-
let init = true;
|
|
28
|
-
const ro = new ResizeObserver(() => {
|
|
29
|
-
if (init)
|
|
30
|
-
return init = false;
|
|
31
|
-
setRemSize(exports.getRemSize());
|
|
32
|
-
});
|
|
33
|
-
ro.observe(el);
|
|
34
|
-
solidJs.onCleanup(() => {
|
|
35
|
-
el.remove();
|
|
36
|
-
ro.disconnect();
|
|
37
|
-
});
|
|
38
|
-
return remSize;
|
|
39
|
-
}
|
|
40
|
-
exports.useRemSize = /* @__PURE__ */ rootless.createHydratableSingletonRoot(createRemSize);
|
|
41
|
-
exports.setServerRemSize = web.isServer ? (size) => {
|
|
42
|
-
serverRemSize = size;
|
|
43
|
-
} : utils.noop;
|
|
44
|
-
|
|
45
|
-
exports.createRemSize = createRemSize;
|
package/dist/index.d.cts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Accessor } from 'solid-js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Reads the current rem size from the document root.
|
|
5
|
-
*/
|
|
6
|
-
declare const getRemSize: () => number;
|
|
7
|
-
/**
|
|
8
|
-
* Creates a reactive signal with value of the current rem size, and tracks it's changes.
|
|
9
|
-
* @returns A signal with the current rem size in pixels.
|
|
10
|
-
* @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/styles#createRemSize.
|
|
11
|
-
* @example
|
|
12
|
-
* const remSize = createRemSize();
|
|
13
|
-
* console.log(remSize()); // 16
|
|
14
|
-
*/
|
|
15
|
-
declare function createRemSize(): Accessor<number>;
|
|
16
|
-
/**
|
|
17
|
-
* Returns a reactive signal with value of the current rem size, and tracks it's changes.
|
|
18
|
-
*
|
|
19
|
-
* This is a [singleton root primitive](https://github.com/solidjs-community/solid-primitives/tree/main/packages/rootless#createSingletonRoot) except if during hydration.
|
|
20
|
-
*
|
|
21
|
-
* @returns A signal with the current rem size in pixels.
|
|
22
|
-
* @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/styles#useRemSize.
|
|
23
|
-
* @example
|
|
24
|
-
* const remSize = useRemSize();
|
|
25
|
-
* console.log(remSize()); // 16
|
|
26
|
-
*/
|
|
27
|
-
declare const useRemSize: () => Accessor<number>;
|
|
28
|
-
/**
|
|
29
|
-
* Set the server fallback value for the rem size. {@link getRemSize}, {@link createRemSize} and {@link useRemSize} will return this value on the server.
|
|
30
|
-
*/
|
|
31
|
-
declare const setServerRemSize: (size: number) => void;
|
|
32
|
-
|
|
33
|
-
export { createRemSize, getRemSize, setServerRemSize, useRemSize };
|