@redneckz/wildless-cms-uni-blocks 0.8.10 → 0.8.11

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.
Files changed (141) hide show
  1. package/bundle/bundle.umd.js +73 -91
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/services/BlockRouter/BlockRouter.d.ts +1 -3
  4. package/bundle/ui-kit/Img/ImgAsPicture.d.ts +0 -2
  5. package/bundle/utils/adjustHref.d.ts +3 -0
  6. package/bundle/utils/dirname.d.ts +1 -0
  7. package/bundle/utils/url.d.ts +2 -2
  8. package/dist/ProjectSettings.js +3 -4
  9. package/dist/ProjectSettings.js.map +1 -1
  10. package/dist/hooks/useLink.js +4 -16
  11. package/dist/hooks/useLink.js.map +1 -1
  12. package/dist/services/BlockRouter/BlockRouter.d.ts +1 -3
  13. package/dist/services/BlockRouter/BlockRouter.js +3 -9
  14. package/dist/services/BlockRouter/BlockRouter.js.map +1 -1
  15. package/dist/services/BlockRouter/useBlockRouterProvider.js +2 -10
  16. package/dist/services/BlockRouter/useBlockRouterProvider.js.map +1 -1
  17. package/dist/setup-fixture.js +3 -4
  18. package/dist/setup-fixture.js.map +1 -1
  19. package/dist/ui-kit/Icon/Icon.js +5 -1
  20. package/dist/ui-kit/Icon/Icon.js.map +1 -1
  21. package/dist/ui-kit/Img/ImgAsPicture.d.ts +0 -2
  22. package/dist/ui-kit/Img/ImgAsPicture.js +18 -21
  23. package/dist/ui-kit/Img/ImgAsPicture.js.map +1 -1
  24. package/dist/utils/adjustHref.d.ts +3 -0
  25. package/dist/utils/adjustHref.js +14 -0
  26. package/dist/utils/adjustHref.js.map +1 -0
  27. package/dist/utils/dirname.d.ts +1 -0
  28. package/dist/utils/dirname.js +5 -0
  29. package/dist/utils/dirname.js.map +1 -0
  30. package/dist/utils/url.d.ts +2 -2
  31. package/dist/utils/url.js +1 -1
  32. package/dist/utils/url.js.map +1 -1
  33. package/dist/wlc.json +0 -1
  34. package/lib/ProjectSettings.js +3 -4
  35. package/lib/ProjectSettings.js.map +1 -1
  36. package/lib/hooks/useLink.js +5 -17
  37. package/lib/hooks/useLink.js.map +1 -1
  38. package/lib/services/BlockRouter/BlockRouter.d.ts +1 -3
  39. package/lib/services/BlockRouter/BlockRouter.js +2 -7
  40. package/lib/services/BlockRouter/BlockRouter.js.map +1 -1
  41. package/lib/services/BlockRouter/useBlockRouterProvider.js +2 -10
  42. package/lib/services/BlockRouter/useBlockRouterProvider.js.map +1 -1
  43. package/lib/setup-fixture.js +3 -4
  44. package/lib/setup-fixture.js.map +1 -1
  45. package/lib/ui-kit/Icon/Icon.js +5 -1
  46. package/lib/ui-kit/Icon/Icon.js.map +1 -1
  47. package/lib/ui-kit/Img/ImgAsPicture.d.ts +0 -2
  48. package/lib/ui-kit/Img/ImgAsPicture.js +17 -19
  49. package/lib/ui-kit/Img/ImgAsPicture.js.map +1 -1
  50. package/lib/utils/adjustHref.d.ts +3 -0
  51. package/lib/utils/adjustHref.js +11 -0
  52. package/lib/utils/adjustHref.js.map +1 -0
  53. package/lib/utils/dirname.d.ts +1 -0
  54. package/lib/utils/dirname.js +2 -0
  55. package/lib/utils/dirname.js.map +1 -0
  56. package/lib/utils/url.d.ts +2 -2
  57. package/lib/utils/url.js +1 -1
  58. package/lib/utils/url.js.map +1 -1
  59. package/lib/wlc.json +0 -1
  60. package/mobile/bundle/bundle.umd.js +73 -91
  61. package/mobile/bundle/bundle.umd.min.js +1 -1
  62. package/mobile/bundle/services/BlockRouter/BlockRouter.d.ts +1 -3
  63. package/mobile/bundle/ui-kit/Img/ImgAsPicture.d.ts +0 -2
  64. package/mobile/bundle/utils/adjustHref.d.ts +3 -0
  65. package/mobile/bundle/utils/dirname.d.ts +1 -0
  66. package/mobile/bundle/utils/url.d.ts +2 -2
  67. package/mobile/dist/ProjectSettings.js +3 -4
  68. package/mobile/dist/ProjectSettings.js.map +1 -1
  69. package/mobile/dist/hooks/useLink.js +4 -16
  70. package/mobile/dist/hooks/useLink.js.map +1 -1
  71. package/mobile/dist/services/BlockRouter/BlockRouter.d.ts +1 -3
  72. package/mobile/dist/services/BlockRouter/BlockRouter.js +3 -9
  73. package/mobile/dist/services/BlockRouter/BlockRouter.js.map +1 -1
  74. package/mobile/dist/services/BlockRouter/useBlockRouterProvider.js +2 -10
  75. package/mobile/dist/services/BlockRouter/useBlockRouterProvider.js.map +1 -1
  76. package/mobile/dist/setup-fixture.js +3 -4
  77. package/mobile/dist/setup-fixture.js.map +1 -1
  78. package/mobile/dist/ui-kit/Icon/Icon.js +5 -1
  79. package/mobile/dist/ui-kit/Icon/Icon.js.map +1 -1
  80. package/mobile/dist/ui-kit/Img/ImgAsPicture.d.ts +0 -2
  81. package/mobile/dist/ui-kit/Img/ImgAsPicture.js +18 -21
  82. package/mobile/dist/ui-kit/Img/ImgAsPicture.js.map +1 -1
  83. package/mobile/dist/utils/adjustHref.d.ts +3 -0
  84. package/mobile/dist/utils/adjustHref.js +14 -0
  85. package/mobile/dist/utils/adjustHref.js.map +1 -0
  86. package/mobile/dist/utils/dirname.d.ts +1 -0
  87. package/mobile/dist/utils/dirname.js +5 -0
  88. package/mobile/dist/utils/dirname.js.map +1 -0
  89. package/mobile/dist/utils/url.d.ts +2 -2
  90. package/mobile/dist/utils/url.js +1 -1
  91. package/mobile/dist/utils/url.js.map +1 -1
  92. package/mobile/dist/wlc.json +0 -1
  93. package/mobile/lib/ProjectSettings.js +3 -4
  94. package/mobile/lib/ProjectSettings.js.map +1 -1
  95. package/mobile/lib/hooks/useLink.js +5 -17
  96. package/mobile/lib/hooks/useLink.js.map +1 -1
  97. package/mobile/lib/services/BlockRouter/BlockRouter.d.ts +1 -3
  98. package/mobile/lib/services/BlockRouter/BlockRouter.js +2 -7
  99. package/mobile/lib/services/BlockRouter/BlockRouter.js.map +1 -1
  100. package/mobile/lib/services/BlockRouter/useBlockRouterProvider.js +2 -10
  101. package/mobile/lib/services/BlockRouter/useBlockRouterProvider.js.map +1 -1
  102. package/mobile/lib/setup-fixture.js +3 -4
  103. package/mobile/lib/setup-fixture.js.map +1 -1
  104. package/mobile/lib/ui-kit/Icon/Icon.js +5 -1
  105. package/mobile/lib/ui-kit/Icon/Icon.js.map +1 -1
  106. package/mobile/lib/ui-kit/Img/ImgAsPicture.d.ts +0 -2
  107. package/mobile/lib/ui-kit/Img/ImgAsPicture.js +17 -19
  108. package/mobile/lib/ui-kit/Img/ImgAsPicture.js.map +1 -1
  109. package/mobile/lib/utils/adjustHref.d.ts +3 -0
  110. package/mobile/lib/utils/adjustHref.js +11 -0
  111. package/mobile/lib/utils/adjustHref.js.map +1 -0
  112. package/mobile/lib/utils/dirname.d.ts +1 -0
  113. package/mobile/lib/utils/dirname.js +2 -0
  114. package/mobile/lib/utils/dirname.js.map +1 -0
  115. package/mobile/lib/utils/url.d.ts +2 -2
  116. package/mobile/lib/utils/url.js +1 -1
  117. package/mobile/lib/utils/url.js.map +1 -1
  118. package/mobile/lib/wlc.json +0 -1
  119. package/mobile/src/ProjectSettings.ts +4 -4
  120. package/mobile/src/hooks/useLink.ts +5 -18
  121. package/mobile/src/services/BlockRouter/BlockRouter.ts +6 -9
  122. package/mobile/src/services/BlockRouter/useBlockRouterProvider.ts +4 -10
  123. package/mobile/src/setup-fixture.ts +5 -4
  124. package/mobile/src/ui-kit/Icon/Icon.tsx +5 -1
  125. package/mobile/src/ui-kit/Img/ImgAsPicture.tsx +23 -28
  126. package/mobile/src/utils/adjustHref.ts +17 -0
  127. package/mobile/src/utils/dirname.ts +1 -0
  128. package/mobile/src/utils/url.ts +2 -3
  129. package/mobile/src/wlc.json +0 -1
  130. package/package.json +1 -1
  131. package/src/ProjectSettings.ts +4 -4
  132. package/src/hooks/useLink.ts +5 -18
  133. package/src/services/BlockRouter/BlockRouter.ts +6 -9
  134. package/src/services/BlockRouter/useBlockRouterProvider.ts +4 -10
  135. package/src/setup-fixture.ts +5 -4
  136. package/src/ui-kit/Icon/Icon.tsx +5 -1
  137. package/src/ui-kit/Img/ImgAsPicture.tsx +23 -28
  138. package/src/utils/adjustHref.ts +17 -0
  139. package/src/utils/dirname.ts +1 -0
  140. package/src/utils/url.ts +2 -3
  141. package/src/wlc.json +0 -1
@@ -3,10 +3,11 @@ import { useEffect, useState } from 'react';
3
3
  import { handlerDecorator } from './hooks/handlerDecorator.js';
4
4
  import { useRouter } from './hooks/useRouter.js';
5
5
  import { projectSettings } from './ProjectSettings.js';
6
+ import { joinPath } from './utils/url.js';
6
7
  import wlc from './wlc.json.js';
7
8
  projectSettings.setup(wlc);
8
9
  useRouter.setup(() => {
9
- const [href, setHref] = useState(`${globalThis.location.origin}${projectSettings.BASE_PATH}cards-credit`);
10
+ const [href, setHref] = useState(joinPath(globalThis.location.origin, projectSettings.BASE_PATH, 'cards-credit'));
10
11
  useEffect(() => {
11
12
  const handleHistoryChange = () => {
12
13
  setHref(globalThis.location.href);
@@ -18,9 +19,7 @@ useRouter.setup(() => {
18
19
  }, []);
19
20
  return {
20
21
  href,
21
- pathname: projectSettings.BASE_PATH
22
- ? new URL(href).pathname.substring(projectSettings.BASE_PATH.length - 1)
23
- : '',
22
+ pathname: new URL(href).pathname.substring(projectSettings.BASE_PATH ? projectSettings.BASE_PATH.length - 1 : 0),
24
23
  query: {},
25
24
  push: (url) => {
26
25
  globalThis.history.pushState(null, '', url);
@@ -1 +1 @@
1
- {"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAC9B,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,cAAc,CACxE,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAE7D,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,eAAe,CAAC,SAAS;YACjC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACxE,CAAC,CAAC,EAAE;QACN,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAC9B,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,CAChF,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAE7D,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CACxC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACrE;QACD,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
+ import { useRouter } from '../../hooks/useRouter.js';
3
4
  import { projectSettings } from '../../ProjectSettings.js';
5
+ import { adjustHref } from '../../utils/adjustHref.js';
4
6
  import { style } from '../../utils/style.js';
7
+ import { joinPath } from '../../utils/url.js';
5
8
  const svgUseStyleMap = {
6
9
  normal: '',
7
10
  color: 'text-primary-main',
@@ -9,7 +12,8 @@ const svgUseStyleMap = {
9
12
  white: 'text-black',
10
13
  };
11
14
  export const Icon = JSX(({ className = '', imageClassName = '', name = '', alt = `Иконка ${name}`, title = alt, iconVersion = 'color', asSVG, ...imgProps }) => {
12
- const href = `${projectSettings.CDN || ''}icons/${name}.svg`;
15
+ const router = useRouter();
16
+ const href = adjustHref(router)(joinPath(projectSettings.CDN, '/icons', `${name}.svg`));
13
17
  if (asSVG && iconVersion !== 'normal') {
14
18
  return (_jsx(Background, { className: className, children: _jsxs("svg", { className: style(getSvgSize(imgProps.width), svgUseStyleMap[iconVersion], iconVersion === 'white' ? 'invert' : '', imageClassName), ...imgProps, "aria-hidden": "true", children: [title ? _jsx("title", { children: title }) : null, alt ? _jsx("desc", { children: alt }) : null, _jsx("use", { href: `${href}#icon`, xlinkHref: `${href}#icon` })] }) }));
15
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../src/ui-kit/Icon/Icon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,MAAM,cAAc,GAAgC;IAClD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CACrB,CAAC,EACC,SAAS,GAAG,EAAE,EACd,cAAc,GAAG,EAAE,EACnB,IAAI,GAAG,EAAE,EACT,GAAG,GAAG,UAAU,IAAI,EAAE,EACtB,KAAK,GAAG,GAAG,EACX,WAAW,GAAG,OAAO,EACrB,KAAK,EACL,GAAG,QAAQ,EACZ,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,GAAG,eAAe,CAAC,GAAG,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC;IAE7D,IAAI,KAAK,IAAI,WAAW,KAAK,QAAQ,EAAE;QACrC,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,YAC9B,eACE,SAAS,EAAE,KAAK,CACd,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC1B,cAAc,CAAC,WAAW,CAAC,EAC3B,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EACvC,cAAc,CACf,KACG,QAAQ,iBACA,MAAM,aAEjB,KAAK,CAAC,CAAC,CAAC,0BAAQ,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EACrC,GAAG,CAAC,CAAC,CAAC,yBAAO,GAAG,GAAQ,CAAC,CAAC,CAAC,IAAI,EAChC,cAAK,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,OAAO,GAAI,IACpD,GACK,CACd,CAAC;KACH;IAED,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,KACR,QAAQ,iBACA,MAAM,GAClB,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;AAEtE,MAAM,UAAU,GAAG,GAAG,CAAyB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzE,SAAS,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAO,CAAC,CAAC,CAAC,QAAQ,CACnE,CAAC"}
1
+ {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../src/ui-kit/Icon/Icon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,cAAc,GAAgC;IAClD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CACrB,CAAC,EACC,SAAS,GAAG,EAAE,EACd,cAAc,GAAG,EAAE,EACnB,IAAI,GAAG,EAAE,EACT,GAAG,GAAG,UAAU,IAAI,EAAE,EACtB,KAAK,GAAG,GAAG,EACX,WAAW,GAAG,OAAO,EACrB,KAAK,EACL,GAAG,QAAQ,EACZ,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IAExF,IAAI,KAAK,IAAI,WAAW,KAAK,QAAQ,EAAE;QACrC,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,YAC9B,eACE,SAAS,EAAE,KAAK,CACd,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC1B,cAAc,CAAC,WAAW,CAAC,EAC3B,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EACvC,cAAc,CACf,KACG,QAAQ,iBACA,MAAM,aAEjB,KAAK,CAAC,CAAC,CAAC,0BAAQ,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EACrC,GAAG,CAAC,CAAC,CAAC,yBAAO,GAAG,GAAQ,CAAC,CAAC,CAAC,IAAI,EAChC,cAAK,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,OAAO,GAAI,IACpD,GACK,CACd,CAAC;KACH;IAED,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,KACR,QAAQ,iBACA,MAAM,GAClB,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;AAEtE,MAAM,UAAU,GAAG,GAAG,CAAyB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzE,SAAS,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAO,CAAC,CAAC,CAAC,QAAQ,CACnE,CAAC"}
@@ -1,4 +1,2 @@
1
- import type { ImgSource } from '../../model/Picture';
2
1
  import type { ImageProps } from './ImgProps';
3
2
  export declare const ImgAsPicture: import("@redneckz/uni-jsx").UNIComponent<ImageProps, any, any>;
4
- export declare function formatToMimeType(format: ImgSource['format']): string | undefined;
@@ -1,21 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
- const sourcesComparator = (a, b) => {
4
- if (a.media && b.media) {
5
- return a.media - b.media;
6
- }
7
- return 0;
8
- };
3
+ import { useRouter } from '../../hooks/useRouter.js';
4
+ import { adjustHref } from '../../utils/adjustHref.js';
5
+ import { isURL, joinPath } from '../../utils/url.js';
6
+ const sourcesComparator = (a, b) => a?.media && b?.media ? a.media - b.media : 0;
9
7
  export const ImgAsPicture = JSX(({ className = '', image, imageClassName = '', isMobile = false, pathPrefix }) => {
10
- if (!image || (!image?.sources && !image?.src)) {
11
- return null;
12
- }
8
+ const router = useRouter();
13
9
  const pictureStyles = isMobile ? 'flex' : 'flex-none';
14
10
  return (_jsxs("picture", { className: `${pictureStyles} ${className}`, children: [image?.sources?.length
15
11
  ? image.sources
12
+ .filter((_) => _?.src)
16
13
  .sort(sourcesComparator)
17
- .map(({ src, format, media }, index) => (_jsx("source", { srcSet: addPathPrefixToSrcSet(src, pathPrefix), type: formatToMimeType(format), media: media ? `(max-width: ${media}px)` : '', ...image.size }, `${index}_${src}`)))
18
- : null, renderImg({ ...image, src: addPathPrefixToSrc(image.src, pathPrefix) }, imageClassName, isMobile)] }));
14
+ .map(({ src, format, media }, index) => (_jsx("source", { srcSet: adjustSrcset(router, pathPrefix)(src), type: formatToMimeType(format), media: media ? `(max-width: ${media}px)` : '', ...image.size }, `${index}_${src}`)))
15
+ : null, image?.src
16
+ ? renderImg({ ...image, src: adjustSrcset(router, pathPrefix)(image.src) }, imageClassName, isMobile)
17
+ : null] }));
19
18
  });
20
19
  const renderImg = (image, imageClassName = '', isMobile = false) => {
21
20
  const style = {
@@ -27,13 +26,12 @@ const renderImg = (image, imageClassName = '', isMobile = false) => {
27
26
  const imgStyle = isMobile ? 'm-auto' : 'm-0';
28
27
  return (_jsx("img", { src: image.src, className: `${imgStyle} ${imageClassName}`, alt: alt, title: title, style: style, ...image.size }));
29
28
  };
30
- const normalizePathPrefix = (pathPrefix = '') => pathPrefix && !pathPrefix.endsWith('/') ? `${pathPrefix}/` : pathPrefix;
31
- const addPathPrefixToSrc = (src, pathPrefix) => !src || src?.startsWith('data:image') ? src : `${normalizePathPrefix(pathPrefix)}${src}`;
32
- const addPathPrefixToSrcSet = (srcset, pathPrefix) => srcset
33
- ?.split(',')
34
- .map((src) => addPathPrefixToSrc(src.trim(), pathPrefix))
29
+ const adjustSrcset = (router, pathPrefix) => (srcset) => srcset
30
+ ?.split(/\s*,\s*/)
31
+ .map((src) => src.trim())
32
+ .filter(Boolean)
33
+ .map((src) => (isURL(src) ? src : joinPath(pathPrefix, src)))
34
+ .map(adjustHref(router))
35
35
  .join(', ');
36
- export function formatToMimeType(format) {
37
- return format ? `image/${String(format)}` : undefined;
38
- }
36
+ const formatToMimeType = (format) => format ? `image/${String(format)}` : undefined;
39
37
  //# sourceMappingURL=ImgAsPicture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImgAsPicture.js","sourceRoot":"","sources":["../../../src/ui-kit/Img/ImgAsPicture.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImgAsPicture.js","sourceRoot":"","sources":["../../../src/ui-kit/Img/ImgAsPicture.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const adjustHref: (router: {
2
+ pathname: string;
3
+ }) => (href: string | undefined) => string | undefined;
@@ -0,0 +1,11 @@
1
+ import { projectSettings } from '../ProjectSettings.js';
2
+ import { dirname } from './dirname.js';
3
+ import { isURL, joinPath } from './url.js';
4
+ export const adjustHref = (router) => (href) => {
5
+ if (!href || isURL(href) || (projectSettings.CDN && href.startsWith(projectSettings.CDN))) {
6
+ return href;
7
+ }
8
+ const isRelativeToBase = href.startsWith('/');
9
+ return joinPath(projectSettings.BASE_PATH, isRelativeToBase ? '/' : dirname(router.pathname), href);
10
+ };
11
+ //# sourceMappingURL=adjustHref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjustHref.js","sourceRoot":"","sources":["../../src/utils/adjustHref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAA4B,EAAE,EAAE,CAAC,CAAC,IAAwB,EAAE,EAAE;IACvF,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE;QACzF,OAAO,IAAI,CAAC;KACb;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO,QAAQ,CACb,eAAe,CAAC,SAAS,EACzB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EACjD,IAAI,CACL,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const dirname: (path: string | undefined) => string | undefined;
@@ -0,0 +1,2 @@
1
+ export const dirname = (path) => path?.split('/').slice(0, -1).join('/');
2
+ //# sourceMappingURL=dirname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirname.js","sourceRoot":"","sources":["../../src/utils/dirname.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAwB,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { Target } from '../model/LinkProps';
2
- export declare const isURL: (href?: string) => href is `${string}//${string}`;
2
+ export declare const isURL: (href?: string) => href is `${string}:${string}`;
3
3
  export declare const isLocalURL: (href: string | undefined, target?: Target) => boolean;
4
4
  export declare const isHash: (href?: string) => href is `#${string}`;
5
5
  export declare const withoutQuery: (href?: string) => string;
6
- export declare const joinPath: (...path: string[]) => string;
6
+ export declare const joinPath: (...path: (string | undefined)[]) => string;
package/lib/utils/url.js CHANGED
@@ -1,4 +1,4 @@
1
- export const isURL = (href) => Boolean(href?.includes('//'));
1
+ export const isURL = (href) => Boolean(href?.includes(':'));
2
2
  export const isLocalURL = (href, target) => Boolean(href && !isURL(href) && (!target || target === '_self'));
3
3
  export const isHash = (href) => Boolean(href?.startsWith('#'));
4
4
  export const withoutQuery = (href) => (href || '').replace(/\?.*/, '').replace(/\/$/, '');
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAkC,EAAE,CACrE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAE,MAAe,EAAE,EAAE,CACtE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAa,EAAwB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAa,EAAU,EAAE,CACpD,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAc,EAAU,EAAE,CACpD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAiC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAEpG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAE,MAAe,EAAE,EAAE,CACtE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAa,EAAwB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAa,EAAU,EAAE,CACpD,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAA4B,EAAU,EAAE,CAClE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC"}
package/lib/wlc.json CHANGED
@@ -2,6 +2,5 @@
2
2
  "PROD_BRANCH": "master",
3
3
  "FORCED_DRAFT_FLOW": false,
4
4
  "YANDEX_MAP_API_KEY": "f4b40c1e-1891-45f2-b307-90c481af210b",
5
- "BASE_PATH": "/natural/",
6
5
  "SITEMAP": "sayt-rshb"
7
6
  }
@@ -81,12 +81,10 @@
81
81
  return this._.FOOTER;
82
82
  }
83
83
  get CDN() {
84
- return this._.CDN;
84
+ return appendSlash(this._.CDN);
85
85
  }
86
86
  get BASE_PATH() {
87
- return this._.BASE_PATH && !this._.BASE_PATH.endsWith('/')
88
- ? `${this._.BASE_PATH}/`
89
- : this._.BASE_PATH;
87
+ return appendSlash(this._.BASE_PATH);
90
88
  }
91
89
  get YANDEX_MAP_API_KEY() {
92
90
  return this._.YANDEX_MAP_API_KEY;
@@ -95,6 +93,7 @@
95
93
  return this._.YANDEX_METRIKA_ID;
96
94
  }
97
95
  })();
96
+ const appendSlash = (url) => (url && !url.endsWith('/') ? `${url}/` : url);
98
97
 
99
98
  const AUTH_PREFIX = 'guest';
100
99
  const STORAGE_KEY = 'likesToken';
@@ -425,6 +424,49 @@
425
424
  return (jsx("div", { ref: containerRef, className: `transition-max-h duration-300 overflow-hidden ${containerRef.current || !isUnfolded ? 'max-h-0' : ''} ${className}`, children: children }));
426
425
  });
427
426
 
427
+ function useRouter() {
428
+ return useRouter._impl();
429
+ }
430
+ useRouter._impl = () => ({
431
+ href: globalThis.location?.href || '/',
432
+ pathname: globalThis.location?.pathname || '/',
433
+ query: {},
434
+ push: () => {
435
+ // Do nothing
436
+ },
437
+ replace: () => {
438
+ // Do nothing
439
+ },
440
+ });
441
+ useRouter.setup = (impl) => {
442
+ useRouter._impl = impl;
443
+ };
444
+
445
+ const dirname = (path) => path?.split('/').slice(0, -1).join('/');
446
+
447
+ const isURL = (href) => Boolean(href?.includes(':'));
448
+ const isLocalURL = (href, target) => Boolean(href && !isURL(href) && (!target || target === '_self'));
449
+ const isHash = (href) => Boolean(href?.startsWith('#'));
450
+ const withoutQuery = (href) => (href || '').replace(/\?.*/, '').replace(/\/$/, '');
451
+ const joinPath = (...path) => path.filter(Boolean).join('/').replace(/\/+/g, '/');
452
+
453
+ var url = /*#__PURE__*/Object.freeze({
454
+ __proto__: null,
455
+ isURL: isURL,
456
+ isLocalURL: isLocalURL,
457
+ isHash: isHash,
458
+ withoutQuery: withoutQuery,
459
+ joinPath: joinPath
460
+ });
461
+
462
+ const adjustHref = (router) => (href) => {
463
+ if (!href || isURL(href) || (projectSettings.CDN && href.startsWith(projectSettings.CDN))) {
464
+ return href;
465
+ }
466
+ const isRelativeToBase = href.startsWith('/');
467
+ return joinPath(projectSettings.BASE_PATH, isRelativeToBase ? '/' : dirname(router.pathname), href);
468
+ };
469
+
428
470
  const svgUseStyleMap = {
429
471
  normal: '',
430
472
  color: 'text-primary-main',
@@ -432,7 +474,8 @@
432
474
  white: 'text-black',
433
475
  };
434
476
  const Icon = JSX(({ className = '', imageClassName = '', name = '', alt = `Иконка ${name}`, title = alt, iconVersion = 'color', asSVG, ...imgProps }) => {
435
- const href = `${projectSettings.CDN || ''}icons/${name}.svg`;
477
+ const router = useRouter();
478
+ const href = adjustHref(router)(joinPath(projectSettings.CDN, '/icons', `${name}.svg`));
436
479
  if (asSVG && iconVersion !== 'normal') {
437
480
  return (jsx(Background, { className: className, children: jsxs("svg", { className: style(getSvgSize(imgProps.width), svgUseStyleMap[iconVersion], iconVersion === 'white' ? 'invert' : '', imageClassName), ...imgProps, "aria-hidden": "true", children: [title ? jsx("title", { children: title }) : null, alt ? jsx("desc", { children: alt }) : null, jsx("use", { href: `${href}#icon`, xlinkHref: `${href}#icon` })] }) }));
438
481
  }
@@ -441,22 +484,18 @@
441
484
  const getSvgSize = (width) => (width ? '' : 'w-full h-full');
442
485
  const Background = JSX(({ className, children }) => className ? jsx("div", { className: className, children: children }) : children);
443
486
 
444
- const sourcesComparator = (a, b) => {
445
- if (a.media && b.media) {
446
- return a.media - b.media;
447
- }
448
- return 0;
449
- };
487
+ const sourcesComparator = (a, b) => a?.media && b?.media ? a.media - b.media : 0;
450
488
  const ImgAsPicture = JSX(({ className = '', image, imageClassName = '', isMobile = false, pathPrefix }) => {
451
- if (!image || (!image?.sources && !image?.src)) {
452
- return null;
453
- }
489
+ const router = useRouter();
454
490
  const pictureStyles = isMobile ? 'flex' : 'flex-none';
455
491
  return (jsxs("picture", { className: `${pictureStyles} ${className}`, children: [image?.sources?.length
456
492
  ? image.sources
493
+ .filter((_) => _?.src)
457
494
  .sort(sourcesComparator)
458
- .map(({ src, format, media }, index) => (jsx("source", { srcSet: addPathPrefixToSrcSet(src, pathPrefix), type: formatToMimeType(format), media: media ? `(max-width: ${media}px)` : '', ...image.size }, `${index}_${src}`)))
459
- : null, renderImg({ ...image, src: addPathPrefixToSrc(image.src, pathPrefix) }, imageClassName, isMobile)] }));
495
+ .map(({ src, format, media }, index) => (jsx("source", { srcSet: adjustSrcset(router, pathPrefix)(src), type: formatToMimeType(format), media: media ? `(max-width: ${media}px)` : '', ...image.size }, `${index}_${src}`)))
496
+ : null, image?.src
497
+ ? renderImg({ ...image, src: adjustSrcset(router, pathPrefix)(image.src) }, imageClassName, isMobile)
498
+ : null] }));
460
499
  });
461
500
  const renderImg = (image, imageClassName = '', isMobile = false) => {
462
501
  const style = {
@@ -468,15 +507,14 @@
468
507
  const imgStyle = isMobile ? 'm-auto' : 'm-0';
469
508
  return (jsx("img", { src: image.src, className: `${imgStyle} ${imageClassName}`, alt: alt, title: title, style: style, ...image.size }));
470
509
  };
471
- const normalizePathPrefix = (pathPrefix = '') => pathPrefix && !pathPrefix.endsWith('/') ? `${pathPrefix}/` : pathPrefix;
472
- const addPathPrefixToSrc = (src, pathPrefix) => !src || src?.startsWith('data:image') ? src : `${normalizePathPrefix(pathPrefix)}${src}`;
473
- const addPathPrefixToSrcSet = (srcset, pathPrefix) => srcset
474
- ?.split(',')
475
- .map((src) => addPathPrefixToSrc(src.trim(), pathPrefix))
510
+ const adjustSrcset = (router, pathPrefix) => (srcset) => srcset
511
+ ?.split(/\s*,\s*/)
512
+ .map((src) => src.trim())
513
+ .filter(Boolean)
514
+ .map((src) => (isURL(src) ? src : joinPath(pathPrefix, src)))
515
+ .map(adjustHref(router))
476
516
  .join(', ');
477
- function formatToMimeType(format) {
478
- return format ? `image/${String(format)}` : undefined;
479
- }
517
+ const formatToMimeType = (format) => format ? `image/${String(format)}` : undefined;
480
518
 
481
519
  const ImgInner = JSX(({ className = '', image, imageClassName = '', isMobile, pathPrefix, ...iconProps }) => {
482
520
  if (!image?.src && !image?.icon) {
@@ -666,31 +704,6 @@
666
704
  return (jsxs("div", { className: style(className, listType === 'vertical-list' ? 'relative h-full' : ''), children: [jsx(SwipeListContainer, { containerRef: containerRef, activeIndex: activeIndex, visibleItemCount: 1, gap: gap, padding: padding, onVisibleIndicesChange: scroll.handleVisibleIndicesChange, listType: listType, children: children }), showDots ? (jsx(SwipeListControlDots, { containerRef: containerRef, activeIndex: activeIndex, dotCount: itemCount, listType: listType })) : null] }));
667
705
  });
668
706
 
669
- const normalizeAnchor = (anchor) => anchor?.replace('#', '') || '';
670
- function gotoBlock(router, anchor) {
671
- router.replace(`#${normalizeAnchor(anchor)}`);
672
- }
673
- function trackBlock(router, block) {
674
- router.replace(`#${normalizeAnchor(block?.anchor)}`, undefined, {
675
- scroll: false,
676
- });
677
- }
678
-
679
- const isURL = (href) => Boolean(href?.includes('//'));
680
- const isLocalURL = (href, target) => Boolean(href && !isURL(href) && (!target || target === '_self'));
681
- const isHash = (href) => Boolean(href?.startsWith('#'));
682
- const withoutQuery = (href) => (href || '').replace(/\?.*/, '').replace(/\/$/, '');
683
- const joinPath = (...path) => path.filter(Boolean).join('/').replace(/\/+/g, '/');
684
-
685
- var url = /*#__PURE__*/Object.freeze({
686
- __proto__: null,
687
- isURL: isURL,
688
- isLocalURL: isLocalURL,
689
- isHash: isHash,
690
- withoutQuery: withoutQuery,
691
- joinPath: joinPath
692
- });
693
-
694
707
  /* eslint-disable @typescript-eslint/ban-types */
695
708
  const handlerDecorator = (handler, targetContent) => {
696
709
  return handlerDecorator._impl(handler, targetContent);
@@ -700,53 +713,24 @@
700
713
  handlerDecorator._impl = impl;
701
714
  };
702
715
 
703
- function useRouter() {
704
- return useRouter._impl();
705
- }
706
- useRouter._impl = () => ({
707
- href: globalThis.location?.href || '/',
708
- pathname: globalThis.location?.pathname || '/',
709
- query: {},
710
- push: () => {
711
- // Do nothing
712
- },
713
- replace: () => {
714
- // Do nothing
715
- },
716
- });
717
- useRouter.setup = (impl) => {
718
- useRouter._impl = impl;
719
- };
720
-
721
716
  function useLink(isRemote) {
722
717
  const router = useRouter();
723
718
  return (props) => ({
724
719
  ...props,
725
- href: adjustHref(props.href),
720
+ href: isRemote ? props.href : adjustHref(router)(props.href),
726
721
  'aria-label': props.text,
727
722
  onClick: handlerDecorator(handleHref(props), props),
728
723
  });
729
- function adjustHref(href) {
730
- const isRelativeToBase = !isRemote && href?.startsWith('/');
731
- return projectSettings.BASE_PATH && href && isRelativeToBase
732
- ? joinPath(projectSettings.BASE_PATH, href)
733
- : href;
734
- }
735
724
  function handleHref({ href, target, onClick }) {
736
725
  return (ev) => {
737
726
  onClick && onClick(ev);
738
- if (isRemote || !isLocalURL(href, target)) {
727
+ if (!href || isRemote || !isLocalURL(href, target)) {
739
728
  // Default routing
740
729
  return;
741
730
  }
742
731
  // Client routing
743
732
  ev?.preventDefault();
744
- if (isHash(href)) {
745
- gotoBlock(router, href);
746
- }
747
- else if (href) {
748
- router.push(href);
749
- }
733
+ router.push(href);
750
734
  };
751
735
  }
752
736
  }
@@ -1608,6 +1592,11 @@
1608
1592
  return debouncedCallback;
1609
1593
  };
1610
1594
 
1595
+ const normalizeAnchor = (anchor) => anchor?.replace('#', '') || '';
1596
+ function trackBlock(block) {
1597
+ globalThis.history?.replaceState(globalThis.history?.state, '', `#${normalizeAnchor(block?.anchor)}`);
1598
+ }
1599
+
1611
1600
  const SPECIAL_BLOCK_TYPES = ['Header', 'Footer'];
1612
1601
  const EPS = 0.01;
1613
1602
  const topLineDelta = ([, { target }]) => Math.abs(target.getBoundingClientRect().top);
@@ -1621,7 +1610,6 @@
1621
1610
 
1622
1611
  const isScrolledEnough = () => globalThis.scrollY > (globalThis.innerHeight * 3) / 4;
1623
1612
  function useBlockRouterProvider(scrollTarget = globalThis) {
1624
- const router = useRouter();
1625
1613
  const intersectionsMapRef = useRef(new Map());
1626
1614
  useEffect(() => blockRouterEventBus.subscribe('intersection', ({ block, intersection }) => {
1627
1615
  if (intersectionsMapRef.current) {
@@ -1630,20 +1618,14 @@
1630
1618
  }), []);
1631
1619
  useEffect(() => {
1632
1620
  const handleScroll = debounce(() => {
1633
- if (isScrolledEnough()) {
1634
- const activeBlock = findActiveBlock([...(intersectionsMapRef.current || [])]);
1635
- trackBlock(router, activeBlock);
1636
- }
1637
- else {
1638
- trackBlock(router);
1639
- }
1621
+ trackBlock(isScrolledEnough() ? findActiveBlock([...(intersectionsMapRef.current || [])]) : undefined);
1640
1622
  }, 100);
1641
1623
  scrollTarget.addEventListener('scroll', handleScroll);
1642
1624
  return () => {
1643
1625
  handleScroll.dispose();
1644
1626
  scrollTarget.removeEventListener('scroll', handleScroll);
1645
1627
  };
1646
- }, [router, scrollTarget]);
1628
+ }, [scrollTarget]);
1647
1629
  }
1648
1630
 
1649
1631
  const api = LikeAPI();
@@ -1718,7 +1700,7 @@
1718
1700
  return (list) => list.reduce((acc, el, i) => (acc.length ? acc.concat({ ...sep, key: i }, el) : [el]), []);
1719
1701
  }
1720
1702
 
1721
- const packageVersion = "0.8.10";
1703
+ const packageVersion = "0.8.11";
1722
1704
 
1723
1705
  exports.Blocks = Blocks;
1724
1706
  exports.ContentPage = ContentPage;