unhead 0.2.5 → 0.2.6

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/dist/index.cjs CHANGED
@@ -418,6 +418,23 @@ const HydratesStatePlugin = () => {
418
418
  });
419
419
  };
420
420
 
421
+ const PatchDomOnEntryUpdatesPlugin = (options) => {
422
+ return defineHeadPlugin({
423
+ hooks: {
424
+ "entries:updated": function(head) {
425
+ if (typeof options?.document === "undefined" && typeof window === "undefined")
426
+ return;
427
+ let delayFn = options?.delayFn;
428
+ if (!delayFn && typeof requestAnimationFrame !== "undefined")
429
+ delayFn = requestAnimationFrame;
430
+ import('@unhead/dom').then(({ debouncedRenderDOMHead }) => {
431
+ debouncedRenderDOMHead(head, { document: options?.document || window.document, delayFn });
432
+ });
433
+ }
434
+ }
435
+ });
436
+ };
437
+
421
438
  function asArray(value) {
422
439
  return Array.isArray(value) ? value : [value];
423
440
  }
@@ -520,13 +537,14 @@ function createHead(options = {}) {
520
537
  let _sde = {};
521
538
  let entryId = 0;
522
539
  const hooks = hookable.createHooks();
523
- if (options.hooks)
540
+ if (options?.hooks)
524
541
  hooks.addHooks(options.hooks);
525
542
  const plugins = [
526
543
  DeprecatedTagAttrPlugin(),
527
544
  DedupesTagsPlugin(),
528
545
  SortTagsPlugin(),
529
- TitleTemplatePlugin()
546
+ TitleTemplatePlugin(),
547
+ PatchDomOnEntryUpdatesPlugin({ document: options?.document, delayFn: options?.domDelayFn })
530
548
  ];
531
549
  plugins.push(...options.plugins || []);
532
550
  plugins.forEach((plugin) => hooks.addHooks(plugin.hooks || {}));
@@ -601,6 +619,7 @@ function createHead(options = {}) {
601
619
  exports.DedupesTagsPlugin = DedupesTagsPlugin;
602
620
  exports.DeprecatedTagAttrPlugin = DeprecatedTagAttrPlugin;
603
621
  exports.HydratesStatePlugin = HydratesStatePlugin;
622
+ exports.PatchDomOnEntryUpdatesPlugin = PatchDomOnEntryUpdatesPlugin;
604
623
  exports.SortTagsPlugin = SortTagsPlugin;
605
624
  exports.TitleTemplatePlugin = TitleTemplatePlugin;
606
625
  exports.asArray = asArray;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as _unhead_schema from '@unhead/schema';
2
- import { Head, HeadEntryOptions, ActiveHeadEntry, Title, Base, Meta, MetaFlatInput, Link, Script, Style, Noscript, HtmlAttributes, BodyAttributes, TitleTemplate, HeadClient, CreateHeadOptions, HeadPlugin, HeadEntry, HeadTag } from '@unhead/schema';
2
+ import { Head, HeadEntryOptions, ActiveHeadEntry, Title, Base, Meta, MetaFlatInput, Link, Script, Style, Noscript, HtmlAttributes, BodyAttributes, TitleTemplate, Unhead, CreateHeadOptions, HeadPlugin, HeadEntry, HeadTag } from '@unhead/schema';
3
+ import { RenderDomHeadOptions } from '@unhead/dom';
3
4
 
4
5
  interface DedupesTagsPluginOptions {
5
6
  dedupeKeys?: string[];
@@ -14,6 +15,11 @@ declare const DeprecatedTagAttrPlugin: () => _unhead_schema.HeadPlugin;
14
15
 
15
16
  declare const HydratesStatePlugin: () => _unhead_schema.HeadPlugin;
16
17
 
18
+ interface TriggerDomPatchingOnUpdatesPluginOptions extends RenderDomHeadOptions {
19
+ delayFn?: (fn: () => void) => void;
20
+ }
21
+ declare const PatchDomOnEntryUpdatesPlugin: (options?: TriggerDomPatchingOnUpdatesPluginOptions) => _unhead_schema.HeadPlugin;
22
+
17
23
  declare type Arrayable<T> = T | Array<T>;
18
24
  declare function asArray<T>(value: Arrayable<T>): T[];
19
25
 
@@ -43,14 +49,14 @@ declare const useServerHtmlAttrs: (attrs: HtmlAttributes) => void;
43
49
  declare const useServerBodyAttrs: (attrs: BodyAttributes) => void;
44
50
  declare const useServerTitleTemplate: (titleTemplate: TitleTemplate) => void;
45
51
 
46
- declare let activeHead: HeadClient<any> | undefined;
47
- declare const setActiveHead: <T extends HeadClient<_unhead_schema.Head<_unhead_schema.SchemaAugmentations>>>(head: T | undefined) => T | undefined;
48
- declare const getActiveHead: <T extends HeadClient<_unhead_schema.Head<_unhead_schema.SchemaAugmentations>>>() => T;
52
+ declare let activeHead: Unhead<any> | undefined;
53
+ declare const setActiveHead: <T extends Unhead<_unhead_schema.Head<_unhead_schema.SchemaAugmentations>>>(head: T | undefined) => T | undefined;
54
+ declare const getActiveHead: <T extends Unhead<_unhead_schema.Head<_unhead_schema.SchemaAugmentations>>>() => T;
49
55
 
50
- declare function createHead<T extends {} = Head>(options?: CreateHeadOptions): HeadClient<T>;
56
+ declare function createHead<T extends {} = Head>(options?: CreateHeadOptions): Unhead<T>;
51
57
 
52
58
  declare function defineHeadPlugin(plugin: HeadPlugin): HeadPlugin;
53
59
 
54
60
  declare function normaliseEntryTags<T extends {} = Head>(e: HeadEntry<T>): HeadTag[];
55
61
 
56
- export { Arrayable, DedupesTagsPlugin, DedupesTagsPluginOptions, DeprecatedTagAttrPlugin, HydratesStatePlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, createHead, defineHeadPlugin, getActiveHead, normaliseEntryTags, setActiveHead, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
62
+ export { Arrayable, DedupesTagsPlugin, DedupesTagsPluginOptions, DeprecatedTagAttrPlugin, HydratesStatePlugin, PatchDomOnEntryUpdatesPlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, createHead, defineHeadPlugin, getActiveHead, normaliseEntryTags, setActiveHead, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
package/dist/index.mjs CHANGED
@@ -416,6 +416,23 @@ const HydratesStatePlugin = () => {
416
416
  });
417
417
  };
418
418
 
419
+ const PatchDomOnEntryUpdatesPlugin = (options) => {
420
+ return defineHeadPlugin({
421
+ hooks: {
422
+ "entries:updated": function(head) {
423
+ if (typeof options?.document === "undefined" && typeof window === "undefined")
424
+ return;
425
+ let delayFn = options?.delayFn;
426
+ if (!delayFn && typeof requestAnimationFrame !== "undefined")
427
+ delayFn = requestAnimationFrame;
428
+ import('@unhead/dom').then(({ debouncedRenderDOMHead }) => {
429
+ debouncedRenderDOMHead(head, { document: options?.document || window.document, delayFn });
430
+ });
431
+ }
432
+ }
433
+ });
434
+ };
435
+
419
436
  function asArray(value) {
420
437
  return Array.isArray(value) ? value : [value];
421
438
  }
@@ -518,13 +535,14 @@ function createHead(options = {}) {
518
535
  let _sde = {};
519
536
  let entryId = 0;
520
537
  const hooks = createHooks();
521
- if (options.hooks)
538
+ if (options?.hooks)
522
539
  hooks.addHooks(options.hooks);
523
540
  const plugins = [
524
541
  DeprecatedTagAttrPlugin(),
525
542
  DedupesTagsPlugin(),
526
543
  SortTagsPlugin(),
527
- TitleTemplatePlugin()
544
+ TitleTemplatePlugin(),
545
+ PatchDomOnEntryUpdatesPlugin({ document: options?.document, delayFn: options?.domDelayFn })
528
546
  ];
529
547
  plugins.push(...options.plugins || []);
530
548
  plugins.forEach((plugin) => hooks.addHooks(plugin.hooks || {}));
@@ -596,4 +614,4 @@ function createHead(options = {}) {
596
614
  return head;
597
615
  }
598
616
 
599
- export { DedupesTagsPlugin, DeprecatedTagAttrPlugin, HydratesStatePlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, createHead, defineHeadPlugin, getActiveHead, normaliseEntryTags, setActiveHead, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
617
+ export { DedupesTagsPlugin, DeprecatedTagAttrPlugin, HydratesStatePlugin, PatchDomOnEntryUpdatesPlugin, SortTagsPlugin, TitleTemplatePlugin, activeHead, asArray, createHead, defineHeadPlugin, getActiveHead, normaliseEntryTags, setActiveHead, useBodyAttrs, useHead, useHtmlAttrs, useServerBodyAttrs, useServerHead, useServerHtmlAttrs, useServerTagBase, useServerTagLink, useServerTagMeta, useServerTagMetaFlat, useServerTagNoscript, useServerTagScript, useServerTagStyle, useServerTagTitle, useServerTitleTemplate, useTagBase, useTagLink, useTagMeta, useTagMetaFlat, useTagNoscript, useTagScript, useTagStyle, useTagTitle, useTitleTemplate };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unhead",
3
3
  "type": "module",
4
- "version": "0.2.5",
4
+ "version": "0.2.6",
5
5
  "packageManager": "pnpm@7.14.0",
6
6
  "author": "Harlan Wilton <harlan@harlanzw.com>",
7
7
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "dist"
31
31
  ],
32
32
  "dependencies": {
33
- "@unhead/schema": "0.2.5",
33
+ "@unhead/schema": "0.2.6",
34
34
  "hookable": "^5.4.1"
35
35
  },
36
36
  "devDependencies": {