taggedjs 2.4.12 → 2.4.14

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 (103) hide show
  1. package/bundle.js +862 -424
  2. package/bundle.js.map +1 -1
  3. package/js/Clones.type.d.ts +4 -1
  4. package/js/Clones.type.js +1 -1
  5. package/js/Clones.type.js.map +1 -1
  6. package/js/Tag.class.d.ts +7 -10
  7. package/js/Tag.class.js +120 -63
  8. package/js/Tag.class.js.map +1 -1
  9. package/js/Tag.utils.d.ts +5 -5
  10. package/js/Tag.utils.js +1 -1
  11. package/js/Tag.utils.js.map +1 -1
  12. package/js/TemplaterResult.class.d.ts +5 -1
  13. package/js/TemplaterResult.class.js +19 -12
  14. package/js/TemplaterResult.class.js.map +1 -1
  15. package/js/alterProps.function.d.ts +2 -0
  16. package/js/alterProps.function.js +18 -12
  17. package/js/alterProps.function.js.map +1 -1
  18. package/js/checkDestroyPrevious.function.d.ts +3 -1
  19. package/js/checkDestroyPrevious.function.js +33 -11
  20. package/js/checkDestroyPrevious.function.js.map +1 -1
  21. package/js/destroyTag.function.js +4 -4
  22. package/js/destroyTag.function.js.map +1 -1
  23. package/js/hasTagSupportChanged.function.js +0 -3
  24. package/js/hasTagSupportChanged.function.js.map +1 -1
  25. package/js/index.d.ts +1 -2
  26. package/js/index.js +1 -2
  27. package/js/index.js.map +1 -1
  28. package/js/insertAfter.function.d.ts +2 -0
  29. package/js/insertAfter.function.js +6 -0
  30. package/js/insertAfter.function.js.map +1 -0
  31. package/js/interpolateElement.d.ts +3 -2
  32. package/js/interpolateElement.js +3 -2
  33. package/js/interpolateElement.js.map +1 -1
  34. package/js/interpolateTemplate.d.ts +2 -3
  35. package/js/interpolateTemplate.js +6 -24
  36. package/js/interpolateTemplate.js.map +1 -1
  37. package/js/interpolations.js +2 -1
  38. package/js/interpolations.js.map +1 -1
  39. package/js/isInstance.d.ts +2 -2
  40. package/js/isInstance.js.map +1 -1
  41. package/js/processAttribute.function.d.ts +1 -0
  42. package/js/processAttribute.function.js +3 -3
  43. package/js/processAttribute.function.js.map +1 -1
  44. package/js/processNewValue.function.js +1 -1
  45. package/js/processNewValue.function.js.map +1 -1
  46. package/js/processRegularValue.function.d.ts +2 -2
  47. package/js/processRegularValue.function.js +7 -6
  48. package/js/processRegularValue.function.js.map +1 -1
  49. package/js/processSubjectComponent.function.d.ts +4 -3
  50. package/js/processSubjectComponent.function.js +26 -18
  51. package/js/processSubjectComponent.function.js.map +1 -1
  52. package/js/processSubjectValue.function.d.ts +4 -9
  53. package/js/processSubjectValue.function.js +6 -54
  54. package/js/processSubjectValue.function.js.map +1 -1
  55. package/js/processTag.function.d.ts +7 -0
  56. package/js/processTag.function.js +59 -0
  57. package/js/processTag.function.js.map +1 -0
  58. package/js/processTagArray.d.ts +7 -5
  59. package/js/processTagArray.js +55 -18
  60. package/js/processTagArray.js.map +1 -1
  61. package/js/processTagResult.function.d.ts +1 -1
  62. package/js/processTagResult.function.js +26 -32
  63. package/js/processTagResult.function.js.map +1 -1
  64. package/js/render.d.ts +2 -1
  65. package/js/render.js.map +1 -1
  66. package/js/renderExistingTag.function.js +4 -3
  67. package/js/renderExistingTag.function.js.map +1 -1
  68. package/js/subject/Subject.class.d.ts +24 -0
  69. package/js/subject/Subject.class.js +103 -0
  70. package/js/subject/Subject.class.js.map +1 -0
  71. package/js/subject/Subject.utils.d.ts +27 -0
  72. package/js/subject/Subject.utils.js +4 -0
  73. package/js/subject/Subject.utils.js.map +1 -0
  74. package/js/subject/ValueSubject.d.ts +9 -0
  75. package/js/subject/ValueSubject.js +15 -0
  76. package/js/subject/ValueSubject.js.map +1 -0
  77. package/js/subject/combineLatest.function.d.ts +2 -0
  78. package/js/subject/combineLatest.function.js +24 -0
  79. package/js/subject/combineLatest.function.js.map +1 -0
  80. package/js/subject/index.d.ts +4 -0
  81. package/js/subject/index.js +5 -0
  82. package/js/subject/index.js.map +1 -0
  83. package/js/subject/will.functions.d.ts +8 -0
  84. package/js/subject/will.functions.js +32 -0
  85. package/js/subject/will.functions.js.map +1 -0
  86. package/js/tag.d.ts +1 -1
  87. package/js/tag.js +2 -2
  88. package/js/tag.js.map +1 -1
  89. package/js/tagElement.js +1 -1
  90. package/js/tagElement.js.map +1 -1
  91. package/js/updateBeforeTemplate.function.d.ts +3 -0
  92. package/js/updateBeforeTemplate.function.js +16 -0
  93. package/js/updateBeforeTemplate.function.js.map +1 -0
  94. package/js/updateExistingTagComponent.function.d.ts +2 -1
  95. package/js/updateExistingTagComponent.function.js +55 -24
  96. package/js/updateExistingTagComponent.function.js.map +1 -1
  97. package/js/updateExistingValue.function.d.ts +3 -2
  98. package/js/updateExistingValue.function.js +35 -11
  99. package/js/updateExistingValue.function.js.map +1 -1
  100. package/package.json +1 -1
  101. /package/js/{errors.d.ts → Errors.d.ts} +0 -0
  102. /package/js/{errors.js → Errors.js} +0 -0
  103. /package/js/{errors.js.map → Errors.js.map} +0 -0
@@ -1,9 +1,8 @@
1
1
  import { processSubjectComponent } from './processSubjectComponent.function';
2
2
  import { isTagArray, isTagComponent, isTagInstance } from './isInstance';
3
3
  import { processTagArray } from './processTagArray';
4
- import { TagSupport } from './TagSupport.class';
5
- import { ValueSubject } from './ValueSubject';
6
4
  import { processRegularValue } from './processRegularValue.function';
5
+ import { processTag } from './processTag.function';
7
6
  var ValueTypes;
8
7
  (function (ValueTypes) {
9
8
  ValueTypes["tag"] = "tag";
@@ -24,67 +23,20 @@ function getValueType(value) {
24
23
  return ValueTypes.value;
25
24
  }
26
25
  export function processSubjectValue(value, subject, // could be tag via result.tag
27
- template, // <template end interpolate /> (will be removed)
26
+ insertBefore, // <template end interpolate /> (will be removed)
28
27
  ownerTag, // owner
29
28
  options) {
30
29
  const valueType = getValueType(value);
31
30
  switch (valueType) {
32
31
  case ValueTypes.tag:
33
- processTag(value, subject, template, ownerTag);
32
+ processTag(value, subject, insertBefore, ownerTag);
34
33
  return;
35
34
  case ValueTypes.tagArray:
36
- return processTagArray(subject, value, template, ownerTag, options);
35
+ return processTagArray(subject, value, insertBefore, ownerTag, options);
37
36
  case ValueTypes.tagComponent:
38
- processSubjectComponent(value, subject, template, ownerTag, options);
37
+ processSubjectComponent(value, subject, insertBefore, ownerTag, options);
39
38
  return;
40
39
  }
41
- processRegularValue(value, subject, template);
42
- }
43
- /** Could be a regular tag or a component. Both are Tag.class */
44
- export function processTag(tag, subject, // could be tag via result.tag
45
- insertBefore, // <template end interpolate /> (will be removed)
46
- ownerTag) {
47
- // first time seeing this tag?
48
- if (!tag.tagSupport) {
49
- if (!isTagInstance(tag)) {
50
- throw new Error('issue non-tag here');
51
- }
52
- applyFakeTemplater(tag, ownerTag, subject);
53
- if (ownerTag.childTags.find(x => x === tag)) {
54
- throw new Error('about to reattach tag already present - 5');
55
- }
56
- ownerTag.childTags.push(tag);
57
- }
58
- tag.ownerTag = ownerTag;
59
- subject.template = insertBefore;
60
- tag.buildBeforeElement(insertBefore, {
61
- counts: { added: 0, removed: 0 },
62
- forceElement: true, test: false,
63
- });
64
- }
65
- export function applyFakeTemplater(tag, ownerTag, subject) {
66
- if (!ownerTag) {
67
- throw new Error('no owner error');
68
- }
69
- const fakeTemplater = getFakeTemplater();
70
- tag.tagSupport = new TagSupport(ownerTag.tagSupport, fakeTemplater, // the template is provided via html`` call
71
- subject);
72
- fakeTemplater.global.oldest = tag;
73
- fakeTemplater.global.newest = tag;
74
- fakeTemplater.tagSupport = tag.tagSupport;
75
- // asking me to render will cause my parent to render
76
- tag.ownerTag = ownerTag;
77
- }
78
- function getFakeTemplater() {
79
- return {
80
- global: {
81
- renderCount: 0,
82
- providers: [],
83
- context: {},
84
- },
85
- children: new ValueSubject([]), // no children
86
- props: {},
87
- isTag: true,
88
- };
40
+ processRegularValue(value, subject, insertBefore);
89
41
  }
90
42
  //# sourceMappingURL=processSubjectValue.function.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processSubjectValue.function.js","sourceRoot":"","sources":["../ts/processSubjectValue.function.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processSubjectValue.function.js","sourceRoot":"","sources":["../ts/processSubjectValue.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAOpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,IAAK,UAKJ;AALD,WAAK,UAAU;IACb,yBAAW,CAAA;IACX,oCAAsB,CAAA;IACtB,4CAA8B,CAAA;IAC9B,6BAAe,CAAA;AACjB,CAAC,EALI,UAAU,KAAV,UAAU,QAKd;AAED,SAAS,YAAY,CAAC,KAAU;IAC9B,IAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC,YAAY,CAAA;IAChC,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC,GAAG,CAAA;IACvB,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,QAAQ,CAAA;IAC5B,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAA;AACzB,CAAC;AAcD,MAAM,UAAU,mBAAmB,CACjC,KAA4B,EAC5B,OAA2B,EAAE,8BAA8B;AAC3D,YAA0B,EAAE,iDAAiD;AAC7E,QAAa,EAAE,QAAQ;AACvB,OAAuB;IAEvB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAErC,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,UAAU,CAAC,GAAG;YACjB,UAAU,CACR,KAAK,EACL,OAAqB,EACrB,YAAY,EACZ,QAAQ,CACT,CAAA;YACD,OAAM;QAER,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,eAAe,CACpB,OAA0B,EAC1B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,OAAO,CACR,CAAA;QAEH,KAAK,UAAU,CAAC,YAAY;YAC1B,uBAAuB,CACrB,KAAwB,EACxB,OAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,OAAO,CACR,CAAA;YACD,OAAM;IACV,CAAC;IAED,mBAAmB,CACjB,KAAK,EACL,OAAyB,EACzB,YAAY,CACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { InsertBefore } from './Clones.type';
2
+ import { Tag } from './Tag.class';
3
+ import { TagSubject } from './Tag.utils';
4
+ /** Could be a regular tag or a component. Both are Tag.class */
5
+ export declare function processTag(tag: Tag, subject: TagSubject, // could be tag via result.tag
6
+ insertBefore: InsertBefore, ownerTag: Tag): void;
7
+ export declare function applyFakeTemplater(tag: Tag, ownerTag: Tag, subject: TagSubject): void;
@@ -0,0 +1,59 @@
1
+ import { isTagInstance } from './isInstance';
2
+ import { TagSupport } from './TagSupport.class';
3
+ import { ValueSubject } from './subject';
4
+ /** Could be a regular tag or a component. Both are Tag.class */
5
+ export function processTag(tag, subject, // could be tag via result.tag
6
+ insertBefore, ownerTag) {
7
+ // first time seeing this tag?
8
+ if (!tag.tagSupport) {
9
+ if (!isTagInstance(tag)) {
10
+ throw new Error('issue non-tag here');
11
+ }
12
+ applyFakeTemplater(tag, ownerTag, subject);
13
+ if (ownerTag.childTags.find(x => x === tag)) {
14
+ throw new Error('about to reattach tag already present - 5');
15
+ }
16
+ ownerTag.childTags.push(tag);
17
+ }
18
+ tag.ownerTag = ownerTag;
19
+ if (insertBefore.tagName !== 'TEMPLATE') {
20
+ throw new Error(`;;;; - ${insertBefore.nodeName}`);
21
+ }
22
+ tag.buildBeforeElement(insertBefore, {
23
+ counts: { added: 0, removed: 0 },
24
+ forceElement: true,
25
+ });
26
+ }
27
+ export function applyFakeTemplater(tag, ownerTag, subject) {
28
+ if (!ownerTag) {
29
+ throw new Error('no owner error');
30
+ }
31
+ const fakeTemplater = getFakeTemplater();
32
+ tag.tagSupport = new TagSupport(ownerTag.tagSupport, fakeTemplater, // the template is provided via html`` call
33
+ subject);
34
+ fakeTemplater.global.oldest = tag;
35
+ fakeTemplater.global.newest = tag;
36
+ fakeTemplater.tagSupport = tag.tagSupport;
37
+ // asking me to render will cause my parent to render
38
+ tag.ownerTag = ownerTag;
39
+ }
40
+ function getFakeTemplater() {
41
+ return {
42
+ global: {
43
+ renderCount: 0,
44
+ providers: [],
45
+ context: {},
46
+ subscriptions: [],
47
+ deleted: false,
48
+ newestTemplater: {},
49
+ },
50
+ children: new ValueSubject([]), // no children
51
+ props: {},
52
+ isTag: true,
53
+ isTemplater: false,
54
+ tagged: false,
55
+ wrapper: (() => undefined),
56
+ tagSupport: {},
57
+ };
58
+ }
59
+ //# sourceMappingURL=processTag.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processTag.function.js","sourceRoot":"","sources":["../ts/processTag.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAI5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGxC,gEAAgE;AAChE,MAAM,UAAU,UAAU,CACxB,GAAQ,EACR,OAAmB,EAAE,8BAA8B;AACnD,YAA0B,EAC1B,QAAa;IAEb,8BAA8B;IAC9B,IAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,IAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACvC,CAAC;QAED,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE1C,IAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QAED,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAU,CAAC,CAAA;IACrC,CAAC;IAED,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,IAAI,YAAoB,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,UAAU,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACnC,MAAM,EAAE,EAAC,KAAK,EAAC,CAAC,EAAE,OAAO,EAAC,CAAC,EAAC;QAC5B,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAQ,EACR,QAAa,EACb,OAAmB;IAEnB,IAAG,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IACD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,GAAG,CAAC,UAAU,GAAG,IAAI,UAAU,CAC7B,QAAQ,CAAC,UAAU,EACnB,aAAa,EAAE,2CAA2C;IAC1D,OAAO,CACR,CAAA;IAED,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAA;IACjC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAA;IACjC,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;IAEzC,qDAAqD;IACrD,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACzB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,MAAM,EAAC;YACL,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,KAAK;YAEd,eAAe,EAAE,EAAqB;SACvC;QACD,QAAQ,EAAE,IAAI,YAAY,CAAQ,EAAE,CAAC,EAAE,cAAc;QACrD,KAAK,EAAE,EAAW;QAElB,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAuB;QAChD,UAAU,EAAE,EAAgB;KACV,CAAA;AACtB,CAAC"}
@@ -1,19 +1,21 @@
1
- import { Clones } from './Clones.type';
1
+ import { Clones, InsertBefore } from './Clones.type';
2
2
  import { Tag } from './Tag.class';
3
- import { ValueSubject } from './ValueSubject';
4
- import { Counts, Template } from './interpolateTemplate';
3
+ import { ValueSubject } from './subject/ValueSubject';
4
+ import { Counts } from './interpolateTemplate';
5
5
  export type LastArrayItem = {
6
6
  tag: Tag;
7
7
  index: number;
8
8
  deleted?: boolean;
9
9
  };
10
10
  export type TagArraySubject = ValueSubject<Tag[]> & {
11
+ insertBefore: InsertBefore;
12
+ placeholderElm?: InsertBefore;
13
+ parentAsPlaceholder?: ParentNode;
11
14
  lastArray?: LastArrayItem[];
12
- template: Element | Text | Template;
13
15
  isChildSubject?: boolean;
14
16
  };
15
17
  export declare function processTagArray(subject: TagArraySubject, value: Tag[], // arry of Tag classes
16
- template: Element | Text | Template, // <template end interpolate />
18
+ insertBefore: InsertBefore, // <template end interpolate />
17
19
  ownerTag: Tag, options: {
18
20
  counts: Counts;
19
21
  forceElement?: boolean;
@@ -1,13 +1,24 @@
1
- import { ValueSubject } from './ValueSubject';
1
+ import { ValueSubject } from './subject/ValueSubject';
2
2
  import { ArrayNoKeyError } from './errors';
3
3
  import { destroyArrayTag } from './checkDestroyPrevious.function';
4
- import { applyFakeTemplater } from './processSubjectValue.function';
4
+ import { applyFakeTemplater } from './processTag.function';
5
+ import { insertAfter } from './insertAfter.function';
5
6
  export function processTagArray(subject, value, // arry of Tag classes
6
- template, // <template end interpolate />
7
+ insertBefore, // <template end interpolate />
7
8
  ownerTag, options) {
8
9
  const clones = ownerTag.clones; // []
9
10
  let lastArray = subject.lastArray = subject.lastArray || [];
10
- subject.template = template;
11
+ if (subject.placeholderElm) {
12
+ const parentPlaceholder = subject.parentAsPlaceholder;
13
+ if (parentPlaceholder) {
14
+ parentPlaceholder.appendChild(insertBefore);
15
+ delete subject.placeholderElm;
16
+ }
17
+ else {
18
+ insertAfter(insertBefore, subject.placeholderElm);
19
+ }
20
+ delete subject.placeholderElm;
21
+ }
11
22
  let removed = 0;
12
23
  /** 🗑️ remove previous items first */
13
24
  lastArray = subject.lastArray = subject.lastArray.filter((item, index) => {
@@ -15,8 +26,9 @@ ownerTag, options) {
15
26
  const at = index - removed;
16
27
  const lessLength = newLength < at;
17
28
  const subTag = value[index - removed];
18
- const subArrayValue = subTag?.arrayValue;
19
- const destroyItem = lessLength || !areLikeValues(subArrayValue, item.tag.arrayValue);
29
+ const subArrayValue = subTag?.memory.arrayValue;
30
+ const tag = item.tag;
31
+ const destroyItem = lessLength || !areLikeValues(subArrayValue, tag.memory.arrayValue);
20
32
  if (destroyItem) {
21
33
  const last = lastArray[index];
22
34
  const tag = last.tag;
@@ -29,7 +41,7 @@ ownerTag, options) {
29
41
  return true;
30
42
  });
31
43
  // const masterBefore = template || (template as any).clone
32
- const before = template || subject.value.insertBefore || template.clone;
44
+ const before = insertBefore; // || (subject.value as any).insertBefore || (insertBefore as any).clone
33
45
  value.forEach((subTag, index) => {
34
46
  const previous = lastArray[index];
35
47
  const previousSupport = previous?.tag.tagSupport;
@@ -40,8 +52,8 @@ ownerTag, options) {
40
52
  previousSupport.templater.global.newest = subTag;
41
53
  }
42
54
  // check for html``.key()
43
- const keyNotSet = subTag.arrayValue;
44
- if (keyNotSet?.isArrayValueNeverSet) {
55
+ const keySet = 'arrayValue' in subTag.memory;
56
+ if (!keySet) {
45
57
  const details = {
46
58
  template: subTag.getTemplate().string,
47
59
  array: value,
@@ -54,23 +66,46 @@ ownerTag, options) {
54
66
  }
55
67
  const couldBeSame = lastArray.length > index;
56
68
  if (couldBeSame) {
57
- const isSame = areLikeValues(previous.tag.arrayValue, subTag.arrayValue);
69
+ const prevSupport = previous.tag.tagSupport;
70
+ const prevGlobal = prevSupport.templater.global;
71
+ const isSame = areLikeValues(previous.tag.memory.arrayValue, subTag.memory.arrayValue);
58
72
  if (isSame) {
59
- subTag.tagSupport = subTag.tagSupport || previous.tag.tagSupport;
60
- const oldest = previous.tag.tagSupport.templater.global.oldest;
73
+ subTag.tagSupport = subTag.tagSupport || prevSupport;
74
+ const oldest = prevGlobal.oldest;
61
75
  oldest.updateByTag(subTag);
62
76
  return [];
63
77
  }
64
- processAddTagArrayItem(before, subTag, index, options, lastArray, true);
78
+ // TODO: should not get here?
79
+ processAddTagArrayItem(before, subTag, index, options, lastArray);
65
80
  throw new Error('item should be back');
66
81
  // return [] // removed: item should have been previously deleted and will be added back
67
82
  }
68
- processAddTagArrayItem(before, subTag, index, options, lastArray, true);
83
+ processAddTagArrayItem(before, subTag, index, options, lastArray);
69
84
  ownerTag.childTags.push(subTag);
70
85
  });
86
+ if (value.length) {
87
+ const lastClone = insertBefore.previousSibling;
88
+ setPlaceholderElm(lastClone, insertBefore, subject);
89
+ }
90
+ else {
91
+ const placeholderElm = insertBefore.previousSibling;
92
+ if (placeholderElm) {
93
+ setPlaceholderElm(placeholderElm, insertBefore, subject);
94
+ }
95
+ else {
96
+ const parentNode = insertBefore.parentNode;
97
+ setPlaceholderElm(parentNode, insertBefore, subject);
98
+ subject.parentAsPlaceholder = parentNode;
99
+ }
100
+ }
71
101
  return clones;
72
102
  }
73
- function processAddTagArrayItem(before, subTag, index, options, lastArray, test) {
103
+ function setPlaceholderElm(lastClone, insertBefore, subject) {
104
+ subject.placeholderElm = lastClone;
105
+ const parentNode = insertBefore.parentNode;
106
+ parentNode.removeChild(insertBefore);
107
+ }
108
+ function processAddTagArrayItem(before, subTag, index, options, lastArray) {
74
109
  const lastValue = {
75
110
  tag: subTag, index
76
111
  };
@@ -80,11 +115,13 @@ function processAddTagArrayItem(before, subTag, index, options, lastArray, test)
80
115
  added: options.counts.added + index,
81
116
  removed: options.counts.removed,
82
117
  };
83
- const lastFirstChild = before; // tag.clones[0] // insertBefore.lastFirstChild
84
- if (!lastFirstChild.parentNode) {
118
+ if (!before.parentNode) {
85
119
  throw new Error('issue adding array item');
86
120
  }
87
- subTag.buildBeforeElement(lastFirstChild, { counts, forceElement: options.forceElement, test });
121
+ const newTempElm = document.createElement('template');
122
+ before.parentNode.insertBefore(newTempElm, before);
123
+ subTag.buildBeforeElement(newTempElm, // before,
124
+ { counts, forceElement: options.forceElement });
88
125
  }
89
126
  /** compare two values. If both values are arrays then the items will be compared */
90
127
  function areLikeValues(valueA, valueB) {
@@ -1 +1 @@
1
- {"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Counts, Template } from './interpolateTemplate';
3
3
  import { TagArraySubject } from './processTagArray';
4
4
  import { TagSubject } from './Tag.utils';
5
5
  export declare function processTagResult(tag: Tag, subject: TagArraySubject | TagSubject | Function, // used for recording past and current value
6
- insertBefore: Element | Text | Template, // <template end interpolate />
6
+ insertBefore: Element | Text | Template | ChildNode, // <template end interpolate />
7
7
  { counts, forceElement, }: {
8
8
  counts: Counts;
9
9
  forceElement?: boolean;
@@ -1,4 +1,3 @@
1
- import { destroyTagMemory } from './destroyTag.function';
2
1
  export function processTagResult(tag, subject, // used for recording past and current value
3
2
  insertBefore, // <template end interpolate />
4
3
  { counts, forceElement, }) {
@@ -10,41 +9,36 @@ insertBefore, // <template end interpolate />
10
9
  const existingTag = subjectTag.tag;
11
10
  const previousTag = existingTag?.tagSupport.templater.global.oldest || undefined; // || tag.tagSupport.oldest // subjectTag.tag
12
11
  const justUpdate = previousTag; // && !forceElement
13
- if (previousTag) {
14
- if (justUpdate) {
15
- const areLike = previousTag.isLikeTag(tag);
16
- // are we just updating an if we already had?
17
- if (areLike) {
18
- // components
19
- if (subject instanceof Function) {
20
- const newTag = subject(previousTag.tagSupport);
21
- previousTag.updateByTag(newTag);
22
- if (!newTag.tagSupport.templater.global.oldest) {
23
- throw new Error('maybe 0');
24
- }
25
- subjectTag.tag = newTag;
26
- if (!newTag.hasLiveElements) {
27
- throw new Error('44444 - 2');
28
- }
29
- return;
30
- }
31
- previousTag.updateByTag(tag);
32
- if (!tag.tagSupport.templater.global.oldest) {
33
- throw new Error('maybe 1');
34
- }
35
- subjectTag.tag = tag;
36
- if (!tag.hasLiveElements) {
37
- throw new Error('44444 - 3');
38
- }
39
- return;
40
- }
41
- destroyTagMemory(previousTag, subject);
42
- throw new Error('585 - think we never get here');
12
+ if (previousTag && justUpdate) {
13
+ /*
14
+ const areLike = previousTag.isLikeTag(tag)
15
+
16
+ // are we just updating an if we already had?
17
+ if(areLike) {
18
+ return processTagResultUpdate(tag, subjectTag, previousTag)
43
19
  }
20
+ */
21
+ return processTagResultUpdate(tag, subjectTag, previousTag);
22
+ }
23
+ if (insertBefore.nodeName !== 'TEMPLATE') {
24
+ throw new Error(';;;;');
44
25
  }
45
26
  tag.buildBeforeElement(insertBefore, {
46
27
  counts,
47
- forceElement, test: false,
28
+ forceElement,
48
29
  });
49
30
  }
31
+ function processTagResultUpdate(tag, subject, // used for recording past and current value
32
+ previousTag) {
33
+ // components
34
+ if (subject instanceof Function) {
35
+ const newTag = subject(previousTag.tagSupport);
36
+ previousTag.updateByTag(newTag);
37
+ subject.tag = newTag;
38
+ return;
39
+ }
40
+ previousTag.updateByTag(tag);
41
+ subject.tag = tag;
42
+ return;
43
+ }
50
44
  //# sourceMappingURL=processTagResult.function.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processTagResult.function.js","sourceRoot":"","sources":["../ts/processTagResult.function.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,OAAgD,EAAE,4CAA4C;AAC9F,YAAuC,EAAE,+BAA+B;AACxE,EACE,MAAM,EAAE,YAAY,GAIrB;IAED,IAAG,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,OAAqB,CAAA;IACxC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAA;IAClC,MAAM,WAAW,GAAG,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAa,IAAI,SAAS,CAAA,CAAC,6CAA6C;IACrI,MAAM,UAAU,GAAG,WAAW,CAAA,CAAC,mBAAmB;IAElD,IAAG,WAAW,EAAE,CAAC;QACf,IAAG,UAAU,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAE1C,6CAA6C;YAC7C,IAAG,OAAO,EAAE,CAAC;gBACX,aAAa;gBACb,IAAG,OAAO,YAAY,QAAQ,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAQ,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;oBACnD,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;oBAC/B,IAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBAC9C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;oBAC5B,CAAC;oBACD,UAAU,CAAC,GAAG,GAAG,MAAM,CAAA;oBAEvB,IAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;oBAC9B,CAAC;oBAED,OAAM;gBACR,CAAC;gBAED,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBAC5B,IAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;gBAC5B,CAAC;gBAED,UAAU,CAAC,GAAG,GAAG,GAAG,CAAA;gBAEpB,IAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;gBAC9B,CAAC;gBAED,OAAM;YACR,CAAC;YAED,gBAAgB,CAAC,WAAW,EAAE,OAAqB,CAAC,CAAA;YACpD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACnC,MAAM;QACN,YAAY,EAAE,IAAI,EAAE,KAAK;KAC1B,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"processTagResult.function.js","sourceRoot":"","sources":["../ts/processTagResult.function.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,OAAgD,EAAE,4CAA4C;AAC9F,YAAmD,EAAE,+BAA+B;AACpF,EACE,MAAM,EAAE,YAAY,GAIrB;IAED,IAAG,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,OAAqB,CAAA;IACxC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAA;IAClC,MAAM,WAAW,GAAG,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAa,IAAI,SAAS,CAAA,CAAC,6CAA6C;IACrI,MAAM,UAAU,GAAG,WAAW,CAAA,CAAC,mBAAmB;IAElD,IAAG,WAAW,IAAI,UAAU,EAAE,CAAC;QAC7B;;;;;;;UAOE;QACF,OAAO,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAC7D,CAAC;IAED,IAAG,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IACD,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACnC,MAAM;QACN,YAAY;KACb,CAAC,CAAA;AACJ,CAAC;AAGD,SAAS,sBAAsB,CAC7B,GAAQ,EACR,OAAmB,EAAE,4CAA4C;AACjE,WAAgB;IAEhB,aAAa;IACb,IAAG,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAQ,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;QACnD,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC/B,OAAO,CAAC,GAAG,GAAG,MAAM,CAAA;QAEpB,OAAM;IACR,CAAC;IAED,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,GAAG,GAAG,CAAA;IAEjB,OAAM;AACR,CAAC"}
package/js/render.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare function buildClones(temporary: Element, insertBefore: Element | Text): ChildNode[];
1
+ import { InsertBefore } from "./Clones.type";
2
+ export declare function buildClones(temporary: Element, insertBefore: InsertBefore): ChildNode[];
package/js/render.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../ts/render.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CACzB,SAAkB,EAClB,YAA4B;IAE5B,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAwB,CAAA;IAC7D,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IAE7C,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAA;QAC/C,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,WAAW,GAAG,eAAe,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,WAAsB,EACtB,YAA4B;IAE5B,MAAM,UAAU,GAAG,YAAY,CAAC,UAAwB,CAAA;IACxD,UAAU,CAAC,YAAY,CACrB,WAAW,EACX,YAAY,CACb,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../ts/render.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,SAAkB,EAClB,YAA0B;IAE1B,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAwB,CAAA;IAC7D,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IAE7C,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAA;QAC/C,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,WAAW,GAAG,eAAe,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,WAAsB,EACtB,YAA0B;IAE1B,MAAM,UAAU,GAAG,YAAY,CAAC,UAAwB,CAAA;IACxD,UAAU,CAAC,YAAY,CACrB,WAAW,EACX,YAAY,CACb,CAAA;AACH,CAAC"}
@@ -4,7 +4,8 @@ import { isLikeTags } from './isLikeTags.function';
4
4
  /** Returns true when rendering owner is not needed. Returns false when rendering owner should occur */
5
5
  export function renderExistingTag(oldestTag, // existing tag already there
6
6
  newTemplater, tagSupport, subject) {
7
- newTemplater.global = subject.tag.tagSupport.templater.global;
7
+ const tag = subject.tag;
8
+ newTemplater.global = tag.tagSupport.templater.global;
8
9
  if (!oldestTag.hasLiveElements) {
9
10
  throw new Error('1080 - should have live elements');
10
11
  }
@@ -17,8 +18,8 @@ newTemplater, tagSupport, subject) {
17
18
  return latestTag;
18
19
  }
19
20
  const oldTemplater = tagSupport.templater || newTemplater;
20
- const redraw = renderWithSupport(newTemplater.tagSupport, subject.tag || oldTemplater.global.newest || oldTemplater.global.oldest, // hmmmmmm, why not newest?
21
- subject, oldestTag.ownerTag);
21
+ const toRedrawTag = subject.tag || oldTemplater.global.newest || oldTemplater.global.oldest; // hmmmmmm, why not newest?
22
+ const redraw = renderWithSupport(newTemplater.tagSupport, toRedrawTag, subject, oldestTag.ownerTag);
22
23
  const oldest = tagSupport.templater.global.oldest || oldestTag;
23
24
  redraw.tagSupport.templater.global.oldest = oldest;
24
25
  if (isLikeTags(latestTag, redraw)) {
@@ -1 +1 @@
1
- {"version":3,"file":"renderExistingTag.function.js","sourceRoot":"","sources":["../ts/renderExistingTag.function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,uGAAuG;AACvG,MAAM,UAAU,iBAAiB,CAC/B,SAAc,EAAE,6BAA6B;AAC7C,YAA6B,EAC7B,UAA0B,EAC1B,OAAmB;IAEnB,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAA;IAE7D,IAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAA;IAC9D,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAE/B,oGAAoG;IACpG,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAa,CAAA;IAC3D,IAAG,cAAc,KAAK,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9D,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAChC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,IAAI,YAAY,CAAA;IACzD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,YAAY,CAAC,UAAU,EACvB,OAAO,CAAC,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B;IACpG,OAAO,EACP,SAAS,CAAC,QAAQ,CACnB,CAAA;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;IAC9D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAElD,IAAG,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAA;QACpB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"renderExistingTag.function.js","sourceRoot":"","sources":["../ts/renderExistingTag.function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,uGAAuG;AACvG,MAAM,UAAU,iBAAiB,CAC/B,SAAc,EAAE,6BAA6B;AAC7C,YAA6B,EAC7B,UAA0B,EAC1B,OAAmB;IAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAU,CAAA;IAC9B,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAA;IAErD,IAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAA;IAC9D,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAE/B,oGAAoG;IACpG,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAa,CAAA;IAC3D,IAAG,cAAc,KAAK,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9D,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAChC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,IAAI,YAAY,CAAA;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAA,CAAC,2BAA2B;IACvH,MAAM,MAAM,GAAG,iBAAiB,CAC9B,YAAY,CAAC,UAAU,EACvB,WAAW,EACX,OAAO,EACP,SAAS,CAAC,QAAQ,CACnB,CAAA;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;IAC9D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAElD,IAAG,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAA;QACpB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { OperatorFunction, SubjectLike, SubjectSubscriber, Subscription } from "./Subject.utils";
2
+ export declare class Subject<T> implements SubjectLike<T> {
3
+ value?: T | undefined;
4
+ methods: OperatorFunction<any, any, any>[];
5
+ isSubject: boolean;
6
+ subscribers: SubjectSubscriber<T>[];
7
+ subscribeWith?: (x: SubjectSubscriber<T>) => Subscription;
8
+ constructor(value?: T | undefined);
9
+ subscribe(callback: SubjectSubscriber<T>): Subscription;
10
+ set(value: any): void;
11
+ next: (value: any) => void;
12
+ toPromise(): Promise<T>;
13
+ pipe(): Subject<T>;
14
+ pipe<A, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>): Subject<A>;
15
+ pipe<A, B, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>): Subject<B>;
16
+ pipe<A, B, C, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>): Subject<C>;
17
+ pipe<A, B, C, D, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>): Subject<D>;
18
+ pipe<A, B, C, D, E, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>): Subject<E>;
19
+ pipe<A, B, C, D, E, F, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>): Subject<F>;
20
+ pipe<A, B, C, D, E, F, G, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>): Subject<G>;
21
+ pipe<A, B, C, D, E, F, G, H, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>): Subject<H>;
22
+ pipe<A, B, C, D, E, F, G, H, I, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>, op9: OperatorFunction<H, I, RESOLVE>): Subject<I>;
23
+ pipe<A, B, C, D, E, F, G, H, I, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>, op9: OperatorFunction<H, I, RESOLVE>, ...operations: OperatorFunction<any, any, any>[]): Subject<unknown>;
24
+ }
@@ -0,0 +1,103 @@
1
+ export class Subject {
2
+ value;
3
+ methods = [];
4
+ isSubject = true;
5
+ subscribers = [];
6
+ subscribeWith;
7
+ // unsubcount = 0 // 🔬 testing
8
+ constructor(value) {
9
+ this.value = value;
10
+ }
11
+ subscribe(callback) {
12
+ // are we within a pipe?
13
+ const subscribeWith = this.subscribeWith;
14
+ if (subscribeWith) {
15
+ // are we in a pipe?
16
+ if (this.methods.length) {
17
+ const orgCallback = callback;
18
+ callback = (value, subscription) => {
19
+ runPipedMethods(value, subscription, this.methods, lastValue => orgCallback(lastValue, subscription));
20
+ };
21
+ }
22
+ return subscribeWith(callback);
23
+ }
24
+ this.subscribers.push(callback);
25
+ SubjectClass.globalSubs.push(callback); // 🔬 testing
26
+ const subscription = getSubscription(this, callback);
27
+ return subscription;
28
+ }
29
+ set(value) {
30
+ this.value = value;
31
+ // Notify all subscribers with the new value
32
+ this.subscribers.forEach((callback) => {
33
+ callback.value = value;
34
+ callback(value);
35
+ });
36
+ }
37
+ next = this.set;
38
+ toPromise() {
39
+ return new Promise((res, rej) => {
40
+ const subscription = this.subscribe(x => {
41
+ subscription.unsubscribe();
42
+ res(x);
43
+ });
44
+ });
45
+ }
46
+ pipe(...operations) {
47
+ const subject = new Subject();
48
+ subject.methods = operations;
49
+ subject.subscribeWith = (x) => this.subscribe(x);
50
+ return subject;
51
+ }
52
+ }
53
+ function removeSubFromArray(subscribers, callback) {
54
+ const index = subscribers.indexOf(callback);
55
+ if (index !== -1) {
56
+ subscribers.splice(index, 1);
57
+ }
58
+ }
59
+ const SubjectClass = Subject;
60
+ SubjectClass.globalSubs = []; // 🔬 for testing
61
+ SubjectClass.globalSubCount$ = new Subject(); // for ease of debugging
62
+ SubjectClass.globalSubCount$.set(0);
63
+ function getSubscription(subject, callback) {
64
+ const countSubject = SubjectClass.globalSubCount$;
65
+ SubjectClass.globalSubCount$.set(countSubject.value + 1);
66
+ const subscription = () => {
67
+ subscription.unsubscribe();
68
+ };
69
+ subscription.subscriptions = [];
70
+ // Return a function to unsubscribe from the BehaviorSubject
71
+ subscription.unsubscribe = () => {
72
+ removeSubFromArray(subject.subscribers, callback); // each will be called when update comes in
73
+ removeSubFromArray(SubjectClass.globalSubs, callback); // 🔬 testing
74
+ SubjectClass.globalSubCount$.set(countSubject.value - 1);
75
+ // any double unsubscribes will be ignored
76
+ subscription.unsubscribe = () => subscription;
77
+ // unsubscribe from any combined subjects
78
+ subscription.subscriptions.forEach(subscription => subscription.unsubscribe());
79
+ return subscription;
80
+ };
81
+ subscription.add = (sub) => {
82
+ subscription.subscriptions.push(sub);
83
+ return subscription;
84
+ };
85
+ return subscription;
86
+ }
87
+ function runPipedMethods(value, subscription, methods, onComplete) {
88
+ const cloneMethods = [...methods];
89
+ const firstMethod = cloneMethods.shift();
90
+ const next = (newValue) => {
91
+ if (cloneMethods.length) {
92
+ return runPipedMethods(newValue, subscription, cloneMethods, onComplete);
93
+ }
94
+ onComplete(newValue);
95
+ // return newValue = next
96
+ };
97
+ let handler = next;
98
+ const setHandler = (x) => handler = x;
99
+ const pipeUtils = { setHandler, next };
100
+ const methodResponse = firstMethod(value, pipeUtils);
101
+ handler(methodResponse);
102
+ }
103
+ //# sourceMappingURL=Subject.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subject.class.js","sourceRoot":"","sources":["../../ts/subject/Subject.class.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,OAAO;IAOC;IANnB,OAAO,GAAsC,EAAE,CAAA;IAC/C,SAAS,GAAG,IAAI,CAAA;IAChB,WAAW,GAA2B,EAAE,CAAA;IACxC,aAAa,CAA4C;IACzD,+BAA+B;IAE/B,YAAmB,KAAS;QAAT,UAAK,GAAL,KAAK,CAAI;IAAG,CAAC;IAEhC,SAAS,CAAC,QAA8B;QACtC,wBAAwB;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACxC,IAAG,aAAa,EAAE,CAAC;YACjB,oBAAoB;YACpB,IAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,QAAQ,CAAA;gBAC5B,QAAQ,GAAG,CACT,KAAU,EACV,YAA0B,EAC1B,EAAE;oBACF,eAAe,CACb,KAAK,EACL,YAAY,EACZ,IAAI,CAAC,OAAO,EACZ,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAClD,CAAA;gBACH,CAAC,CAAA;YACH,CAAC;YAED,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,aAAa;QAEpD,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpD,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,KAAU;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,4CAA4C;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YACzC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAA;IAEf,SAAS;QACP,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBACtC,YAAY,CAAC,WAAW,EAAE,CAAA;gBAC1B,GAAG,CAAC,CAAC,CAAC,CAAA;YACR,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAsED,IAAI,CAAC,GAAG,UAA6C;QACnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,OAAO,CAAC,OAAO,GAAG,UAAU,CAAA;QAC5B,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAQ,CAAC,CAAA;QACvD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAED,SAAS,kBAAkB,CACzB,WAAqC,EACrC,QAAgC;IAEhC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,OAGpB,CAAA;AACD,YAAY,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,iBAAiB;AAC9C,YAAY,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAA,CAAC,wBAAwB;AACrE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAEnC,SAAS,eAAe,CACtB,OAAqB,EACrB,QAAgC;IAEhC,MAAM,YAAY,GAAG,YAAY,CAAC,eAAkC,CAAA;IACpE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAE,YAAY,CAAC,KAAK,GAAG,CAAC,CAAE,CAAA;IAE1D,MAAM,YAAY,GAAiB,GAAG,EAAE;QACtC,YAAY,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC,CAAA;IAED,YAAY,CAAC,aAAa,GAAG,EAAE,CAAA;IAE/B,4DAA4D;IAC5D,YAAY,CAAC,WAAW,GAAG,GAAG,EAAE;QAC9B,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA,CAAC,2CAA2C;QAC7F,kBAAkB,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA,CAAC,aAAa;QACnE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAE,YAAY,CAAC,KAAK,GAAG,CAAC,CAAE,CAAA;QAE1D,0CAA0C;QAC1C,YAAY,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,YAAY,CAAA;QAE7C,yCAAyC;QACzC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAA;QAE9E,OAAO,YAAY,CAAA;IACrB,CAAC,CAAA;IAED,YAAY,CAAC,GAAG,GAAG,CAAC,GAAiB,EAAE,EAAE;QACvC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAE,GAAG,CAAE,CAAA;QACtC,OAAO,YAAY,CAAA;IACrB,CAAC,CAAA;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,eAAe,CACtB,KAAU,EACV,YAA0B,EAC1B,OAA0C,EAC1C,UAAmC;IAEnC,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;IAEjC,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAqC,CAAA;IAE3E,MAAM,IAAI,GAAG,CAAC,QAAa,EAAE,EAAE;QAC7B,IAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;QAC1E,CAAC;QAED,UAAU,CAAC,QAAQ,CAAC,CAAA;QACpB,yBAAyB;IAC3B,CAAC,CAAA;IAED,IAAI,OAAO,GAAiB,IAAI,CAAA;IAEhC,MAAM,UAAU,GAAoB,CAAC,CAAe,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAA;IACpE,MAAM,SAAS,GAAG,EAAC,UAAU,EAAE,IAAI,EAAC,CAAA;IACpC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACpD,OAAO,CAAC,cAAc,CAAC,CAAA;AACzB,CAAC"}