Skip to content

Commit da0fd15

Browse files
feat: add events for sync and push tags
1 parent 65e083a commit da0fd15

6 files changed

Lines changed: 37 additions & 0 deletions

File tree

package-lock.json

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
},
7272
"peerDependencies": {
7373
"@lomray/consistent-suspense": ">=2.0.1",
74+
"@lomray/event-manager": ">=2.0.2",
7475
"react": ">=17.0.2",
7576
"react-dom": ">=17.0.2"
7677
}

src/events.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* Head manager events
3+
*/
4+
enum Events {
5+
PUSH_TAGS = 'head-manager:push-tags',
6+
SYNC_META = 'head-manager:sync-meta',
7+
}
8+
9+
export default Events;

src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
export * from './types';
2+
13
export * from './context';
24

35
export { default as TagStatus } from './tag-status';
46

57
export { default as Manager } from './manager';
8+
9+
export { default as Events } from './events';

src/manager.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import EventManager from '@lomray/event-manager';
12
import htmlParser from 'html-react-parser';
23
import type { ReactElement, ReactNode } from 'react';
34
import React, { Fragment, Children } from 'react';
5+
import Events from './events';
46
import TagStatus from './tag-status';
57

68
export interface IMetaManagerTags {
@@ -519,6 +521,8 @@ class Manager {
519521

520522
prevElement = domElement;
521523
});
524+
525+
EventManager.publish(Events.SYNC_META, {});
522526
}
523527

524528
/**
@@ -534,6 +538,8 @@ class Manager {
534538
isAdded ? TagStatus.synced : TagStatus.init,
535539
);
536540

541+
EventManager.publish(Events.PUSH_TAGS, { elements, containerId });
542+
537543
// skip sync already synced tags
538544
if (this.isServer || isAdded) {
539545
return;

src/types.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { ReactNode } from 'react';
2+
import type Events from './events';
3+
4+
export interface IHeadManagerEvents {
5+
[Events.PUSH_TAGS]: {
6+
containerId: string;
7+
elements: ReactNode;
8+
};
9+
[Events.SYNC_META]: Record<string, unknown>;
10+
}

0 commit comments

Comments
 (0)