silentium 0.0.2 → 0.0.3

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 (93) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/beforeRelease.sh +11 -0
  3. package/dist/silentium.cjs +39 -63
  4. package/dist/silentium.cjs.map +1 -1
  5. package/dist/silentium.d.ts +34 -53
  6. package/dist/silentium.js +40 -63
  7. package/dist/silentium.js.map +1 -1
  8. package/dist/silentium.min.js +1 -1
  9. package/dist/silentium.min.mjs +1 -1
  10. package/dist/silentium.min.mjs.map +1 -1
  11. package/dist/silentium.mjs +40 -63
  12. package/dist/silentium.mjs.map +1 -1
  13. package/docs/assets/css/base.css +15 -0
  14. package/docs/assets/css/custom.css +72 -0
  15. package/docs/assets/img/logo.svg +1522 -0
  16. package/docs/assets/js/components/linkDynamic.mjs +14 -0
  17. package/docs/assets/js/components/linkReloadable.mjs +17 -0
  18. package/docs/assets/js/components.mjs +2 -0
  19. package/docs/assets/js/index.mjs +74 -0
  20. package/docs/assets/js/lib/StyleFetched.mjs +19 -0
  21. package/docs/build.sh +7 -3
  22. package/docs/buildRoutes.sh +15 -0
  23. package/docs/favicon.ico +0 -0
  24. package/docs/index-dev.html +4 -80
  25. package/docs/index.html +6 -82
  26. package/docs/pages/compatibility/elegant-objects.html +4 -4
  27. package/docs/pages/examples/errors.html +2 -2
  28. package/docs/pages/examples.html +12 -14
  29. package/docs/pages/guest/guest-applied.html +9 -5
  30. package/docs/pages/guest/guest-cast.html +20 -26
  31. package/docs/pages/guest/guest-disposable.html +32 -42
  32. package/docs/pages/guest/guest-executor-applied.html +21 -17
  33. package/docs/pages/guest/guest-object.html +22 -26
  34. package/docs/pages/guest/guest-pool.html +17 -18
  35. package/docs/pages/guest/guest-sync.html +7 -2
  36. package/docs/pages/guest/index.html +18 -29
  37. package/docs/pages/guest.html +112 -18
  38. package/docs/pages/index.html +24 -52
  39. package/docs/pages/integrations/vue.html +5 -8
  40. package/docs/pages/patron/index.html +14 -20
  41. package/docs/pages/patron/patron-applied.html +2 -2
  42. package/docs/pages/patron/patron-executor-applied.html +2 -2
  43. package/docs/pages/patron/patron-once.html +12 -18
  44. package/docs/pages/patron/patron-pool.html +12 -18
  45. package/docs/pages/patron.html +137 -16
  46. package/docs/pages/philosofy.html +30 -49
  47. package/docs/pages/source/index.html +11 -14
  48. package/docs/pages/source/source-all.html +9 -12
  49. package/docs/pages/source/source-applied.html +2 -2
  50. package/docs/pages/source/source-dynamic.html +3 -3
  51. package/docs/pages/source/source-executor-applied.html +2 -2
  52. package/docs/pages/source/source-map.html +5 -5
  53. package/docs/pages/source/source-once.html +2 -2
  54. package/docs/pages/source/source-race.html +10 -10
  55. package/docs/pages/source/source-sequence.html +2 -2
  56. package/docs/pages/source/source-with-pool.html +8 -11
  57. package/docs/pages/source/source.html +11 -14
  58. package/docs/pages/source.html +162 -31
  59. package/docs/pages/terminology/source.html +5 -9
  60. package/docs/pages/terminology.html +12 -18
  61. package/docs/pages/utils.html +33 -21
  62. package/docs/routes.json +1 -0
  63. package/docs/template.html +4 -80
  64. package/eslint.config.mjs +3 -0
  65. package/package.json +2 -2
  66. package/src/Guest/Guest.ts +3 -3
  67. package/src/Guest/GuestApplied.ts +1 -1
  68. package/src/Guest/GuestCast.ts +1 -1
  69. package/src/Guest/GuestDisposable.ts +1 -1
  70. package/src/Guest/GuestExecutorApplied.ts +1 -1
  71. package/src/Guest/GuestObject.ts +1 -1
  72. package/src/Guest/GuestPool.ts +1 -1
  73. package/src/Guest/GuestSync.ts +1 -1
  74. package/src/Patron/Patron.ts +2 -2
  75. package/src/Patron/PatronApplied.ts +1 -1
  76. package/src/Patron/PatronExecutorApplied.ts +1 -1
  77. package/src/Patron/PatronOnce.ts +1 -1
  78. package/src/Patron/PatronPool.ts +4 -4
  79. package/src/Private/Private.ts +1 -1
  80. package/src/Source/Source.ts +4 -4
  81. package/src/Source/SourceAll.ts +1 -1
  82. package/src/Source/SourceApplied.ts +1 -1
  83. package/src/Source/SourceDynamic.ts +1 -1
  84. package/src/Source/SourceExecutorApplied.ts +1 -1
  85. package/src/Source/SourceMap.ts +1 -1
  86. package/src/Source/SourceOnce.ts +1 -1
  87. package/src/Source/SourceRace.ts +1 -1
  88. package/src/Source/SourceSequence.ts +1 -1
  89. package/src/Source/SourceWithPool.ts +1 -1
  90. package/src/index.ts +0 -1
  91. package/docs/pages/source/source-active.html +0 -120
  92. package/src/Source/SourceActive.test.ts +0 -13
  93. package/src/Source/SourceActive.ts +0 -41
@@ -1,3 +1,8 @@
1
+ <div class="breadcrumbs mb-4">
2
+ <link-dynamic href="/">Главная</link-dynamic>
3
+ <link-dynamic href="/guest">Guest</link-dynamic>
4
+ </div>
5
+
1
6
  <h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestDisposable</h1>
2
7
 
3
8
  <a
@@ -15,32 +20,23 @@
15
20
 
16
21
  <p class="text-gray-600 text-lg mb-4">
17
22
  Предназначен для динамического создания
18
- <span class="dynamic-navigation">
19
- <a
20
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
21
- href="/terminology/the-guest"
22
- >
23
- гостя
24
- </a>
25
- </span>
23
+ <link-dynamic
24
+ href="/terminology/guest"
25
+ >
26
+ гостя
27
+ </link-dynamic>
26
28
  с функциональностью его удаления из
27
- <span class="dynamic-navigation">
28
- <a
29
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
30
- href="/patron/patron-pool"
31
- >
32
- пула патронов
33
- </a>
34
- </span>
29
+ <link-dynamic
30
+ href="/patron/patron-pool"
31
+ >
32
+ пула патронов
33
+ </link-dynamic>
35
34
  , на случай, если гость станет
36
- <span class="dynamic-navigation">
37
- <a
38
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
39
- href="/terminology/the-patron"
40
- >
41
- патроном
42
- </a>
43
- </span>
35
+ <link-dynamic
36
+ href="/terminology/patron"
37
+ >
38
+ патроном
39
+ </link-dynamic>
44
40
  </p>
45
41
 
46
42
  <p class="text-gray-600 text-lg mb-4">
@@ -53,28 +49,22 @@
53
49
 
54
50
  <p class="text-gray-600 text-lg mb-4">
55
51
  Вместо класса GuestDisposable можно использовать функцию
56
- <span class="dynamic-navigation">
57
- <a
58
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
59
- href="/utils/remove-patron-from-pools"
60
- >
61
- removePatronFromPools
62
- </a>
63
- </span>
52
+ <link-dynamic
53
+ href="/utils/remove-patron-from-pools"
54
+ >
55
+ removePatronFromPools
56
+ </link-dynamic>
64
57
  - для того чтобы удалить патрон из всех пулов. либо функцию
65
- <span class="dynamic-navigation">
66
- <a
67
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
68
- href="/utils/is-patron-in-pools"
69
- >
70
- isPatronInPools
71
- </a>
72
- </span>
58
+ <link-dynamic
59
+ href="/utils/is-patron-in-pools"
60
+ >
61
+ isPatronInPools
62
+ </link-dynamic>
73
63
  - проверяет есть ли патрон в каком-либо пуле
74
64
  </p>
75
65
 
76
66
  <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
77
- <pre class="mb-4"><code class="language-js">import { SourceWithPool, Patron, GuestDisposable } from "patron-oop";
67
+ <pre class="mb-4"><code class="language-js">import { SourceWithPool, Patron, GuestDisposable } from "silentium";
78
68
 
79
69
  const source = new SourceWithPool("Один");
80
70
 
@@ -105,7 +95,7 @@
105
95
  <span class="guest-result">Нет значения</span>
106
96
  </div>
107
97
  <script type="module">
108
- import { SourceWithPool, Patron, GuestDisposable } from "patron-oop";
98
+ import { SourceWithPool, Patron, GuestDisposable } from "silentium";
109
99
 
110
100
  const source = new SourceWithPool("Один");
111
101
 
@@ -1,3 +1,8 @@
1
+ <div class="breadcrumbs mb-4">
2
+ <link-dynamic href="/">Главная</link-dynamic>
3
+ <link-dynamic href="/guest">Guest</link-dynamic>
4
+ </div>
5
+
1
6
  <h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestExecutorApplied</h1>
2
7
 
3
8
  <a
@@ -21,31 +26,30 @@
21
26
  <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
22
27
  <pre
23
28
  class="mb-4 w-full"
24
- ><code class="language-js">import { Guest, GuestExecutorApplied, sourceOf } from "patron-oop";
29
+ ><code class="language-js">import { Guest, GuestExecutorApplied, sourceOf } from "silentium";
25
30
 
26
- const guest = new Guest((value) => {
27
- document.querySelector(
28
- ".guest-result"
29
- ).textContent = `value is ${value}`;
30
- });
31
+ const guest = new Guest((value) => {
32
+ document.querySelector(
33
+ ".guest-result"
34
+ ).textContent = `value is ${value}`;
35
+ });
31
36
 
32
- sourceOf(40).value(
33
- new GuestExecutorApplied(guest, (guestFn) => {
34
- return v => {
35
- setTimeout(() => {
36
- guestFn(v);
37
- }, 5000)
38
- }
39
- })
40
- );
41
- </code></pre>
37
+ sourceOf(40).value(
38
+ new GuestExecutorApplied(guest, (guestFn) => {
39
+ return v => {
40
+ setTimeout(() => {
41
+ guestFn(v);
42
+ }, 5000)
43
+ }
44
+ })
45
+ );</code></pre>
42
46
 
43
47
  <p class="text-gray-600 text-lg mb-0 font-bold">Результат 1.</p>
44
48
  <div class="example mb-4">
45
49
  <span class="guest-result">Результат через 5 сек...</span>
46
50
  </div>
47
51
  <script type="module">
48
- import { Guest, GuestExecutorApplied, sourceOf } from "patron-oop";
52
+ import { Guest, GuestExecutorApplied, sourceOf } from "silentium";
49
53
 
50
54
  const guest = new Guest((value) => {
51
55
  document.querySelector(
@@ -1,3 +1,8 @@
1
+ <div class="breadcrumbs mb-4">
2
+ <link-dynamic href="/">Главная</link-dynamic>
3
+ <link-dynamic href="/guest">Guest</link-dynamic>
4
+ </div>
5
+
1
6
  <h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestObject</h1>
2
7
 
3
8
  <a
@@ -15,14 +20,11 @@
15
20
 
16
21
  <p class="text-gray-600 text-lg mb-4">
17
22
  Предназначен для перевода любого
18
- <span class="dynamic-navigation">
19
- <a
20
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
21
- href="/terminology/visitor"
22
- >
23
- посетителя
24
- </a>
25
- </span>
23
+ <link-dynamic
24
+ href="/terminology/visitor"
25
+ >
26
+ посетителя
27
+ </link-dynamic>
26
28
  в объектный вид, чтобы можно было вызывать .give метод
27
29
  </p>
28
30
 
@@ -35,29 +37,23 @@
35
37
  <p class="text-gray-600 text-lg mb-4">
36
38
  Этот класс может быть заменен функцией give, которой неважно какой посетитель
37
39
  к ней пришел функция,
38
- <span class="dynamic-navigation">
39
- <a
40
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
41
- href="/terminology/the-guest"
42
- >
43
- гость
44
- </a>
45
- </span>
40
+ <link-dynamic
41
+ href="/terminology/guest"
42
+ >
43
+ гость
44
+ </link-dynamic>
46
45
  или
47
- <span class="dynamic-navigation">
48
- <a
49
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
50
- href="/terminology/the-patron"
51
- >
52
- патрон
53
- </a>
54
- </span>
46
+ <link-dynamic
47
+ href="/terminology/patron"
48
+ >
49
+ патрон
50
+ </link-dynamic>
55
51
  </p>
56
52
 
57
53
  <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
58
54
  <pre
59
55
  class="mb-4"
60
- ><code class="language-js">import { GuestObject } from 'patron-oop';
56
+ ><code class="language-js">import { GuestObject } from 'silentium';
61
57
 
62
58
  class HelloWorld {
63
59
  greeting(guest) {
@@ -76,7 +72,7 @@ new HelloWorld().greeting(fnGuest);
76
72
  <span class="guest-result">Ждем результат</span>
77
73
  </div>
78
74
  <script type="module">
79
- import { GuestObject } from "patron-oop";
75
+ import { GuestObject } from "silentium";
80
76
 
81
77
  class HelloWorld {
82
78
  greeting(guest) {
@@ -1,3 +1,8 @@
1
+ <div class="breadcrumbs mb-4">
2
+ <link-dynamic href="/">Главная</link-dynamic>
3
+ <link-dynamic href="/guest">Guest</link-dynamic>
4
+ </div>
5
+
1
6
  <h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestPool</h1>
2
7
 
3
8
  <a
@@ -15,24 +20,18 @@
15
20
 
16
21
  <p class="text-gray-600 text-lg mb-4">
17
22
  Предназначен для подписки на отложенное значение не только
18
- <span class="dynamic-navigation">
19
- <a
20
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
21
- href="/terminology/the-patron"
22
- >
23
- патрона
24
- </a>
25
- </span>
23
+ <link-dynamic
24
+ href="/terminology/patron"
25
+ >
26
+ патрона
27
+ </link-dynamic>
26
28
 
27
29
  но и
28
- <span class="dynamic-navigation">
29
- <a
30
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
31
- href="/terminology/the-guest"
32
- >
33
- гостя
34
- </a>
35
- </span>
30
+ <link-dynamic
31
+ href="/terminology/guest"
32
+ >
33
+ гостя
34
+ </link-dynamic>
36
35
  </p>
37
36
 
38
37
  <p class="text-gray-600 text-lg mb-4">
@@ -45,7 +44,7 @@
45
44
  <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
46
45
  <pre
47
46
  class="mb-4"
48
- ><code class="language-js">import { GuestPool } from 'patron-oop';
47
+ ><code class="language-js">import { GuestPool } from 'silentium';
49
48
 
50
49
  class ValueAfterDelay {
51
50
  constructor(theValue, delay) {
@@ -73,7 +72,7 @@ new ValueAfterDelay(42, 5000).value(fnGuest);
73
72
  <span class="guest-result">Ждем значение через 5 секунд...</span>
74
73
  </div>
75
74
  <script type="module">
76
- import { GuestPool } from "patron-oop";
75
+ import { GuestPool } from "silentium";
77
76
 
78
77
  class ValueAfterDelay {
79
78
  constructor(theValue, delay) {
@@ -1,3 +1,8 @@
1
+ <div class="breadcrumbs mb-4">
2
+ <link-dynamic href="/">Главная</link-dynamic>
3
+ <link-dynamic href="/guest">Guest</link-dynamic>
4
+ </div>
5
+
1
6
  <h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestSync</h1>
2
7
 
3
8
  <a
@@ -32,7 +37,7 @@
32
37
  <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
33
38
  <pre
34
39
  class="mb-4"
35
- ><code class="language-js">import { SourceWithPool, GuestSync } from 'patron-oop';
40
+ ><code class="language-js">import { SourceWithPool, GuestSync } from 'silentium';
36
41
 
37
42
  const source = new SourceWithPool('Успешно установлено синхронно!');
38
43
  const syncGuest = new GuestSync('');
@@ -46,7 +51,7 @@ document.querySelector('.guest-result').textContent = syncGuest.value();
46
51
  <span class="guest-result">Значение установится синхронно!</span>
47
52
  </div>
48
53
  <script type="module">
49
- import { SourceWithPool, GuestSync } from "patron-oop";
54
+ import { SourceWithPool, GuestSync } from "silentium";
50
55
 
51
56
  const source = new SourceWithPool("Успешно установлено синхронно!");
52
57
  const syncGuest = new GuestSync('');
@@ -15,28 +15,21 @@
15
15
 
16
16
  <p class="text-gray-600 text-lg mb-4">
17
17
  Предназначен для создания новых экземпляров
18
- <span class="dynamic-navigation">
19
- <a
20
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
21
- target="_blank"
22
- href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L12"
23
- >
24
- GuestObjectType
25
- </a>
26
- </span>
18
+ <link-dynamic
19
+ href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L12"
20
+ >
21
+ GuestObjectType
22
+ </link-dynamic>
27
23
  из функции-колбэка
28
24
  </p>
29
25
 
30
26
  <p class="text-gray-600 text-lg mb-4">
31
27
  Это поведение полезно в случаях, когда нужно динамически построить
32
- <span class="dynamic-navigation">
33
- <a
34
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
35
- href="/terminology/visitor"
36
- >
37
- посетителя
38
- </a>
39
- </span>
28
+ <link-dynamic
29
+ href="/terminology/visitor"
30
+ >
31
+ посетителя
32
+ </link-dynamic>
40
33
  на основе функции, используя какие-то переменные из скоупа, где создана
41
34
  функция
42
35
  </p>
@@ -44,7 +37,7 @@
44
37
  <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
45
38
  <pre
46
39
  class="mb-4 w-full"
47
- ><code class="language-js">import { Guest } from 'patron-oop';
40
+ ><code class="language-js">import { Guest } from 'silentium';
48
41
 
49
42
  class Timestamp {
50
43
  seconds(guest) {
@@ -63,7 +56,7 @@ timestamp.seconds(new Guest((timestamp) => {
63
56
  <span class="guest-result">Result here</span>
64
57
  </div>
65
58
  <script type="module">
66
- import { Guest } from "patron-oop";
59
+ import { Guest } from "silentium";
67
60
 
68
61
  class Timestamp {
69
62
  seconds(guest) {
@@ -85,22 +78,18 @@ timestamp.seconds(new Guest((timestamp) => {
85
78
  Возможность создавать объект-посетитель из функции была
86
79
  единственной в первых версиях библиотеки. На текущий момент вы можете также
87
80
  передать функцию-колбэк в качестве посетителя, тк функция соответствует типу
88
- <span class="dynamic-navigation">
89
- <a
90
- class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
91
- target="_blank"
92
- href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L17"
93
- >
94
- GuestType
95
- </a>
96
- </span>
81
+ <link-dynamic
82
+ href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L17"
83
+ >
84
+ GuestType
85
+ </link-dynamic>
97
86
  Это позволяет не создавать лишних объектных-оберток
98
87
  </p>
99
88
 
100
89
  <p class="text-gray-600 text-lg font-bold mb-0">Пример 2.</p>
101
90
  <pre
102
91
  class="mt-0 w-full"
103
- ><code class="language-js">import { Guest } from 'patron-oop';
92
+ ><code class="language-js">import { Guest } from 'silentium';
104
93
 
105
94
  class Timestamp {
106
95
  seconds(guest) {
@@ -12,25 +12,25 @@
12
12
  <div class="w-12 h-1 bg-indigo-500 rounded mt-2 mb-4"></div>
13
13
  <ul class="text-gray-900">
14
14
  <li class="w-full border-b-2 border-neutral-100 py-4">
15
- <a href="/guest/guest-object"> GuestObject </a>
15
+ <a class="dynamic-navigation" href="/guest/guest-object"> GuestObject </a>
16
16
  </li>
17
17
  <li class="w-full border-b-2 border-neutral-100 py-4">
18
- <a href="/guest/guest-sync"> GuestSync </a>
18
+ <a class="dynamic-navigation" href="/guest/guest-sync"> GuestSync </a>
19
19
  </li>
20
20
  <li class="w-full py-4">
21
- <a href="/guest/guest-disposable"> GuestDisposable </a>
21
+ <a class="dynamic-navigation" href="/guest/guest-disposable"> GuestDisposable </a>
22
22
  </li>
23
23
  <li class="w-full border-b-2 border-neutral-100 py-4">
24
- <a href="/guest/guest-cast"> GuestCast </a>
24
+ <a class="dynamic-navigation" href="/guest/guest-cast"> GuestCast </a>
25
25
  </li>
26
26
  <li class="w-full border-b-2 border-neutral-100 py-4">
27
- <a href="/guest/guest-pool"> GuestPool </a>
27
+ <a class="dynamic-navigation" href="/guest/guest-pool"> GuestPool </a>
28
28
  </li>
29
29
  <li class="w-full border-b-2 border-neutral-100 py-4">
30
- <a href="/guest/guest-applied"> GuestApplied </a>
30
+ <a class="dynamic-navigation" href="/guest/guest-applied"> GuestApplied </a>
31
31
  </li>
32
32
  <li class="w-full border-b-2 border-neutral-100 py-4">
33
- <a href="/guest/guest-executor-applied"> GuestExecutorApplied </a>
33
+ <a class="dynamic-navigation" href="/guest/guest-executor-applied"> GuestExecutorApplied </a>
34
34
  </li>
35
35
  </ul>
36
36
  </div>
@@ -38,19 +38,113 @@
38
38
  <div
39
39
  class="w-full sm:w-2/3 sm:pl-8 sm:border-l border-gray-200 sm:border-t-0 border-t mt-4 sm:mt-0"
40
40
  >
41
- <div class="guest-loader">
42
- <div class="w-full flex justify-center">
43
- <div
44
- class="inline-block h-8 w-8 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-indigo-500 motion-reduce:animate-[spin_1.5s_linear_infinite]"
45
- role="status"
41
+ <h1 class="pb-3 text-xl font-semibold text-gray-600">Класс Guest</h1>
42
+
43
+ <a
44
+ href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L27"
45
+ target="_blank"
46
+ class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
47
+ >
48
+ <img
49
+ src="./assets/img/github_16.jpg"
50
+ width="16"
51
+ height="16"
52
+ />
53
+ Guest на GitHub
54
+ </a>
55
+
56
+ <p class="text-gray-600 text-lg mb-4">
57
+ Предназначен для создания новых экземпляров
58
+ <span class="">
59
+ <a
60
+ class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900 dynamic-navigation"
61
+ target="_blank"
62
+ href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L12"
46
63
  >
47
- <span
48
- class="!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]"
49
- >Loading...</span
50
- >
51
- </div>
52
- </div>
64
+ GuestObjectType
65
+ </a>
66
+ </span>
67
+ из функции-колбэка
68
+ </p>
69
+
70
+ <p class="text-gray-600 text-lg mb-4">
71
+ Это поведение полезно в случаях, когда нужно динамически построить
72
+ <link-dynamic
73
+ href="/terminology/visitor"
74
+ >
75
+ посетителя
76
+ </link-dynamic>
77
+ на основе функции, используя какие-то переменные из скоупа, где создана
78
+ функция
79
+ </p>
80
+
81
+ <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
82
+ <pre
83
+ class="mb-4 w-full"
84
+ ><code class="language-js">import { Guest } from 'silentium';
85
+
86
+ class Timestamp {
87
+ seconds(guest) {
88
+ guest.give(Date.now())
89
+ }
90
+ }
91
+
92
+ const timestamp = new Timestamp();
93
+ timestamp.seconds(new Guest((timestamp) => {
94
+ console.log('timestamp is', timestamp);
95
+ }));</code></pre>
96
+
97
+ <p class="text-gray-600 text-lg mb-0 font-bold">Результат 1.</p>
98
+ <div class="example mb-4">
99
+ <span class="guest-result">Result here</span>
53
100
  </div>
101
+ <script type="module">
102
+ import { Guest } from "silentium";
103
+
104
+ class Timestamp {
105
+ seconds(guest) {
106
+ guest.give(Date.now());
107
+ }
108
+ }
109
+
110
+ const timestamp = new Timestamp();
111
+ timestamp.seconds(
112
+ new Guest((timestamp) => {
113
+ document.querySelector(
114
+ ".guest-result"
115
+ ).textContent = `timestamp is ${timestamp}`;
116
+ })
117
+ );
118
+ </script>
119
+
120
+ <p class="text-gray-600 text-lg mb-4">
121
+ Возможность создавать объект-посетитель из функции была
122
+ единственной в первых версиях библиотеки. На текущий момент вы можете также
123
+ передать функцию-колбэк в качестве посетителя, тк функция соответствует типу
124
+ <link-dynamic
125
+ href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L17"
126
+ >
127
+ GuestType
128
+ </link-dynamic>
129
+ Это позволяет не создавать лишних объектных-оберток
130
+ </p>
131
+
132
+ <p class="text-gray-600 text-lg font-bold mb-0">Пример 2.</p>
133
+ <pre
134
+ class="mt-0 w-full"
135
+ ><code class="language-js">import { Guest } from 'silentium';
136
+
137
+ class Timestamp {
138
+ seconds(guest) {
139
+ give(Date.now(), guest);
140
+ }
141
+ }
142
+
143
+ const timestamp = new Timestamp();
144
+ timestamp.seconds((timestamp) => {
145
+ console.log('timestamp is', timestamp);
146
+ });</code></pre>
147
+
54
148
  <div class="guest-page-area"></div>
55
149
  </div>
56
150
  </div>