@salt-ds/styles 0.0.0-snapshot-20230419175619

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 ADDED
@@ -0,0 +1 @@
1
+ # Styles
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var useStyleInjection = require('./use-style-injection/useStyleInjection.js');
6
+
7
+
8
+
9
+ exports.useComponentCssInjection = useStyleInjection.useComponentCssInjection;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return n;
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
+
27
+ var _a;
28
+ const maybeUseInsertionEffect = (_a = React__namespace[`${"useInsertionEffect"}${""}`]) != null ? _a : React__namespace.useLayoutEffect;
29
+ const windowSheetsMap = /* @__PURE__ */ new WeakMap();
30
+ function useComponentCssInjection({
31
+ id,
32
+ css,
33
+ window: targetWindow
34
+ }) {
35
+ maybeUseInsertionEffect(() => {
36
+ var _a2, _b;
37
+ let sheetsMap = (_a2 = windowSheetsMap.get(targetWindow)) != null ? _a2 : /* @__PURE__ */ new Map();
38
+ let styleMap = (_b = sheetsMap.get(id)) != null ? _b : { styleElement: null, count: 0 };
39
+ if (styleMap.styleElement == null) {
40
+ styleMap.styleElement = targetWindow.document.createElement("style");
41
+ styleMap.styleElement.setAttribute("type", "text/css");
42
+ styleMap.styleElement.setAttribute("data-salt-style", id);
43
+ styleMap.styleElement.textContent = css;
44
+ styleMap.count = 1;
45
+ targetWindow.document.head.insertBefore(
46
+ styleMap.styleElement,
47
+ targetWindow.document.head.firstChild
48
+ );
49
+ } else {
50
+ styleMap.styleElement.textContent = css;
51
+ styleMap.count++;
52
+ }
53
+ sheetsMap.set(id, styleMap);
54
+ windowSheetsMap.set(targetWindow, sheetsMap);
55
+ return () => {
56
+ const sheetsMap2 = windowSheetsMap.get(targetWindow);
57
+ const styleMap2 = sheetsMap2 == null ? void 0 : sheetsMap2.get(id);
58
+ if (styleMap2 == null ? void 0 : styleMap2.styleElement) {
59
+ styleMap2.count--;
60
+ if (styleMap2.count < 1) {
61
+ targetWindow.document.head.removeChild(styleMap2.styleElement);
62
+ styleMap2.styleElement = null;
63
+ sheetsMap2 == null ? void 0 : sheetsMap2.delete(id);
64
+ }
65
+ }
66
+ };
67
+ }, [id, css, targetWindow]);
68
+ }
69
+
70
+ exports.useComponentCssInjection = useComponentCssInjection;
71
+ //# sourceMappingURL=useStyleInjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStyleInjection.js","sources":["../src/use-style-injection/useStyleInjection.ts"],"sourcesContent":["import * as React from \"react\";\n\n// eslint-disable-next-line -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeUseInsertionEffect: typeof React.useLayoutEffect =\n (React as any)[`${\"useInsertionEffect\"}${\"\"}`] ?? React.useLayoutEffect;\n\ntype WindowLike = Window & typeof globalThis;\n\nexport interface UseComponentCssInjection {\n id: string;\n css: string;\n window: WindowLike;\n}\n\ntype StyleElementMap = Map<\n string,\n { styleElement: HTMLStyleElement | null; count: number }\n>;\n\nconst windowSheetsMap = new WeakMap<WindowLike, StyleElementMap>();\nexport function useComponentCssInjection({\n id,\n css,\n window: targetWindow,\n}: UseComponentCssInjection): void {\n maybeUseInsertionEffect(() => {\n let sheetsMap = windowSheetsMap.get(targetWindow) ?? new Map();\n let styleMap = sheetsMap.get(id) ?? { styleElement: null, count: 0 };\n\n if (styleMap.styleElement == null) {\n styleMap.styleElement = targetWindow.document.createElement(\"style\");\n styleMap.styleElement.setAttribute(\"type\", \"text/css\");\n styleMap.styleElement.setAttribute(\"data-salt-style\", id);\n styleMap.styleElement.textContent = css;\n\n styleMap.count = 1;\n\n targetWindow.document.head.insertBefore(\n styleMap.styleElement,\n targetWindow.document.head.firstChild\n );\n } else {\n styleMap.styleElement.textContent = css;\n styleMap.count++;\n }\n sheetsMap.set(id, styleMap);\n windowSheetsMap.set(targetWindow, sheetsMap);\n\n return () => {\n const sheetsMap = windowSheetsMap.get(targetWindow);\n const styleMap = sheetsMap?.get(id);\n if (styleMap?.styleElement) {\n styleMap.count--;\n if (styleMap.count < 1) {\n targetWindow.document.head.removeChild(styleMap.styleElement);\n styleMap.styleElement = null;\n sheetsMap?.delete(id);\n }\n }\n };\n }, [id, css, targetWindow]);\n}\n"],"names":["React","_a","sheetsMap","styleMap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,EAAA,CAAA;AAGA,MAAM,2BACH,EAAc,GAAAA,gBAAA,CAAA,CAAA,EAAG,oBAAuB,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,KAAxC,YAAiDA,gBAAM,CAAA,eAAA,CAAA;AAe1D,MAAM,eAAA,uBAAsB,OAAqC,EAAA,CAAA;AAC1D,SAAS,wBAAyB,CAAA;AAAA,EACvC,EAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAQ,EAAA,YAAA;AACV,CAAmC,EAAA;AACjC,EAAA,uBAAA,CAAwB,MAAM;AAzBhC,IAAA,IAAAC,GAAA,EAAA,EAAA,CAAA;AA0BI,IAAI,IAAA,SAAA,GAAA,CAAYA,MAAA,eAAgB,CAAA,GAAA,CAAI,YAAY,CAAhC,KAAA,IAAA,GAAAA,GAAqC,mBAAA,IAAI,GAAI,EAAA,CAAA;AAC7D,IAAI,IAAA,QAAA,GAAA,CAAW,EAAU,GAAA,SAAA,CAAA,GAAA,CAAI,EAAE,CAAA,KAAhB,YAAqB,EAAE,YAAA,EAAc,IAAM,EAAA,KAAA,EAAO,CAAE,EAAA,CAAA;AAEnE,IAAI,IAAA,QAAA,CAAS,gBAAgB,IAAM,EAAA;AACjC,MAAA,QAAA,CAAS,YAAe,GAAA,YAAA,CAAa,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA,CAAA;AACnE,MAAS,QAAA,CAAA,YAAA,CAAa,YAAa,CAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AACrD,MAAS,QAAA,CAAA,YAAA,CAAa,YAAa,CAAA,iBAAA,EAAmB,EAAE,CAAA,CAAA;AACxD,MAAA,QAAA,CAAS,aAAa,WAAc,GAAA,GAAA,CAAA;AAEpC,MAAA,QAAA,CAAS,KAAQ,GAAA,CAAA,CAAA;AAEjB,MAAA,YAAA,CAAa,SAAS,IAAK,CAAA,YAAA;AAAA,QACzB,QAAS,CAAA,YAAA;AAAA,QACT,YAAA,CAAa,SAAS,IAAK,CAAA,UAAA;AAAA,OAC7B,CAAA;AAAA,KACK,MAAA;AACL,MAAA,QAAA,CAAS,aAAa,WAAc,GAAA,GAAA,CAAA;AACpC,MAAS,QAAA,CAAA,KAAA,EAAA,CAAA;AAAA,KACX;AACA,IAAU,SAAA,CAAA,GAAA,CAAI,IAAI,QAAQ,CAAA,CAAA;AAC1B,IAAgB,eAAA,CAAA,GAAA,CAAI,cAAc,SAAS,CAAA,CAAA;AAE3C,IAAA,OAAO,MAAM;AACX,MAAMC,MAAAA,UAAAA,GAAY,eAAgB,CAAA,GAAA,CAAI,YAAY,CAAA,CAAA;AAClD,MAAA,MAAMC,SAAWD,GAAAA,UAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAW,GAAI,CAAA,EAAA,CAAA,CAAA;AAChC,MAAIC,IAAAA,SAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAU,YAAc,EAAA;AAC1B,QAAAA,SAAS,CAAA,KAAA,EAAA,CAAA;AACT,QAAIA,IAAAA,SAAAA,CAAS,QAAQ,CAAG,EAAA;AACtB,UAAA,YAAA,CAAa,QAAS,CAAA,IAAA,CAAK,WAAYA,CAAAA,SAAAA,CAAS,YAAY,CAAA,CAAA;AAC5D,UAAAA,UAAS,YAAe,GAAA,IAAA,CAAA;AACxB,UAAAD,UAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAW,MAAO,CAAA,EAAA,CAAA,CAAA;AAAA,SACpB;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,EAAI,EAAA,GAAA,EAAK,YAAY,CAAC,CAAA,CAAA;AAC5B;;;;"}
@@ -0,0 +1,2 @@
1
+ export { useComponentCssInjection } from './use-style-injection/useStyleInjection.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import * as React from 'react';
2
+
3
+ var _a;
4
+ const maybeUseInsertionEffect = (_a = React[`${"useInsertionEffect"}${""}`]) != null ? _a : React.useLayoutEffect;
5
+ const windowSheetsMap = /* @__PURE__ */ new WeakMap();
6
+ function useComponentCssInjection({
7
+ id,
8
+ css,
9
+ window: targetWindow
10
+ }) {
11
+ maybeUseInsertionEffect(() => {
12
+ var _a2, _b;
13
+ let sheetsMap = (_a2 = windowSheetsMap.get(targetWindow)) != null ? _a2 : /* @__PURE__ */ new Map();
14
+ let styleMap = (_b = sheetsMap.get(id)) != null ? _b : { styleElement: null, count: 0 };
15
+ if (styleMap.styleElement == null) {
16
+ styleMap.styleElement = targetWindow.document.createElement("style");
17
+ styleMap.styleElement.setAttribute("type", "text/css");
18
+ styleMap.styleElement.setAttribute("data-salt-style", id);
19
+ styleMap.styleElement.textContent = css;
20
+ styleMap.count = 1;
21
+ targetWindow.document.head.insertBefore(
22
+ styleMap.styleElement,
23
+ targetWindow.document.head.firstChild
24
+ );
25
+ } else {
26
+ styleMap.styleElement.textContent = css;
27
+ styleMap.count++;
28
+ }
29
+ sheetsMap.set(id, styleMap);
30
+ windowSheetsMap.set(targetWindow, sheetsMap);
31
+ return () => {
32
+ const sheetsMap2 = windowSheetsMap.get(targetWindow);
33
+ const styleMap2 = sheetsMap2 == null ? void 0 : sheetsMap2.get(id);
34
+ if (styleMap2 == null ? void 0 : styleMap2.styleElement) {
35
+ styleMap2.count--;
36
+ if (styleMap2.count < 1) {
37
+ targetWindow.document.head.removeChild(styleMap2.styleElement);
38
+ styleMap2.styleElement = null;
39
+ sheetsMap2 == null ? void 0 : sheetsMap2.delete(id);
40
+ }
41
+ }
42
+ };
43
+ }, [id, css, targetWindow]);
44
+ }
45
+
46
+ export { useComponentCssInjection };
47
+ //# sourceMappingURL=useStyleInjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStyleInjection.js","sources":["../src/use-style-injection/useStyleInjection.ts"],"sourcesContent":["import * as React from \"react\";\n\n// eslint-disable-next-line -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeUseInsertionEffect: typeof React.useLayoutEffect =\n (React as any)[`${\"useInsertionEffect\"}${\"\"}`] ?? React.useLayoutEffect;\n\ntype WindowLike = Window & typeof globalThis;\n\nexport interface UseComponentCssInjection {\n id: string;\n css: string;\n window: WindowLike;\n}\n\ntype StyleElementMap = Map<\n string,\n { styleElement: HTMLStyleElement | null; count: number }\n>;\n\nconst windowSheetsMap = new WeakMap<WindowLike, StyleElementMap>();\nexport function useComponentCssInjection({\n id,\n css,\n window: targetWindow,\n}: UseComponentCssInjection): void {\n maybeUseInsertionEffect(() => {\n let sheetsMap = windowSheetsMap.get(targetWindow) ?? new Map();\n let styleMap = sheetsMap.get(id) ?? { styleElement: null, count: 0 };\n\n if (styleMap.styleElement == null) {\n styleMap.styleElement = targetWindow.document.createElement(\"style\");\n styleMap.styleElement.setAttribute(\"type\", \"text/css\");\n styleMap.styleElement.setAttribute(\"data-salt-style\", id);\n styleMap.styleElement.textContent = css;\n\n styleMap.count = 1;\n\n targetWindow.document.head.insertBefore(\n styleMap.styleElement,\n targetWindow.document.head.firstChild\n );\n } else {\n styleMap.styleElement.textContent = css;\n styleMap.count++;\n }\n sheetsMap.set(id, styleMap);\n windowSheetsMap.set(targetWindow, sheetsMap);\n\n return () => {\n const sheetsMap = windowSheetsMap.get(targetWindow);\n const styleMap = sheetsMap?.get(id);\n if (styleMap?.styleElement) {\n styleMap.count--;\n if (styleMap.count < 1) {\n targetWindow.document.head.removeChild(styleMap.styleElement);\n styleMap.styleElement = null;\n sheetsMap?.delete(id);\n }\n }\n };\n }, [id, css, targetWindow]);\n}\n"],"names":["_a","sheetsMap","styleMap"],"mappings":";;AAAA,IAAA,EAAA,CAAA;AAGA,MAAM,2BACH,EAAc,GAAA,KAAA,CAAA,CAAA,EAAG,oBAAuB,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,KAAxC,YAAiD,KAAM,CAAA,eAAA,CAAA;AAe1D,MAAM,eAAA,uBAAsB,OAAqC,EAAA,CAAA;AAC1D,SAAS,wBAAyB,CAAA;AAAA,EACvC,EAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAQ,EAAA,YAAA;AACV,CAAmC,EAAA;AACjC,EAAA,uBAAA,CAAwB,MAAM;AAzBhC,IAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AA0BI,IAAI,IAAA,SAAA,GAAA,CAAYA,MAAA,eAAgB,CAAA,GAAA,CAAI,YAAY,CAAhC,KAAA,IAAA,GAAAA,GAAqC,mBAAA,IAAI,GAAI,EAAA,CAAA;AAC7D,IAAI,IAAA,QAAA,GAAA,CAAW,EAAU,GAAA,SAAA,CAAA,GAAA,CAAI,EAAE,CAAA,KAAhB,YAAqB,EAAE,YAAA,EAAc,IAAM,EAAA,KAAA,EAAO,CAAE,EAAA,CAAA;AAEnE,IAAI,IAAA,QAAA,CAAS,gBAAgB,IAAM,EAAA;AACjC,MAAA,QAAA,CAAS,YAAe,GAAA,YAAA,CAAa,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA,CAAA;AACnE,MAAS,QAAA,CAAA,YAAA,CAAa,YAAa,CAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AACrD,MAAS,QAAA,CAAA,YAAA,CAAa,YAAa,CAAA,iBAAA,EAAmB,EAAE,CAAA,CAAA;AACxD,MAAA,QAAA,CAAS,aAAa,WAAc,GAAA,GAAA,CAAA;AAEpC,MAAA,QAAA,CAAS,KAAQ,GAAA,CAAA,CAAA;AAEjB,MAAA,YAAA,CAAa,SAAS,IAAK,CAAA,YAAA;AAAA,QACzB,QAAS,CAAA,YAAA;AAAA,QACT,YAAA,CAAa,SAAS,IAAK,CAAA,UAAA;AAAA,OAC7B,CAAA;AAAA,KACK,MAAA;AACL,MAAA,QAAA,CAAS,aAAa,WAAc,GAAA,GAAA,CAAA;AACpC,MAAS,QAAA,CAAA,KAAA,EAAA,CAAA;AAAA,KACX;AACA,IAAU,SAAA,CAAA,GAAA,CAAI,IAAI,QAAQ,CAAA,CAAA;AAC1B,IAAgB,eAAA,CAAA,GAAA,CAAI,cAAc,SAAS,CAAA,CAAA;AAE3C,IAAA,OAAO,MAAM;AACX,MAAMC,MAAAA,UAAAA,GAAY,eAAgB,CAAA,GAAA,CAAI,YAAY,CAAA,CAAA;AAClD,MAAA,MAAMC,SAAWD,GAAAA,UAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAW,GAAI,CAAA,EAAA,CAAA,CAAA;AAChC,MAAIC,IAAAA,SAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAU,YAAc,EAAA;AAC1B,QAAAA,SAAS,CAAA,KAAA,EAAA,CAAA;AACT,QAAIA,IAAAA,SAAAA,CAAS,QAAQ,CAAG,EAAA;AACtB,UAAA,YAAA,CAAa,QAAS,CAAA,IAAA,CAAK,WAAYA,CAAAA,SAAAA,CAAS,YAAY,CAAA,CAAA;AAC5D,UAAAA,UAAS,YAAe,GAAA,IAAA,CAAA;AACxB,UAAAD,UAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAW,MAAO,CAAA,EAAA,CAAA,CAAA;AAAA,SACpB;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,EAAI,EAAA,GAAA,EAAK,YAAY,CAAC,CAAA,CAAA;AAC5B;;;;"}
@@ -0,0 +1 @@
1
+ export * from "./use-style-injection";
@@ -0,0 +1 @@
1
+ export * from "./useStyleInjection";
@@ -0,0 +1,8 @@
1
+ declare type WindowLike = Window & typeof globalThis;
2
+ export interface UseComponentCssInjection {
3
+ id: string;
4
+ css: string;
5
+ window: WindowLike;
6
+ }
7
+ export declare function useComponentCssInjection({ id, css, window: targetWindow, }: UseComponentCssInjection): void;
8
+ export {};
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@salt-ds/styles",
3
+ "version": "0.0.0-snapshot-20230419175619",
4
+ "license": "Apache-2.0",
5
+ "main": "dist-cjs/index.js",
6
+ "sideEffects": false,
7
+ "peerDependencies": {
8
+ "@types/react": ">=16.8.6",
9
+ "react": ">=16.8.0",
10
+ "react-dom": ">=16.8.0"
11
+ },
12
+ "peerDependenciesMeta": {
13
+ "@types/react": {
14
+ "optional": true
15
+ }
16
+ },
17
+ "publishConfig": {
18
+ "directory": "../../dist/salt-ds-styles"
19
+ },
20
+ "module": "dist-es/index.js",
21
+ "typings": "dist-types/index.d.ts",
22
+ "dependencies": {},
23
+ "files": [
24
+ "dist-cjs",
25
+ "dist-es",
26
+ "dist-types",
27
+ "README.md"
28
+ ],
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/jpmorganchase/salt-ds",
32
+ "directory": "packages/styles"
33
+ }
34
+ }