@tamagui/use-window-dimensions 2.3.3 → 2.4.0

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.
@@ -33,15 +33,21 @@ function getWindowSize() {
33
33
  return import_react_native.Dimensions.get("window");
34
34
  }
35
35
  var cbs = /* @__PURE__ */new Set();
36
- import_react_native.Dimensions.addEventListener("change", function (param) {
37
- var {
38
- window
39
- } = param;
40
- cbs.forEach(function (cb) {
41
- return cb(window);
36
+ var isListening = false;
37
+ var ensureListening = function () {
38
+ if (isListening) return;
39
+ isListening = true;
40
+ import_react_native.Dimensions.addEventListener("change", function (param) {
41
+ var {
42
+ window
43
+ } = param;
44
+ cbs.forEach(function (cb) {
45
+ return cb(window);
46
+ });
42
47
  });
43
- });
48
+ };
44
49
  function subscribe(cb) {
50
+ ensureListening();
45
51
  cbs.add(cb);
46
52
  return function () {
47
53
  return cbs.delete(cb);
@@ -1 +1 @@
1
- {"version":3,"names":["helpers_native_exports","__export","getWindowSize","subscribe","module","exports","__toCommonJS","import_react_native","require","Dimensions","get","cbs","Set","addEventListener","param","window","forEach","cb","add","delete"],"sources":["../../src/helpers.native.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,sBAAA;AAAAC,QAAA,CAAAD,sBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,sBAAA;AAAA,IAAAO,mBAAA,GAA2BC,OAAA;AACpB,SAASN,cAAA,EAAgB;EAC5B,OAAOK,mBAAA,CAAAE,UAAA,CAAWC,GAAA,CAAI,QAAQ;AAClC;AACA,IAAIC,GAAA,GAAM,mBAAIC,GAAA,CAAI;AAClBL,mBAAA,CAAAE,UAAA,CAAWI,gBAAA,CAAiB,UAAU,UAASC,KAAA,EAAO;EAClD,IAAI;IAAEC;EAAO,IAAID,KAAA;EACjBH,GAAA,CAAIK,OAAA,CAAQ,UAASC,EAAA,EAAI;IACrB,OAAOA,EAAA,CAAGF,MAAM;EACpB,CAAC;AACL,CAAC;AACM,SAASZ,UAAUc,EAAA,EAAI;EAC1BN,GAAA,CAAIO,GAAA,CAAID,EAAE;EACV,OAAO,YAAW;IACd,OAAON,GAAA,CAAIQ,MAAA,CAAOF,EAAE;EACxB;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["helpers_native_exports","__export","getWindowSize","subscribe","module","exports","__toCommonJS","import_react_native","require","Dimensions","get","cbs","Set","isListening","ensureListening","addEventListener","param","window","forEach","cb","add","delete"],"sources":["../../src/helpers.native.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,sBAAA;AAAAC,QAAA,CAAAD,sBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,sBAAA;AAAA,IAAAO,mBAAA,GAA2BC,OAAA;AACpB,SAASN,cAAA,EAAgB;EAC5B,OAAOK,mBAAA,CAAAE,UAAA,CAAWC,GAAA,CAAI,QAAQ;AAClC;AACA,IAAIC,GAAA,GAAM,mBAAIC,GAAA,CAAI;AAClB,IAAIC,WAAA,GAAc;AAClB,IAAIC,eAAA,GAAkB,SAAAA,CAAA,EAAW;EAC7B,IAAID,WAAA,EAAa;EACjBA,WAAA,GAAc;EAIdN,mBAAA,CAAAE,UAAA,CAAWM,gBAAA,CAAiB,UAAU,UAASC,KAAA,EAAO;IAClD,IAAI;MAAEC;IAAO,IAAID,KAAA;IACjBL,GAAA,CAAIO,OAAA,CAAQ,UAASC,EAAA,EAAI;MACrB,OAAOA,EAAA,CAAGF,MAAM;IACpB,CAAC;EACL,CAAC;AACL;AACO,SAASd,UAAUgB,EAAA,EAAI;EAC1BL,eAAA,CAAgB;EAChBH,GAAA,CAAIS,GAAA,CAAID,EAAE;EACV,OAAO,YAAW;IACd,OAAOR,GAAA,CAAIU,MAAA,CAAOF,EAAE;EACxB;AACJ","ignoreList":[]}
@@ -3,15 +3,21 @@ function getWindowSize() {
3
3
  return Dimensions.get("window");
4
4
  }
5
5
  var cbs = /* @__PURE__ */new Set();
6
- Dimensions.addEventListener("change", function (param) {
7
- var {
8
- window
9
- } = param;
10
- cbs.forEach(function (cb) {
11
- return cb(window);
6
+ var isListening = false;
7
+ var ensureListening = function () {
8
+ if (isListening) return;
9
+ isListening = true;
10
+ Dimensions.addEventListener("change", function (param) {
11
+ var {
12
+ window
13
+ } = param;
14
+ cbs.forEach(function (cb) {
15
+ return cb(window);
16
+ });
12
17
  });
13
- });
18
+ };
14
19
  function subscribe(cb) {
20
+ ensureListening();
15
21
  cbs.add(cb);
16
22
  return function () {
17
23
  return cbs.delete(cb);
@@ -1 +1 @@
1
- {"version":3,"names":["Dimensions","getWindowSize","get","cbs","Set","addEventListener","param","window","forEach","cb","subscribe","add","delete"],"sources":["../../src/helpers.native.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AACpB,SAASC,cAAA,EAAgB;EAC5B,OAAOD,UAAA,CAAWE,GAAA,CAAI,QAAQ;AAClC;AACA,IAAIC,GAAA,GAAM,mBAAIC,GAAA,CAAI;AAClBJ,UAAA,CAAWK,gBAAA,CAAiB,UAAU,UAASC,KAAA,EAAO;EAClD,IAAI;IAAEC;EAAO,IAAID,KAAA;EACjBH,GAAA,CAAIK,OAAA,CAAQ,UAASC,EAAA,EAAI;IACrB,OAAOA,EAAA,CAAGF,MAAM;EACpB,CAAC;AACL,CAAC;AACM,SAASG,UAAUD,EAAA,EAAI;EAC1BN,GAAA,CAAIQ,GAAA,CAAIF,EAAE;EACV,OAAO,YAAW;IACd,OAAON,GAAA,CAAIS,MAAA,CAAOH,EAAE;EACxB;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["Dimensions","getWindowSize","get","cbs","Set","isListening","ensureListening","addEventListener","param","window","forEach","cb","subscribe","add","delete"],"sources":["../../src/helpers.native.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AACpB,SAASC,cAAA,EAAgB;EAC5B,OAAOD,UAAA,CAAWE,GAAA,CAAI,QAAQ;AAClC;AACA,IAAIC,GAAA,GAAM,mBAAIC,GAAA,CAAI;AAClB,IAAIC,WAAA,GAAc;AAClB,IAAIC,eAAA,GAAkB,SAAAA,CAAA,EAAW;EAC7B,IAAID,WAAA,EAAa;EACjBA,WAAA,GAAc;EAIdL,UAAA,CAAWO,gBAAA,CAAiB,UAAU,UAASC,KAAA,EAAO;IAClD,IAAI;MAAEC;IAAO,IAAID,KAAA;IACjBL,GAAA,CAAIO,OAAA,CAAQ,UAASC,EAAA,EAAI;MACrB,OAAOA,EAAA,CAAGF,MAAM;IACpB,CAAC;EACL,CAAC;AACL;AACO,SAASG,UAAUD,EAAA,EAAI;EAC1BL,eAAA,CAAgB;EAChBH,GAAA,CAAIU,GAAA,CAAIF,EAAE;EACV,OAAO,YAAW;IACd,OAAOR,GAAA,CAAIW,MAAA,CAAOH,EAAE;EACxB;AACJ","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/use-window-dimensions",
3
- "version": "2.3.3",
3
+ "version": "2.4.0",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "files": [
6
6
  "src",
@@ -34,10 +34,10 @@
34
34
  "clean:build": "tamagui-build clean:build"
35
35
  },
36
36
  "dependencies": {
37
- "@tamagui/constants": "2.3.3"
37
+ "@tamagui/constants": "2.4.0"
38
38
  },
39
39
  "devDependencies": {
40
- "@tamagui/build": "2.3.3",
40
+ "@tamagui/build": "2.4.0",
41
41
  "react": ">=19",
42
42
  "react-native": "0.83.2"
43
43
  },
@@ -7,11 +7,20 @@ export function getWindowSize(): WindowSize {
7
7
 
8
8
  const cbs = new Set<WindowSizeListener>()
9
9
 
10
- Dimensions.addEventListener('change', ({ window }) => {
11
- cbs.forEach((cb) => cb(window))
12
- })
10
+ let isListening = false
11
+ const ensureListening = () => {
12
+ if (isListening) return
13
+ isListening = true
14
+ // lazy-register: on Hermes, evaluating Dimensions.addEventListener at module
15
+ // top-level can fire before RN's Dimensions module finishes wiring up its
16
+ // event interface, throwing ReferenceError. Defer until first subscriber.
17
+ Dimensions.addEventListener('change', ({ window }) => {
18
+ cbs.forEach((cb) => cb(window))
19
+ })
20
+ }
13
21
 
14
22
  export function subscribe(cb: WindowSizeListener): () => void {
23
+ ensureListening()
15
24
  cbs.add(cb)
16
25
  return () => cbs.delete(cb)
17
26
  }
@@ -1,11 +1,11 @@
1
1
  {
2
- "mappings": "AACA,cAAc,YAAY,0BAA0B;AAEpD,OAAO,iBAAS,iBAAiB;AAUjC,OAAO,iBAAS,UAAU,IAAI",
2
+ "mappings": "AACA,cAAc,YAAY,0BAA0B;AAEpD,OAAO,iBAAS,iBAAiB;AAkBjC,OAAO,iBAAS,UAAU,IAAI",
3
3
  "names": [],
4
4
  "sources": [
5
5
  "src/helpers.native.ts"
6
6
  ],
7
7
  "version": 3,
8
8
  "sourcesContent": [
9
- "import { Dimensions } from 'react-native'\nimport type { WindowSize, WindowSizeListener } from './types'\n\nexport function getWindowSize(): WindowSize {\n return Dimensions.get('window')\n}\n\nconst cbs = new Set<WindowSizeListener>()\n\nDimensions.addEventListener('change', ({ window }) => {\n cbs.forEach((cb) => cb(window))\n})\n\nexport function subscribe(cb: WindowSizeListener): () => void {\n cbs.add(cb)\n return () => cbs.delete(cb)\n}\n"
9
+ "import { Dimensions } from 'react-native'\nimport type { WindowSize, WindowSizeListener } from './types'\n\nexport function getWindowSize(): WindowSize {\n return Dimensions.get('window')\n}\n\nconst cbs = new Set<WindowSizeListener>()\n\nlet isListening = false\nconst ensureListening = () => {\n if (isListening) return\n isListening = true\n // lazy-register: on Hermes, evaluating Dimensions.addEventListener at module\n // top-level can fire before RN's Dimensions module finishes wiring up its\n // event interface, throwing ReferenceError. Defer until first subscriber.\n Dimensions.addEventListener('change', ({ window }) => {\n cbs.forEach((cb) => cb(window))\n })\n}\n\nexport function subscribe(cb: WindowSizeListener): () => void {\n ensureListening()\n cbs.add(cb)\n return () => cbs.delete(cb)\n}\n"
10
10
  ]
11
11
  }