@wcardinal/wcardinal-ui 0.141.0 → 0.145.0

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 (192) hide show
  1. package/dist/types/wcardinal/ui/d-application-like.d.ts +1 -1
  2. package/dist/types/wcardinal/ui/d-button-link.d.ts +2 -2
  3. package/dist/types/wcardinal/ui/d-chart-axis-x-datetime.d.ts +1 -1
  4. package/dist/types/wcardinal/ui/d-chart-axis-y.d.ts +1 -1
  5. package/dist/types/wcardinal/ui/d-dialog-select.d.ts +13 -14
  6. package/dist/types/wcardinal/ui/d-item-updater.d.ts +19 -0
  7. package/dist/types/wcardinal/ui/d-link.d.ts +23 -12
  8. package/dist/types/wcardinal/ui/d-list-data-selection.d.ts +2 -2
  9. package/dist/types/wcardinal/ui/d-list-item-accessor-impl.d.ts +3 -1
  10. package/dist/types/wcardinal/ui/d-list-item-accessor.d.ts +19 -4
  11. package/dist/types/wcardinal/ui/d-list-item-ambient.d.ts +8 -0
  12. package/dist/types/wcardinal/ui/d-list-item.d.ts +7 -2
  13. package/dist/types/wcardinal/ui/d-menu-item-link.d.ts +2 -2
  14. package/dist/types/wcardinal/ui/d-note-error.d.ts +8 -0
  15. package/dist/types/wcardinal/ui/d-note-no-items-found.d.ts +8 -0
  16. package/dist/types/wcardinal/ui/d-note-searching.d.ts +8 -0
  17. package/dist/types/wcardinal/ui/d-note.d.ts +4 -5
  18. package/dist/types/wcardinal/ui/d-table-body-cell-link.d.ts +2 -2
  19. package/dist/types/wcardinal/ui/d-table-body-cell-tree.d.ts +2 -2
  20. package/dist/types/wcardinal/ui/index.d.ts +4 -0
  21. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-button-link.d.ts +0 -3
  22. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-dialog-select.d.ts +2 -2
  23. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-input-search.d.ts +0 -1
  24. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-link.d.ts +12 -0
  25. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-list-item-ambient.d.ts +6 -0
  26. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-menu-item-link.d.ts +3 -3
  27. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-note-error.d.ts +8 -0
  28. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-note-no-items-found.d.ts +8 -0
  29. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-note-searching.d.ts +8 -0
  30. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-note.d.ts +11 -2
  31. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-table-body-cell-link.d.ts +3 -3
  32. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-table-body-cell-tree.d.ts +0 -3
  33. package/dist/types/wcardinal/ui/theme/dark/index.d.ts +7 -2
  34. package/dist/types/wcardinal/ui/theme/dark/load/index.d.ts +1 -0
  35. package/dist/types/wcardinal/ui/theme/dark/load/load-theme-dark-link.d.ts +1 -0
  36. package/dist/types/wcardinal/ui/theme/white/d-theme-white-button-link.d.ts +0 -3
  37. package/dist/types/wcardinal/ui/theme/white/d-theme-white-diagram-canvas.d.ts +1 -1
  38. package/dist/types/wcardinal/ui/theme/white/d-theme-white-dialog-select.d.ts +2 -2
  39. package/dist/types/wcardinal/ui/theme/white/d-theme-white-input-search.d.ts +0 -1
  40. package/dist/types/wcardinal/ui/theme/white/d-theme-white-link.d.ts +12 -0
  41. package/dist/types/wcardinal/ui/theme/white/d-theme-white-list-item-ambient.d.ts +6 -0
  42. package/dist/types/wcardinal/ui/theme/white/d-theme-white-menu-item-link.d.ts +3 -3
  43. package/dist/types/wcardinal/ui/theme/white/d-theme-white-note-error.d.ts +8 -0
  44. package/dist/types/wcardinal/ui/theme/white/d-theme-white-note-no-items-found.d.ts +8 -0
  45. package/dist/types/wcardinal/ui/theme/white/d-theme-white-note-searching.d.ts +8 -0
  46. package/dist/types/wcardinal/ui/theme/white/d-theme-white-note.d.ts +11 -2
  47. package/dist/types/wcardinal/ui/theme/white/d-theme-white-table-body-cell-link.d.ts +3 -3
  48. package/dist/types/wcardinal/ui/theme/white/d-theme-white-table-body-cell-tree.d.ts +0 -3
  49. package/dist/types/wcardinal/ui/theme/white/index.d.ts +5 -0
  50. package/dist/types/wcardinal/ui/theme/white/load/index.d.ts +1 -0
  51. package/dist/types/wcardinal/ui/theme/white/load/load-theme-white-link.d.ts +1 -0
  52. package/dist/types/wcardinal/ui/util/dynamic-font-atlas.d.ts +2 -0
  53. package/dist/types/wcardinal/ui/util/util-transition.d.ts +3 -3
  54. package/dist/wcardinal/ui/d-application-like.js.map +1 -1
  55. package/dist/wcardinal/ui/d-button-link.js +1 -1
  56. package/dist/wcardinal/ui/d-button-link.js.map +1 -1
  57. package/dist/wcardinal/ui/d-chart-axis-x-datetime.js.map +1 -1
  58. package/dist/wcardinal/ui/d-chart-axis-y.js.map +1 -1
  59. package/dist/wcardinal/ui/d-dialog-select.js +55 -34
  60. package/dist/wcardinal/ui/d-dialog-select.js.map +1 -1
  61. package/dist/wcardinal/ui/d-item-updater.js +48 -11
  62. package/dist/wcardinal/ui/d-item-updater.js.map +1 -1
  63. package/dist/wcardinal/ui/d-link.js +58 -25
  64. package/dist/wcardinal/ui/d-link.js.map +1 -1
  65. package/dist/wcardinal/ui/d-list-data-selection.js.map +1 -1
  66. package/dist/wcardinal/ui/d-list-item-accessor-impl.js +22 -0
  67. package/dist/wcardinal/ui/d-list-item-accessor-impl.js.map +1 -1
  68. package/dist/wcardinal/ui/d-list-item-accessor.js.map +1 -1
  69. package/dist/wcardinal/ui/d-list-item-ambient.js +18 -0
  70. package/dist/wcardinal/ui/d-list-item-ambient.js.map +1 -0
  71. package/dist/wcardinal/ui/d-list-item.js +50 -8
  72. package/dist/wcardinal/ui/d-list-item.js.map +1 -1
  73. package/dist/wcardinal/ui/d-menu-item-link.js +1 -1
  74. package/dist/wcardinal/ui/d-menu-item-link.js.map +1 -1
  75. package/dist/wcardinal/ui/d-note-error.js +18 -0
  76. package/dist/wcardinal/ui/d-note-error.js.map +1 -0
  77. package/dist/wcardinal/ui/d-note-no-items-found.js +18 -0
  78. package/dist/wcardinal/ui/d-note-no-items-found.js.map +1 -0
  79. package/dist/wcardinal/ui/d-note-searching.js +18 -0
  80. package/dist/wcardinal/ui/d-note-searching.js.map +1 -0
  81. package/dist/wcardinal/ui/d-note.js +2 -6
  82. package/dist/wcardinal/ui/d-note.js.map +1 -1
  83. package/dist/wcardinal/ui/d-table-body-cell-link.js +1 -1
  84. package/dist/wcardinal/ui/d-table-body-cell-link.js.map +1 -1
  85. package/dist/wcardinal/ui/d-table-body-cell-tree.js +1 -1
  86. package/dist/wcardinal/ui/d-table-body-cell-tree.js.map +1 -1
  87. package/dist/wcardinal/ui/d-table-body-row.js +1 -1
  88. package/dist/wcardinal/ui/d-table-body-row.js.map +1 -1
  89. package/dist/wcardinal/ui/index.js +4 -0
  90. package/dist/wcardinal/ui/index.js.map +1 -1
  91. package/dist/wcardinal/ui/theme/dark/d-theme-dark-button-link.js +0 -5
  92. package/dist/wcardinal/ui/theme/dark/d-theme-dark-button-link.js.map +1 -1
  93. package/dist/wcardinal/ui/theme/dark/d-theme-dark-dialog-select.js +3 -6
  94. package/dist/wcardinal/ui/theme/dark/d-theme-dark-dialog-select.js.map +1 -1
  95. package/dist/wcardinal/ui/theme/dark/d-theme-dark-input-search.js +0 -4
  96. package/dist/wcardinal/ui/theme/dark/d-theme-dark-input-search.js.map +1 -1
  97. package/dist/wcardinal/ui/theme/dark/d-theme-dark-link.js +53 -0
  98. package/dist/wcardinal/ui/theme/dark/d-theme-dark-link.js.map +1 -0
  99. package/dist/wcardinal/ui/theme/dark/d-theme-dark-list-item-ambient.js +19 -0
  100. package/dist/wcardinal/ui/theme/dark/d-theme-dark-list-item-ambient.js.map +1 -0
  101. package/dist/wcardinal/ui/theme/dark/d-theme-dark-list-items.js +8 -8
  102. package/dist/wcardinal/ui/theme/dark/d-theme-dark-list-items.js.map +1 -1
  103. package/dist/wcardinal/ui/theme/dark/d-theme-dark-menu-item-link.js +5 -7
  104. package/dist/wcardinal/ui/theme/dark/d-theme-dark-menu-item-link.js.map +1 -1
  105. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note-error.js +27 -0
  106. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note-error.js.map +1 -0
  107. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note-no-items-found.js +28 -0
  108. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note-no-items-found.js.map +1 -0
  109. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note-searching.js +29 -0
  110. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note-searching.js.map +1 -0
  111. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note.js +22 -2
  112. package/dist/wcardinal/ui/theme/dark/d-theme-dark-note.js.map +1 -1
  113. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-body-cell-link.js +5 -7
  114. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-body-cell-link.js.map +1 -1
  115. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-body-cell-tree.js +0 -5
  116. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-body-cell-tree.js.map +1 -1
  117. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-body-row.js +2 -2
  118. package/dist/wcardinal/ui/theme/dark/d-theme-dark-table-body-row.js.map +1 -1
  119. package/dist/wcardinal/ui/theme/dark/index.js +7 -2
  120. package/dist/wcardinal/ui/theme/dark/index.js.map +1 -1
  121. package/dist/wcardinal/ui/theme/dark/load/index.js +1 -0
  122. package/dist/wcardinal/ui/theme/dark/load/index.js.map +1 -1
  123. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-all.js +2 -0
  124. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-all.js.map +1 -1
  125. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-link.js +10 -0
  126. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-link.js.map +1 -0
  127. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-list.js +2 -0
  128. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-list.js.map +1 -1
  129. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-note.js +6 -0
  130. package/dist/wcardinal/ui/theme/dark/load/load-theme-dark-note.js.map +1 -1
  131. package/dist/wcardinal/ui/theme/white/d-theme-white-button-link.js +0 -5
  132. package/dist/wcardinal/ui/theme/white/d-theme-white-button-link.js.map +1 -1
  133. package/dist/wcardinal/ui/theme/white/d-theme-white-diagram-canvas.js.map +1 -1
  134. package/dist/wcardinal/ui/theme/white/d-theme-white-dialog-select.js +3 -6
  135. package/dist/wcardinal/ui/theme/white/d-theme-white-dialog-select.js.map +1 -1
  136. package/dist/wcardinal/ui/theme/white/d-theme-white-input-search.js +0 -4
  137. package/dist/wcardinal/ui/theme/white/d-theme-white-input-search.js.map +1 -1
  138. package/dist/wcardinal/ui/theme/white/d-theme-white-link.js +53 -0
  139. package/dist/wcardinal/ui/theme/white/d-theme-white-link.js.map +1 -0
  140. package/dist/wcardinal/ui/theme/white/d-theme-white-list-item-ambient.js +19 -0
  141. package/dist/wcardinal/ui/theme/white/d-theme-white-list-item-ambient.js.map +1 -0
  142. package/dist/wcardinal/ui/theme/white/d-theme-white-list-items.js +8 -8
  143. package/dist/wcardinal/ui/theme/white/d-theme-white-list-items.js.map +1 -1
  144. package/dist/wcardinal/ui/theme/white/d-theme-white-menu-item-link.js +5 -7
  145. package/dist/wcardinal/ui/theme/white/d-theme-white-menu-item-link.js.map +1 -1
  146. package/dist/wcardinal/ui/theme/white/d-theme-white-note-error.js +27 -0
  147. package/dist/wcardinal/ui/theme/white/d-theme-white-note-error.js.map +1 -0
  148. package/dist/wcardinal/ui/theme/white/d-theme-white-note-no-items-found.js +28 -0
  149. package/dist/wcardinal/ui/theme/white/d-theme-white-note-no-items-found.js.map +1 -0
  150. package/dist/wcardinal/ui/theme/white/d-theme-white-note-searching.js +29 -0
  151. package/dist/wcardinal/ui/theme/white/d-theme-white-note-searching.js.map +1 -0
  152. package/dist/wcardinal/ui/theme/white/d-theme-white-note.js +22 -2
  153. package/dist/wcardinal/ui/theme/white/d-theme-white-note.js.map +1 -1
  154. package/dist/wcardinal/ui/theme/white/d-theme-white-table-body-cell-link.js +5 -7
  155. package/dist/wcardinal/ui/theme/white/d-theme-white-table-body-cell-link.js.map +1 -1
  156. package/dist/wcardinal/ui/theme/white/d-theme-white-table-body-cell-tree.js +0 -5
  157. package/dist/wcardinal/ui/theme/white/d-theme-white-table-body-cell-tree.js.map +1 -1
  158. package/dist/wcardinal/ui/theme/white/d-theme-white-table-body-row.js +2 -2
  159. package/dist/wcardinal/ui/theme/white/d-theme-white-table-body-row.js.map +1 -1
  160. package/dist/wcardinal/ui/theme/white/index.js +5 -0
  161. package/dist/wcardinal/ui/theme/white/index.js.map +1 -1
  162. package/dist/wcardinal/ui/theme/white/load/index.js +1 -0
  163. package/dist/wcardinal/ui/theme/white/load/index.js.map +1 -1
  164. package/dist/wcardinal/ui/theme/white/load/load-theme-white-all.js +2 -0
  165. package/dist/wcardinal/ui/theme/white/load/load-theme-white-all.js.map +1 -1
  166. package/dist/wcardinal/ui/theme/white/load/load-theme-white-link.js +10 -0
  167. package/dist/wcardinal/ui/theme/white/load/load-theme-white-link.js.map +1 -0
  168. package/dist/wcardinal/ui/theme/white/load/load-theme-white-list.js +2 -0
  169. package/dist/wcardinal/ui/theme/white/load/load-theme-white-list.js.map +1 -1
  170. package/dist/wcardinal/ui/theme/white/load/load-theme-white-note.js +6 -0
  171. package/dist/wcardinal/ui/theme/white/load/load-theme-white-note.js.map +1 -1
  172. package/dist/wcardinal/ui/util/dynamic-font-atlas.js +9 -4
  173. package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
  174. package/dist/wcardinal/ui/util/util-transition.js +1 -1
  175. package/dist/wcardinal/ui/util/util-transition.js.map +1 -1
  176. package/dist/wcardinal-ui-theme-dark.js +201 -97
  177. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  178. package/dist/wcardinal-ui-theme-dark.min.js.map +1 -1
  179. package/dist/wcardinal-ui-theme-white.js +199 -95
  180. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  181. package/dist/wcardinal-ui-theme-white.min.js.map +1 -1
  182. package/dist/wcardinal-ui.cjs.js +701 -277
  183. package/dist/wcardinal-ui.js +309 -93
  184. package/dist/wcardinal-ui.min.js +2 -2
  185. package/dist/wcardinal-ui.min.js.map +1 -1
  186. package/package.json +1 -1
  187. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-links.d.ts +0 -12
  188. package/dist/types/wcardinal/ui/theme/white/d-theme-white-links.d.ts +0 -12
  189. package/dist/wcardinal/ui/theme/dark/d-theme-dark-links.js +0 -55
  190. package/dist/wcardinal/ui/theme/dark/d-theme-dark-links.js.map +0 -1
  191. package/dist/wcardinal/ui/theme/white/d-theme-white-links.js +0 -55
  192. package/dist/wcardinal/ui/theme/white/d-theme-white-links.js.map +0 -1
@@ -26,10 +26,31 @@ var DItemUpdater = /** @class */ (function () {
26
26
  this._content = content;
27
27
  this._container = container;
28
28
  this._newItem = this.toNewItem(options);
29
+ this._initItem = this.toInitItem(options);
29
30
  }
30
31
  DItemUpdater.prototype.toNewItem = function (options) {
31
32
  return (options === null || options === void 0 ? void 0 : options.newItem) || this.newItem;
32
33
  };
34
+ DItemUpdater.prototype.toInitItem = function (options) {
35
+ if (options) {
36
+ var initItem = options.initItem;
37
+ if (initItem) {
38
+ return initItem;
39
+ }
40
+ if (options.stripe !== false) {
41
+ return this.initItem;
42
+ }
43
+ return this.initItemNoStriping;
44
+ }
45
+ return this.initItem;
46
+ };
47
+ DItemUpdater.prototype.initItem = function (item, index, data) {
48
+ item.state.isAlternated = index % 2 === 1;
49
+ return item;
50
+ };
51
+ DItemUpdater.prototype.initItemNoStriping = function (item, index, data) {
52
+ return item;
53
+ };
33
54
  Object.defineProperty(DItemUpdater.prototype, "multiplicity", {
34
55
  get: function () {
35
56
  return this._multiplicity;
@@ -78,6 +99,7 @@ var DItemUpdater = /** @class */ (function () {
78
99
  var oldItemIndexEnd = this._itemIndexEnd;
79
100
  var oldItemCount = oldItemIndexEnd - oldItemIndexStart;
80
101
  var newItem = this._newItem;
102
+ var initItem = this._initItem;
81
103
  var itemHeight = this._itemHeight;
82
104
  var itemWidth = this._itemWidth;
83
105
  if (this._itemHeight < 0) {
@@ -86,8 +108,7 @@ var DItemUpdater = /** @class */ (function () {
86
108
  item = items[0];
87
109
  }
88
110
  else {
89
- item = newItem(data);
90
- item.state.isAlternated = oldItemIndexStart % 2 === 0;
111
+ item = initItem(newItem(data), oldItemIndexStart, data);
91
112
  container.addChild(item);
92
113
  oldItemIndexEnd += 1;
93
114
  oldItemCount += 1;
@@ -99,11 +120,17 @@ var DItemUpdater = /** @class */ (function () {
99
120
  this._itemHeight = itemHeight;
100
121
  this._itemWidth = itemWidth;
101
122
  }
102
- var multiplicity = 0 < itemWidth ? Math.max(1, Math.floor(content.width / itemWidth)) : 1;
123
+ var contentPadding = content.padding;
124
+ var contentPaddingTop = contentPadding.getTop();
125
+ var contentPaddingBottom = contentPadding.getBottom();
126
+ var contentPaddingLeft = contentPadding.getLeft();
127
+ var contentPaddingRight = contentPadding.getRight();
128
+ var contentWidthAvailable = Math.max(0, content.width - contentPaddingLeft - contentPaddingRight);
129
+ var multiplicity = 0 < itemWidth ? Math.max(1, Math.floor(contentWidthAvailable / itemWidth)) : 1;
103
130
  this._multiplicity = multiplicity;
104
- var y = content !== container ? container.transform.position.y : 0;
131
+ var y = content !== container ? container.transform.position.y : contentPaddingTop;
105
132
  var newHeight = Math.ceil(dataSize / multiplicity) * itemHeight;
106
- var newContentHeight = Math.max(height, newHeight);
133
+ var newContentHeight = Math.max(height, contentPaddingTop + newHeight + contentPaddingBottom);
107
134
  var newContentY = Math.max(height - newContentHeight, content.position.y);
108
135
  var newItemIndexLowerBound = Math.floor(((0 - (newContentY + y)) * multiplicity) / itemHeight);
109
136
  var newItemIndexUpperBound = Math.floor(((height - (newContentY + y)) * multiplicity) / itemHeight);
@@ -123,8 +150,7 @@ var DItemUpdater = /** @class */ (function () {
123
150
  if (oldItemCount < newItemCount) {
124
151
  for (var i = oldItemCount; i < newItemCount; ++i) {
125
152
  var oldItemIndex = oldItemIndexStart + i;
126
- var item = newItem(data);
127
- item.state.isAlternated = oldItemIndex % 2 === 0;
153
+ var item = initItem(newItem(data), oldItemIndex, data);
128
154
  container.addChild(item);
129
155
  }
130
156
  oldItemCount = newItemCount;
@@ -172,11 +198,17 @@ var DItemUpdater = /** @class */ (function () {
172
198
  }
173
199
  work.length = 0;
174
200
  }
201
+ var itemOffsetX = 0;
202
+ var itemOffsetY = 0;
203
+ if (content === container) {
204
+ itemOffsetX = contentPaddingLeft;
205
+ itemOffsetY = contentPaddingTop;
206
+ }
175
207
  mapped.each(function (datum, index) {
176
208
  var item = items[index - newItemIndexStart];
177
209
  var ix = index % multiplicity;
178
210
  var iy = Math.floor(index / multiplicity);
179
- item.position.set(ix * itemWidth, iy * itemHeight);
211
+ item.position.set(itemOffsetX + ix * itemWidth, itemOffsetY + iy * itemHeight);
180
212
  _this.set(item, datum, index, forcibly);
181
213
  }, newItemIndexStart, newItemIndexStart + itemsLength);
182
214
  for (var i = 0; newItemIndexStart + i < 0 && i < itemsLength; ++i) {
@@ -184,7 +216,7 @@ var DItemUpdater = /** @class */ (function () {
184
216
  var index = newItemIndexStart + i;
185
217
  var ix = index % multiplicity;
186
218
  var iy = Math.floor(index / multiplicity);
187
- item.position.set(ix * itemWidth, iy * itemHeight);
219
+ item.position.set(itemOffsetX + ix * itemWidth, itemOffsetY + iy * itemHeight);
188
220
  this.unset(item);
189
221
  }
190
222
  for (var i = itemsLength - 1; dataSize <= newItemIndexStart + i && 0 <= i; --i) {
@@ -192,7 +224,7 @@ var DItemUpdater = /** @class */ (function () {
192
224
  var index = newItemIndexStart + i;
193
225
  var ix = index % multiplicity;
194
226
  var iy = Math.floor(index / multiplicity);
195
- item.position.set(ix * itemWidth, iy * itemHeight);
227
+ item.position.set(itemOffsetX + ix * itemWidth, itemOffsetY + iy * itemHeight);
196
228
  this.unset(item);
197
229
  }
198
230
  this.lock();
@@ -215,9 +247,14 @@ var DItemUpdater = /** @class */ (function () {
215
247
  for (var i = 0, imax = cells.length; i < imax; ++i) {
216
248
  var cell = cells[i];
217
249
  if (cell instanceof DBase) {
218
- cell.state.isPressed = false;
250
+ var state = cell.state;
251
+ state.lock();
252
+ state.isPressed = false;
253
+ state.isHovered = false;
254
+ state.unlock();
219
255
  }
220
256
  }
257
+ item.state.isHovered = false;
221
258
  return item;
222
259
  };
223
260
  DItemUpdater.prototype.moveFocus = function (e, target, moveVertically, moveHorizontally) {
@@ -1 +1 @@
1
- {"version":3,"file":"d-item-updater.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-item-updater.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DApplications } from \"./d-applications\";\nimport { DBase } from \"./d-base\";\nimport { isNumber } from \"./util/is-number\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\n\nexport interface DItemUpdaterItem<VALUE> extends DBase {\n\treadonly value?: VALUE;\n\treadonly index?: number;\n\tset(value: VALUE, index: number, forcibly?: boolean): void;\n\tunset(): void;\n}\n\nexport type DItemUpdaterNewItem<DATA, ITEM> = (data: DATA) => ITEM;\n\nexport interface DItemUpdaterOptions<VALUE, DATA, ITEM> {\n\tnewItem?: DItemUpdaterNewItem<DATA, ITEM>;\n}\n\nexport interface DItemUpdaterDataSelection<VALUE> {\n\tcontains(value: VALUE): boolean;\n}\n\nexport interface DItemUpdaterDataMapped<VALUE> {\n\tsize(): number;\n\teach(iteratee: (value: VALUE, index: number) => void | boolean, from: number, to: number): void;\n}\n\nexport interface DItemUpdaterData<VALUE> {\n\treadonly selection: DItemUpdaterDataSelection<VALUE>;\n}\n\n/**\n * The primary purpose of this class is to minimize the number of rendered items (e.g., {@link DListItem})\n * as low as possible and to update their positions and states. For this sake, the updater calculates the\n * required number of items whenever their container size changes and creates items if needed.\n */\nexport abstract class DItemUpdater<\n\tVALUE = unknown,\n\tDATA extends DItemUpdaterData<VALUE> = DItemUpdaterData<VALUE>,\n\tDATA_MAPPED extends DItemUpdaterDataMapped<VALUE> = DItemUpdaterDataMapped<VALUE>,\n\tITEM extends DItemUpdaterItem<VALUE> = DItemUpdaterItem<VALUE>,\n\tOPTIONS extends DItemUpdaterOptions<VALUE, DATA, ITEM> = DItemUpdaterOptions<VALUE, DATA, ITEM>\n> {\n\tprotected _updateItemsCount: number;\n\tprotected _isUpdateItemsCalled: boolean;\n\tprotected _isUpdateItemsCalledForcibly: boolean;\n\tprotected _itemHeight: number;\n\tprotected _itemWidth: number;\n\tprotected _multiplicity: number;\n\tprotected _itemIndexStart: number;\n\tprotected _itemIndexEnd: number;\n\tprotected _workItems: ITEM[];\n\tprotected _data: DATA;\n\tprotected _content: DBase;\n\tprotected _container: DBase;\n\tprotected _newItem: DItemUpdaterNewItem<DATA, ITEM>;\n\n\tconstructor(data: DATA, content: DBase, container: DBase, options?: OPTIONS) {\n\t\tthis._updateItemsCount = 0;\n\t\tthis._isUpdateItemsCalled = false;\n\t\tthis._isUpdateItemsCalledForcibly = false;\n\t\tthis._itemHeight = -1;\n\t\tthis._itemWidth = -1;\n\t\tthis._multiplicity = 1;\n\t\tthis._itemIndexStart = 0;\n\t\tthis._itemIndexEnd = 0;\n\t\tthis._workItems = [];\n\t\tthis._data = data;\n\t\tthis._content = content;\n\t\tthis._container = container;\n\t\tthis._newItem = this.toNewItem(options);\n\t}\n\n\tprotected toNewItem(\n\t\toptions?: DItemUpdaterOptions<VALUE, DATA, ITEM>\n\t): DItemUpdaterNewItem<DATA, ITEM> {\n\t\treturn options?.newItem || this.newItem;\n\t}\n\n\tprotected abstract newItem(this: undefined, data: DATA): ITEM;\n\n\tget multiplicity(): number {\n\t\treturn this._multiplicity;\n\t}\n\n\tlock(): void {\n\t\tthis._updateItemsCount += 1;\n\t\tif (this._updateItemsCount === 1) {\n\t\t\tthis._isUpdateItemsCalled = false;\n\t\t\tthis._isUpdateItemsCalledForcibly = false;\n\t\t}\n\t}\n\n\tunlock(callIfNeeded: boolean): void {\n\t\tthis._updateItemsCount -= 1;\n\t\tif (this._updateItemsCount === 0) {\n\t\t\tif (callIfNeeded && this._isUpdateItemsCalled) {\n\t\t\t\tthis.update(this._isUpdateItemsCalledForcibly);\n\t\t\t}\n\t\t\tthis._isUpdateItemsCalled = false;\n\t\t\tthis._isUpdateItemsCalledForcibly = false;\n\t\t}\n\t}\n\n\tupdate(forcibly?: boolean): void {\n\t\tif (0 < this._updateItemsCount) {\n\t\t\tthis._isUpdateItemsCalled = true;\n\t\t\tif (forcibly) {\n\t\t\t\tthis._isUpdateItemsCalledForcibly = true;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst content = this._content;\n\t\tconst contentParent = content.parent;\n\t\tif (contentParent == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = this._container;\n\t\tconst items = container.children as ITEM[];\n\t\tconst height = contentParent.height;\n\n\t\tconst data = this._data;\n\t\tconst mapped = this.toMapped(data);\n\t\tconst dataSize = mapped.size();\n\n\t\tconst oldItemIndexStart = this._itemIndexStart;\n\t\tlet oldItemIndexEnd = this._itemIndexEnd;\n\t\tlet oldItemCount = oldItemIndexEnd - oldItemIndexStart;\n\n\t\tconst newItem = this._newItem;\n\t\tlet itemHeight = this._itemHeight;\n\t\tlet itemWidth = this._itemWidth;\n\t\tif (this._itemHeight < 0) {\n\t\t\tlet item: ITEM;\n\t\t\tif (0 < items.length) {\n\t\t\t\titem = items[0];\n\t\t\t} else {\n\t\t\t\titem = newItem(data);\n\t\t\t\titem.state.isAlternated = oldItemIndexStart % 2 === 0;\n\t\t\t\tcontainer.addChild(item);\n\t\t\t\toldItemIndexEnd += 1;\n\t\t\t\toldItemCount += 1;\n\t\t\t}\n\t\t\titemHeight = Math.max(1, item.height);\n\t\t\tif (isNumber(item.getWidth())) {\n\t\t\t\titemWidth = Math.max(1, item.width);\n\t\t\t}\n\t\t\tthis._itemHeight = itemHeight;\n\t\t\tthis._itemWidth = itemWidth;\n\t\t}\n\t\tconst multiplicity = 0 < itemWidth ? Math.max(1, Math.floor(content.width / itemWidth)) : 1;\n\t\tthis._multiplicity = multiplicity;\n\n\t\tconst y = content !== container ? container.transform.position.y : 0;\n\t\tconst newHeight = Math.ceil(dataSize / multiplicity) * itemHeight;\n\t\tconst newContentHeight = Math.max(height, newHeight);\n\t\tconst newContentY = Math.max(height - newContentHeight, content.position.y);\n\n\t\tconst newItemIndexLowerBound = Math.floor(\n\t\t\t((0 - (newContentY + y)) * multiplicity) / itemHeight\n\t\t);\n\t\tconst newItemIndexUpperBound = Math.floor(\n\t\t\t((height - (newContentY + y)) * multiplicity) / itemHeight\n\t\t);\n\t\tlet newItemIndexStart = newItemIndexLowerBound - multiplicity;\n\t\tif (newItemIndexStart % 2 !== 0) {\n\t\t\tnewItemIndexStart -= 1;\n\t\t}\n\t\tlet newItemIndexEnd = newItemIndexUpperBound + multiplicity + multiplicity;\n\t\tif (newItemIndexEnd % 2 !== 0) {\n\t\t\tnewItemIndexEnd += 1;\n\t\t}\n\t\tlet newItemCount = newItemIndexEnd - newItemIndexStart;\n\t\tif (newItemCount < oldItemCount && oldItemCount - 2 <= newItemCount) {\n\t\t\tnewItemCount = oldItemCount;\n\t\t\tnewItemIndexEnd = newItemIndexStart + newItemCount;\n\t\t}\n\n\t\tif (oldItemCount < newItemCount) {\n\t\t\tfor (let i = oldItemCount; i < newItemCount; ++i) {\n\t\t\t\tconst oldItemIndex = oldItemIndexStart + i;\n\t\t\t\tconst item = newItem(data);\n\t\t\t\titem.state.isAlternated = oldItemIndex % 2 === 0;\n\t\t\t\tcontainer.addChild(item);\n\t\t\t}\n\t\t\toldItemCount = newItemCount;\n\t\t\toldItemIndexEnd = oldItemIndexStart + oldItemCount;\n\t\t} else if (newItemCount < oldItemCount) {\n\t\t\tfor (let i = oldItemCount - 1; newItemCount <= i; --i) {\n\t\t\t\tcontainer.removeChild(items[i]);\n\t\t\t}\n\t\t\toldItemCount = newItemCount;\n\t\t\toldItemIndexEnd = oldItemIndexStart + oldItemCount;\n\t\t}\n\n\t\tthis._itemIndexStart = newItemIndexStart;\n\t\tthis._itemIndexEnd = newItemIndexEnd;\n\n\t\tconst itemIndexStartDelta = newItemIndexStart - oldItemIndexStart;\n\t\tconst itemIndexStartDeltaAbs = Math.abs(itemIndexStartDelta);\n\t\tconst itemsLength = items.length;\n\t\tif (0 < itemIndexStartDeltaAbs && itemIndexStartDeltaAbs < itemsLength) {\n\t\t\tconst work = this._workItems;\n\t\t\tif (0 < itemIndexStartDelta) {\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\tconst item = items[i];\n\t\t\t\t\tthis.reset(item);\n\t\t\t\t\twork.push(item);\n\t\t\t\t}\n\t\t\t\tfor (let i = itemIndexStartDeltaAbs; i < itemsLength; ++i) {\n\t\t\t\t\titems[i - itemIndexStartDeltaAbs] = items[i];\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\titems[itemsLength - itemIndexStartDeltaAbs + i] = work[i];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\tconst item = items[itemsLength - itemIndexStartDeltaAbs + i];\n\t\t\t\t\tthis.reset(item);\n\t\t\t\t\twork.push(item);\n\t\t\t\t}\n\t\t\t\tfor (let i = itemsLength - itemIndexStartDeltaAbs - 1; 0 <= i; --i) {\n\t\t\t\t\titems[i + itemIndexStartDeltaAbs] = items[i];\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\titems[i] = work[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\twork.length = 0;\n\t\t}\n\n\t\tmapped.each(\n\t\t\t(datum: VALUE, index: number): void | boolean => {\n\t\t\t\tconst item = items[index - newItemIndexStart];\n\t\t\t\tconst ix = index % multiplicity;\n\t\t\t\tconst iy = Math.floor(index / multiplicity);\n\t\t\t\titem.position.set(ix * itemWidth, iy * itemHeight);\n\t\t\t\tthis.set(item, datum, index, forcibly);\n\t\t\t},\n\t\t\tnewItemIndexStart,\n\t\t\tnewItemIndexStart + itemsLength\n\t\t);\n\n\t\tfor (let i = 0; newItemIndexStart + i < 0 && i < itemsLength; ++i) {\n\t\t\tconst item = items[i];\n\t\t\tconst index = newItemIndexStart + i;\n\t\t\tconst ix = index % multiplicity;\n\t\t\tconst iy = Math.floor(index / multiplicity);\n\t\t\titem.position.set(ix * itemWidth, iy * itemHeight);\n\t\t\tthis.unset(item);\n\t\t}\n\n\t\tfor (let i = itemsLength - 1; dataSize <= newItemIndexStart + i && 0 <= i; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst index = newItemIndexStart + i;\n\t\t\tconst ix = index % multiplicity;\n\t\t\tconst iy = Math.floor(index / multiplicity);\n\t\t\titem.position.set(ix * itemWidth, iy * itemHeight);\n\t\t\tthis.unset(item);\n\t\t}\n\n\t\tthis.lock();\n\t\tcontent.position.y = newContentY;\n\t\tcontent.height = newContentHeight;\n\t\tif (content !== container) {\n\t\t\tcontainer.height = newHeight;\n\t\t}\n\t\tthis.unlock(false);\n\t}\n\n\tprotected abstract toMapped(data: DATA): DATA_MAPPED;\n\n\tprotected set(item: ITEM, value: VALUE, index: number, forcibly?: boolean): void {\n\t\titem.set(value, index, forcibly);\n\t}\n\n\tprotected unset(item: ITEM): void {\n\t\titem.unset();\n\t}\n\n\tprotected reset(item: ITEM): ITEM {\n\t\titem.blur(true);\n\t\tconst cells = item.children;\n\t\tfor (let i = 0, imax = cells.length; i < imax; ++i) {\n\t\t\tconst cell = cells[i];\n\t\t\tif (cell instanceof DBase) {\n\t\t\t\tcell.state.isPressed = false;\n\t\t\t}\n\t\t}\n\t\treturn item;\n\t}\n\n\tmoveFocus(\n\t\te: KeyboardEvent,\n\t\ttarget: DBase,\n\t\tmoveVertically: boolean,\n\t\tmoveHorizontally: boolean\n\t): boolean {\n\t\tif (!(moveVertically || moveHorizontally)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isUp = moveVertically && UtilKeyboardEvent.isArrowUpKey(e);\n\t\tconst isDown = moveVertically && UtilKeyboardEvent.isArrowDownKey(e);\n\t\tconst isLeft = moveHorizontally && UtilKeyboardEvent.isArrowLeftKey(e);\n\t\tconst isRight = moveHorizontally && UtilKeyboardEvent.isArrowRightKey(e);\n\t\tif (!(isUp || isDown || isLeft || isRight)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!target.state.isActionable) {\n\t\t\treturn false;\n\t\t}\n\t\tconst layer = DApplications.getLayer(target);\n\t\tif (layer == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusController = layer.getFocusController();\n\t\tconst focused = focusController.get();\n\t\tif (focused == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst container = this._container;\n\t\tif (focused.parent !== container) {\n\t\t\treturn false;\n\t\t}\n\t\tconst item = focused as ITEM;\n\t\tconst index = item.index;\n\t\tif (index == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst multiplicity = this._multiplicity;\n\t\tconst data = this._data;\n\t\tconst mapped = this.toMapped(data);\n\t\tconst dataSize = mapped.size();\n\t\tlet newIndex = index;\n\t\tif (isLeft || isRight) {\n\t\t\tif (isLeft) {\n\t\t\t\tif (0 <= newIndex - 1) {\n\t\t\t\t\tnewIndex -= 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (newIndex + 1 < dataSize) {\n\t\t\t\t\tnewIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isUp || isDown) {\n\t\t\tif (isUp) {\n\t\t\t\tif (0 <= newIndex - multiplicity) {\n\t\t\t\t\tnewIndex -= multiplicity;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (newIndex + multiplicity < dataSize) {\n\t\t\t\t\tnewIndex += multiplicity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newIndex === index) {\n\t\t\treturn false;\n\t\t}\n\t\tconst items = container.children as ITEM[];\n\t\tconst itemIndex = items.indexOf(item);\n\t\tif (itemIndex < 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst newItemIndex = itemIndex + (newIndex - index);\n\t\tif (newItemIndex < 0 || items.length <= newItemIndex) {\n\t\t\treturn false;\n\t\t}\n\t\tconst newItem = items[newItemIndex];\n\t\tfocusController.focus(newItem);\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-item-updater.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-item-updater.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DApplications } from \"./d-applications\";\nimport { DBase } from \"./d-base\";\nimport { isNumber } from \"./util/is-number\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\n\nexport interface DItemUpdaterItem<VALUE> extends DBase {\n\treadonly value?: VALUE;\n\treadonly index?: number;\n\tset(value: VALUE, index: number, forcibly?: boolean): void;\n\tunset(): void;\n}\n\nexport type DItemUpdaterNewItem<DATA, ITEM> = (data: DATA) => ITEM;\n\nexport type DItemUpdaterInitItem<DATA, ITEM> = (item: ITEM, index: number, data: DATA) => ITEM;\n\n/**\n * Item updater options.\n */\nexport interface DItemUpdaterOptions<VALUE, DATA, ITEM> {\n\t/**\n\t * Called to create items.\n\t */\n\tnewItem?: DItemUpdaterNewItem<DATA, ITEM>;\n\n\t/**\n\t * Called to initialize items.\n\t */\n\tinitItem?: DItemUpdaterInitItem<DATA, ITEM>;\n\n\t/**\n\t * True to make stripe-colored items. Defaults to true.\n\t */\n\tstripe?: boolean;\n}\n\nexport interface DItemUpdaterDataSelection<VALUE> {\n\tcontains(value: VALUE): boolean;\n}\n\nexport interface DItemUpdaterDataMapped<VALUE> {\n\tsize(): number;\n\teach(iteratee: (value: VALUE, index: number) => void | boolean, from: number, to: number): void;\n}\n\nexport interface DItemUpdaterData<VALUE> {\n\treadonly selection: DItemUpdaterDataSelection<VALUE>;\n}\n\n/**\n * The primary purpose of this class is to minimize the number of rendered items (e.g., {@link DListItem})\n * as low as possible and to update their positions and states. For this sake, the updater calculates the\n * required number of items whenever their container size changes and creates items if needed.\n */\nexport abstract class DItemUpdater<\n\tVALUE = unknown,\n\tDATA extends DItemUpdaterData<VALUE> = DItemUpdaterData<VALUE>,\n\tDATA_MAPPED extends DItemUpdaterDataMapped<VALUE> = DItemUpdaterDataMapped<VALUE>,\n\tITEM extends DItemUpdaterItem<VALUE> = DItemUpdaterItem<VALUE>,\n\tOPTIONS extends DItemUpdaterOptions<VALUE, DATA, ITEM> = DItemUpdaterOptions<VALUE, DATA, ITEM>\n> {\n\tprotected _updateItemsCount: number;\n\tprotected _isUpdateItemsCalled: boolean;\n\tprotected _isUpdateItemsCalledForcibly: boolean;\n\tprotected _itemHeight: number;\n\tprotected _itemWidth: number;\n\tprotected _multiplicity: number;\n\tprotected _itemIndexStart: number;\n\tprotected _itemIndexEnd: number;\n\tprotected _workItems: ITEM[];\n\tprotected _data: DATA;\n\tprotected _content: DBase;\n\tprotected _container: DBase;\n\tprotected _newItem: DItemUpdaterNewItem<DATA, ITEM>;\n\tprotected _initItem: DItemUpdaterInitItem<DATA, ITEM>;\n\n\tconstructor(data: DATA, content: DBase, container: DBase, options?: OPTIONS) {\n\t\tthis._updateItemsCount = 0;\n\t\tthis._isUpdateItemsCalled = false;\n\t\tthis._isUpdateItemsCalledForcibly = false;\n\t\tthis._itemHeight = -1;\n\t\tthis._itemWidth = -1;\n\t\tthis._multiplicity = 1;\n\t\tthis._itemIndexStart = 0;\n\t\tthis._itemIndexEnd = 0;\n\t\tthis._workItems = [];\n\t\tthis._data = data;\n\t\tthis._content = content;\n\t\tthis._container = container;\n\t\tthis._newItem = this.toNewItem(options);\n\t\tthis._initItem = this.toInitItem(options);\n\t}\n\n\tprotected toNewItem(\n\t\toptions?: DItemUpdaterOptions<VALUE, DATA, ITEM>\n\t): DItemUpdaterNewItem<DATA, ITEM> {\n\t\treturn options?.newItem || this.newItem;\n\t}\n\n\tprotected abstract newItem(this: undefined, data: DATA): ITEM;\n\n\tprotected toInitItem(\n\t\toptions?: DItemUpdaterOptions<VALUE, DATA, ITEM>\n\t): DItemUpdaterInitItem<DATA, ITEM> {\n\t\tif (options) {\n\t\t\tconst initItem = options.initItem;\n\t\t\tif (initItem) {\n\t\t\t\treturn initItem;\n\t\t\t}\n\t\t\tif (options.stripe !== false) {\n\t\t\t\treturn this.initItem;\n\t\t\t}\n\t\t\treturn this.initItemNoStriping;\n\t\t}\n\t\treturn this.initItem;\n\t}\n\n\tprotected initItem(this: undefined, item: ITEM, index: number, data: DATA): ITEM {\n\t\titem.state.isAlternated = index % 2 === 1;\n\t\treturn item;\n\t}\n\n\tprotected initItemNoStriping(this: undefined, item: ITEM, index: number, data: DATA): ITEM {\n\t\treturn item;\n\t}\n\n\tget multiplicity(): number {\n\t\treturn this._multiplicity;\n\t}\n\n\tlock(): void {\n\t\tthis._updateItemsCount += 1;\n\t\tif (this._updateItemsCount === 1) {\n\t\t\tthis._isUpdateItemsCalled = false;\n\t\t\tthis._isUpdateItemsCalledForcibly = false;\n\t\t}\n\t}\n\n\tunlock(callIfNeeded: boolean): void {\n\t\tthis._updateItemsCount -= 1;\n\t\tif (this._updateItemsCount === 0) {\n\t\t\tif (callIfNeeded && this._isUpdateItemsCalled) {\n\t\t\t\tthis.update(this._isUpdateItemsCalledForcibly);\n\t\t\t}\n\t\t\tthis._isUpdateItemsCalled = false;\n\t\t\tthis._isUpdateItemsCalledForcibly = false;\n\t\t}\n\t}\n\n\tupdate(forcibly?: boolean): void {\n\t\tif (0 < this._updateItemsCount) {\n\t\t\tthis._isUpdateItemsCalled = true;\n\t\t\tif (forcibly) {\n\t\t\t\tthis._isUpdateItemsCalledForcibly = true;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst content = this._content;\n\t\tconst contentParent = content.parent;\n\t\tif (contentParent == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = this._container;\n\t\tconst items = container.children as ITEM[];\n\t\tconst height = contentParent.height;\n\n\t\tconst data = this._data;\n\t\tconst mapped = this.toMapped(data);\n\t\tconst dataSize = mapped.size();\n\n\t\tconst oldItemIndexStart = this._itemIndexStart;\n\t\tlet oldItemIndexEnd = this._itemIndexEnd;\n\t\tlet oldItemCount = oldItemIndexEnd - oldItemIndexStart;\n\n\t\tconst newItem = this._newItem;\n\t\tconst initItem = this._initItem;\n\t\tlet itemHeight = this._itemHeight;\n\t\tlet itemWidth = this._itemWidth;\n\t\tif (this._itemHeight < 0) {\n\t\t\tlet item: ITEM;\n\t\t\tif (0 < items.length) {\n\t\t\t\titem = items[0];\n\t\t\t} else {\n\t\t\t\titem = initItem(newItem(data), oldItemIndexStart, data);\n\t\t\t\tcontainer.addChild(item);\n\t\t\t\toldItemIndexEnd += 1;\n\t\t\t\toldItemCount += 1;\n\t\t\t}\n\t\t\titemHeight = Math.max(1, item.height);\n\t\t\tif (isNumber(item.getWidth())) {\n\t\t\t\titemWidth = Math.max(1, item.width);\n\t\t\t}\n\t\t\tthis._itemHeight = itemHeight;\n\t\t\tthis._itemWidth = itemWidth;\n\t\t}\n\t\tconst contentPadding = content.padding;\n\t\tconst contentPaddingTop = contentPadding.getTop();\n\t\tconst contentPaddingBottom = contentPadding.getBottom();\n\t\tconst contentPaddingLeft = contentPadding.getLeft();\n\t\tconst contentPaddingRight = contentPadding.getRight();\n\t\tconst contentWidthAvailable = Math.max(\n\t\t\t0,\n\t\t\tcontent.width - contentPaddingLeft - contentPaddingRight\n\t\t);\n\t\tconst multiplicity =\n\t\t\t0 < itemWidth ? Math.max(1, Math.floor(contentWidthAvailable / itemWidth)) : 1;\n\t\tthis._multiplicity = multiplicity;\n\n\t\tconst y = content !== container ? container.transform.position.y : contentPaddingTop;\n\t\tconst newHeight = Math.ceil(dataSize / multiplicity) * itemHeight;\n\t\tconst newContentHeight = Math.max(\n\t\t\theight,\n\t\t\tcontentPaddingTop + newHeight + contentPaddingBottom\n\t\t);\n\t\tconst newContentY = Math.max(height - newContentHeight, content.position.y);\n\n\t\tconst newItemIndexLowerBound = Math.floor(\n\t\t\t((0 - (newContentY + y)) * multiplicity) / itemHeight\n\t\t);\n\t\tconst newItemIndexUpperBound = Math.floor(\n\t\t\t((height - (newContentY + y)) * multiplicity) / itemHeight\n\t\t);\n\t\tlet newItemIndexStart = newItemIndexLowerBound - multiplicity;\n\t\tif (newItemIndexStart % 2 !== 0) {\n\t\t\tnewItemIndexStart -= 1;\n\t\t}\n\t\tlet newItemIndexEnd = newItemIndexUpperBound + multiplicity + multiplicity;\n\t\tif (newItemIndexEnd % 2 !== 0) {\n\t\t\tnewItemIndexEnd += 1;\n\t\t}\n\t\tlet newItemCount = newItemIndexEnd - newItemIndexStart;\n\t\tif (newItemCount < oldItemCount && oldItemCount - 2 <= newItemCount) {\n\t\t\tnewItemCount = oldItemCount;\n\t\t\tnewItemIndexEnd = newItemIndexStart + newItemCount;\n\t\t}\n\n\t\tif (oldItemCount < newItemCount) {\n\t\t\tfor (let i = oldItemCount; i < newItemCount; ++i) {\n\t\t\t\tconst oldItemIndex = oldItemIndexStart + i;\n\t\t\t\tconst item = initItem(newItem(data), oldItemIndex, data);\n\t\t\t\tcontainer.addChild(item);\n\t\t\t}\n\t\t\toldItemCount = newItemCount;\n\t\t\toldItemIndexEnd = oldItemIndexStart + oldItemCount;\n\t\t} else if (newItemCount < oldItemCount) {\n\t\t\tfor (let i = oldItemCount - 1; newItemCount <= i; --i) {\n\t\t\t\tcontainer.removeChild(items[i]);\n\t\t\t}\n\t\t\toldItemCount = newItemCount;\n\t\t\toldItemIndexEnd = oldItemIndexStart + oldItemCount;\n\t\t}\n\n\t\tthis._itemIndexStart = newItemIndexStart;\n\t\tthis._itemIndexEnd = newItemIndexEnd;\n\n\t\tconst itemIndexStartDelta = newItemIndexStart - oldItemIndexStart;\n\t\tconst itemIndexStartDeltaAbs = Math.abs(itemIndexStartDelta);\n\t\tconst itemsLength = items.length;\n\t\tif (0 < itemIndexStartDeltaAbs && itemIndexStartDeltaAbs < itemsLength) {\n\t\t\tconst work = this._workItems;\n\t\t\tif (0 < itemIndexStartDelta) {\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\tconst item = items[i];\n\t\t\t\t\tthis.reset(item);\n\t\t\t\t\twork.push(item);\n\t\t\t\t}\n\t\t\t\tfor (let i = itemIndexStartDeltaAbs; i < itemsLength; ++i) {\n\t\t\t\t\titems[i - itemIndexStartDeltaAbs] = items[i];\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\titems[itemsLength - itemIndexStartDeltaAbs + i] = work[i];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\tconst item = items[itemsLength - itemIndexStartDeltaAbs + i];\n\t\t\t\t\tthis.reset(item);\n\t\t\t\t\twork.push(item);\n\t\t\t\t}\n\t\t\t\tfor (let i = itemsLength - itemIndexStartDeltaAbs - 1; 0 <= i; --i) {\n\t\t\t\t\titems[i + itemIndexStartDeltaAbs] = items[i];\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < itemIndexStartDeltaAbs; ++i) {\n\t\t\t\t\titems[i] = work[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\twork.length = 0;\n\t\t}\n\n\t\tlet itemOffsetX = 0;\n\t\tlet itemOffsetY = 0;\n\t\tif (content === container) {\n\t\t\titemOffsetX = contentPaddingLeft;\n\t\t\titemOffsetY = contentPaddingTop;\n\t\t}\n\t\tmapped.each(\n\t\t\t(datum: VALUE, index: number): void | boolean => {\n\t\t\t\tconst item = items[index - newItemIndexStart];\n\t\t\t\tconst ix = index % multiplicity;\n\t\t\t\tconst iy = Math.floor(index / multiplicity);\n\t\t\t\titem.position.set(itemOffsetX + ix * itemWidth, itemOffsetY + iy * itemHeight);\n\t\t\t\tthis.set(item, datum, index, forcibly);\n\t\t\t},\n\t\t\tnewItemIndexStart,\n\t\t\tnewItemIndexStart + itemsLength\n\t\t);\n\n\t\tfor (let i = 0; newItemIndexStart + i < 0 && i < itemsLength; ++i) {\n\t\t\tconst item = items[i];\n\t\t\tconst index = newItemIndexStart + i;\n\t\t\tconst ix = index % multiplicity;\n\t\t\tconst iy = Math.floor(index / multiplicity);\n\t\t\titem.position.set(itemOffsetX + ix * itemWidth, itemOffsetY + iy * itemHeight);\n\t\t\tthis.unset(item);\n\t\t}\n\n\t\tfor (let i = itemsLength - 1; dataSize <= newItemIndexStart + i && 0 <= i; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst index = newItemIndexStart + i;\n\t\t\tconst ix = index % multiplicity;\n\t\t\tconst iy = Math.floor(index / multiplicity);\n\t\t\titem.position.set(itemOffsetX + ix * itemWidth, itemOffsetY + iy * itemHeight);\n\t\t\tthis.unset(item);\n\t\t}\n\n\t\tthis.lock();\n\t\tcontent.position.y = newContentY;\n\t\tcontent.height = newContentHeight;\n\t\tif (content !== container) {\n\t\t\tcontainer.height = newHeight;\n\t\t}\n\t\tthis.unlock(false);\n\t}\n\n\tprotected abstract toMapped(data: DATA): DATA_MAPPED;\n\n\tprotected set(item: ITEM, value: VALUE, index: number, forcibly?: boolean): void {\n\t\titem.set(value, index, forcibly);\n\t}\n\n\tprotected unset(item: ITEM): void {\n\t\titem.unset();\n\t}\n\n\tprotected reset(item: ITEM): ITEM {\n\t\titem.blur(true);\n\t\tconst cells = item.children;\n\t\tfor (let i = 0, imax = cells.length; i < imax; ++i) {\n\t\t\tconst cell = cells[i];\n\t\t\tif (cell instanceof DBase) {\n\t\t\t\tconst state = cell.state;\n\t\t\t\tstate.lock();\n\t\t\t\tstate.isPressed = false;\n\t\t\t\tstate.isHovered = false;\n\t\t\t\tstate.unlock();\n\t\t\t}\n\t\t}\n\t\titem.state.isHovered = false;\n\t\treturn item;\n\t}\n\n\tmoveFocus(\n\t\te: KeyboardEvent,\n\t\ttarget: DBase,\n\t\tmoveVertically: boolean,\n\t\tmoveHorizontally: boolean\n\t): boolean {\n\t\tif (!(moveVertically || moveHorizontally)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isUp = moveVertically && UtilKeyboardEvent.isArrowUpKey(e);\n\t\tconst isDown = moveVertically && UtilKeyboardEvent.isArrowDownKey(e);\n\t\tconst isLeft = moveHorizontally && UtilKeyboardEvent.isArrowLeftKey(e);\n\t\tconst isRight = moveHorizontally && UtilKeyboardEvent.isArrowRightKey(e);\n\t\tif (!(isUp || isDown || isLeft || isRight)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!target.state.isActionable) {\n\t\t\treturn false;\n\t\t}\n\t\tconst layer = DApplications.getLayer(target);\n\t\tif (layer == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusController = layer.getFocusController();\n\t\tconst focused = focusController.get();\n\t\tif (focused == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst container = this._container;\n\t\tif (focused.parent !== container) {\n\t\t\treturn false;\n\t\t}\n\t\tconst item = focused as ITEM;\n\t\tconst index = item.index;\n\t\tif (index == null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst multiplicity = this._multiplicity;\n\t\tconst data = this._data;\n\t\tconst mapped = this.toMapped(data);\n\t\tconst dataSize = mapped.size();\n\t\tlet newIndex = index;\n\t\tif (isLeft || isRight) {\n\t\t\tif (isLeft) {\n\t\t\t\tif (0 <= newIndex - 1) {\n\t\t\t\t\tnewIndex -= 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (newIndex + 1 < dataSize) {\n\t\t\t\t\tnewIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isUp || isDown) {\n\t\t\tif (isUp) {\n\t\t\t\tif (0 <= newIndex - multiplicity) {\n\t\t\t\t\tnewIndex -= multiplicity;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (newIndex + multiplicity < dataSize) {\n\t\t\t\t\tnewIndex += multiplicity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newIndex === index) {\n\t\t\treturn false;\n\t\t}\n\t\tconst items = container.children as ITEM[];\n\t\tconst itemIndex = items.indexOf(item);\n\t\tif (itemIndex < 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst newItemIndex = itemIndex + (newIndex - index);\n\t\tif (newItemIndex < 0 || items.length <= newItemIndex) {\n\t\t\treturn false;\n\t\t}\n\t\tconst newItem = items[newItemIndex];\n\t\tfocusController.focus(newItem);\n\t\treturn true;\n\t}\n}\n"]}
@@ -11,15 +11,14 @@ import { isString } from "./util/is-string";
11
11
  import { toEnum } from "./util/to-enum";
12
12
  import { UtilClipboard } from "./util/util-clipboard";
13
13
  import { UtilPointerEvent } from "./util/util-pointer-event";
14
+ import { DThemes } from "./theme/d-themes";
14
15
  var DLink = /** @class */ (function () {
15
- function DLink(theme, options) {
16
- var _a, _b, _c;
17
- this._url = (_a = options === null || options === void 0 ? void 0 : options.url) !== null && _a !== void 0 ? _a : null;
18
- this._target = toEnum((_b = options === null || options === void 0 ? void 0 : options.target) !== null && _b !== void 0 ? _b : DLinkTarget.AUTO, DLinkTarget);
16
+ function DLink(options) {
17
+ this._options = options;
18
+ this._url = options === null || options === void 0 ? void 0 : options.url;
19
+ this._target = this.toNormalizedTarget(options === null || options === void 0 ? void 0 : options.target);
19
20
  this._checker = options === null || options === void 0 ? void 0 : options.checker;
20
- this._theme = theme;
21
21
  this._isEnabled = true;
22
- this._menu = new DLinkMenu(this, (_c = options === null || options === void 0 ? void 0 : options.menu) !== null && _c !== void 0 ? _c : theme.getLinkMenuOptions());
23
22
  }
24
23
  Object.defineProperty(DLink.prototype, "enable", {
25
24
  get: function () {
@@ -45,16 +44,49 @@ var DLink = /** @class */ (function () {
45
44
  get: function () {
46
45
  return this._target;
47
46
  },
47
+ set: function (target) {
48
+ this._target = this.toNormalizedTarget(target);
49
+ },
50
+ enumerable: false,
51
+ configurable: true
52
+ });
53
+ Object.defineProperty(DLink.prototype, "checker", {
54
+ get: function () {
55
+ return this._checker;
56
+ },
57
+ set: function (checker) {
58
+ this._checker = checker;
59
+ },
48
60
  enumerable: false,
49
61
  configurable: true
50
62
  });
51
63
  Object.defineProperty(DLink.prototype, "menu", {
52
64
  get: function () {
53
- return this._menu;
65
+ var result = this._menu;
66
+ if (result == null) {
67
+ result = this.newMenu();
68
+ this._menu = result;
69
+ }
70
+ return result;
54
71
  },
55
72
  enumerable: false,
56
73
  configurable: true
57
74
  });
75
+ DLink.prototype.newMenu = function () {
76
+ var options = this._options;
77
+ if (options) {
78
+ var menu = options.menu;
79
+ if (menu) {
80
+ return new DLinkMenu(this, menu);
81
+ }
82
+ }
83
+ var result = DLink.MENU;
84
+ if (result == null) {
85
+ result = new DLinkMenu(this, DThemes.getInstance().get("DLink").getMenuOptions());
86
+ DLink.MENU = result;
87
+ }
88
+ return result;
89
+ };
58
90
  DLink.prototype.toStringifiedUrl = function (target, onResolved) {
59
91
  var url = isFunction(target) ? target() : target;
60
92
  if (url != null) {
@@ -76,6 +108,9 @@ var DLink = /** @class */ (function () {
76
108
  a.href = url;
77
109
  return a.href;
78
110
  };
111
+ DLink.prototype.toNormalizedTarget = function (target) {
112
+ return toEnum(target !== null && target !== void 0 ? target : DLinkTarget.AUTO, DLinkTarget);
113
+ };
79
114
  /**
80
115
  * Copys the URL to the clipboard.
81
116
  */
@@ -164,28 +199,26 @@ var DLink = /** @class */ (function () {
164
199
  };
165
200
  DLink.prototype.add = function (base, onSelect) {
166
201
  var _this = this;
167
- var onClick = function (e) {
168
- if (_this._isEnabled && base.state.isActionable) {
202
+ UtilPointerEvent.onClick(base, function (e, isSimulated) {
203
+ if (!_this.onClick(base, isSimulated)) {
169
204
  onSelect(e);
170
205
  }
171
- };
172
- if (this._target !== DLinkTarget.AUTO) {
173
- UtilPointerEvent.onClick(base, onClick);
174
- }
175
- else {
176
- UtilPointerEvent.onClick(base, function (e, isSimulated) {
177
- if (isSimulated) {
178
- var menu = _this._menu;
179
- if (menu.enable) {
180
- if (_this._isEnabled && base.state.isActionable) {
181
- menu.open(base);
182
- }
183
- return;
184
- }
206
+ });
207
+ };
208
+ DLink.prototype.onClick = function (base, isSimulated) {
209
+ if (this._target === DLinkTarget.AUTO && isSimulated) {
210
+ var menu = this.menu;
211
+ if (menu.enable) {
212
+ if (this._isEnabled && base.state.isActionable) {
213
+ menu.open(base);
185
214
  }
186
- onClick(e);
187
- });
215
+ return true;
216
+ }
217
+ }
218
+ if (this._isEnabled && base.state.isActionable) {
219
+ return false;
188
220
  }
221
+ return true;
189
222
  };
190
223
  return DLink;
191
224
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"d-link.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-link.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { interaction } from \"pixi.js\";\nimport InteractionEvent = interaction.InteractionEvent;\nimport { DBase } from \"./d-base\";\nimport { DLinkMenu } from \"./d-link-menu\";\nimport { DLinkMenuItemId } from \"./d-link-menu-item-id\";\nimport { DLinkTarget } from \"./d-link-target\";\nimport { DMenu, DMenuOptions } from \"./d-menu\";\nimport { isFunction } from \"./util/is-function\";\nimport { isString } from \"./util/is-string\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilClipboard } from \"./util/util-clipboard\";\nimport { UtilPointerEvent } from \"./util/util-pointer-event\";\n\nexport type DLinkUrlMaker = () => string | null | Promise<string | null>;\nexport type DLinkChecker = () => boolean | Promise<boolean>;\n\nexport interface DLinkOptions {\n\turl?: string | null | DLinkUrlMaker;\n\ttarget?: DLinkTarget | keyof typeof DLinkTarget;\n\tchecker?: DLinkChecker;\n\tmenu?: DMenuOptions<DLinkMenuItemId> | DMenu<DLinkMenuItemId>;\n}\n\nexport interface DThemeLink {\n\tgetLinkMenuOptions(): DMenuOptions<DLinkMenuItemId>;\n}\n\nexport class DLink {\n\tprotected static ANCHOR_ELEMENT?: HTMLAnchorElement;\n\n\tprotected _url: string | null | DLinkUrlMaker;\n\tprotected _target: DLinkTarget;\n\tprotected _checker?: DLinkChecker;\n\tprotected _menu: DLinkMenu;\n\tprotected _theme: DThemeLink;\n\tprotected _isEnabled: boolean;\n\n\tconstructor(theme: DThemeLink, options?: DLinkOptions) {\n\t\tthis._url = options?.url ?? null;\n\t\tthis._target = toEnum(options?.target ?? DLinkTarget.AUTO, DLinkTarget);\n\t\tthis._checker = options?.checker;\n\t\tthis._theme = theme;\n\t\tthis._isEnabled = true;\n\t\tthis._menu = new DLinkMenu(this, options?.menu ?? theme.getLinkMenuOptions());\n\t}\n\n\tget enable(): boolean {\n\t\treturn this._isEnabled;\n\t}\n\n\tset enable(enable: boolean) {\n\t\tthis._isEnabled = enable;\n\t}\n\n\tget url(): string | null | DLinkUrlMaker {\n\t\treturn this._url;\n\t}\n\n\tset url(url: string | null | DLinkUrlMaker) {\n\t\tthis._url = url;\n\t}\n\n\tget target(): DLinkTarget {\n\t\treturn this._target;\n\t}\n\n\tget menu(): DLinkMenu {\n\t\treturn this._menu;\n\t}\n\n\tprotected toStringifiedUrl(\n\t\ttarget: string | null | DLinkUrlMaker,\n\t\tonResolved: (url: string) => void\n\t): void {\n\t\tconst url = isFunction(target) ? target() : target;\n\t\tif (url != null) {\n\t\t\tif (isString(url)) {\n\t\t\t\tonResolved(url);\n\t\t\t} else {\n\t\t\t\turl.then((resolved: string | null): void => {\n\t\t\t\t\tif (resolved != null) {\n\t\t\t\t\t\tonResolved(resolved);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected toNormalizedUrl(url: string): string {\n\t\tconst a = DLink.ANCHOR_ELEMENT || document.createElement(\"a\");\n\t\tDLink.ANCHOR_ELEMENT = a;\n\t\ta.href = url;\n\t\treturn a.href;\n\t}\n\n\t/**\n\t * Copys the URL to the clipboard.\n\t */\n\tcopy(): void {\n\t\tthis.toStringifiedUrl(this._url, (url: string): void => {\n\t\t\tUtilClipboard.copy(this.toNormalizedUrl(url));\n\t\t});\n\t}\n\n\t/**\n\t * Checks and opens the URL.\n\t *\n\t * @param e An event object which triggered this method call.\n\t */\n\topen(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void;\n\n\t/**\n\t * Checks and opens the URL.\n\t *\n\t * @param inNewWindow True to open in a new window\n\t */\n\topen(inNewWindow: boolean): void;\n\topen(\n\t\tx: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent | undefined | boolean\n\t): void {\n\t\tthis.toStringifiedUrl(this._url, (url): void => {\n\t\t\tconst inNewWindow = x === true || x === false ? x : this.inNewWindow(x);\n\t\t\tthis.check(url, inNewWindow, (): void => {\n\t\t\t\tthis.exec(url, inNewWindow);\n\t\t\t});\n\t\t});\n\t}\n\n\tcheck(url: string, inNewWindow: boolean, onResolved: () => void): void {\n\t\tconst checker = this._checker;\n\t\tif (checker) {\n\t\t\tconst checked = checker();\n\t\t\tif (checked === true) {\n\t\t\t\tonResolved();\n\t\t\t} else if (checked === false) {\n\t\t\t\t// DO NOTHING\n\t\t\t} else {\n\t\t\t\tchecked.then((resolved: boolean): void => {\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tonResolved();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tonResolved();\n\t\t}\n\t}\n\n\t/**\n\t * Opens the given URL.\n\t *\n\t * @param url An URL to be opened\n\t * @param inNewWindow True to open in a new window.\n\t */\n\texec(url: string, inNewWindow: boolean): void {\n\t\tif (inNewWindow) {\n\t\t\tconst a = document.createElement(\"a\");\n\t\t\ta.href = url;\n\t\t\ta.target = \"_blank\";\n\t\t\ta.style.display = \"none\";\n\t\t\ta.rel = \"noopener noreferrer\";\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tsetTimeout((): void => {\n\t\t\t\tdocument.body.removeChild(a);\n\t\t\t}, 100);\n\t\t} else {\n\t\t\twindow.location.href = url;\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the URL need to be opened in a new window.\n\t *\n\t * @param e An event object.\n\t */\n\tinNewWindow(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): boolean {\n\t\tswitch (this._target) {\n\t\t\tcase DLinkTarget.NEW_WINDOW:\n\t\t\t\treturn true;\n\t\t\tcase DLinkTarget.THIS_WINDOW:\n\t\t\t\treturn false;\n\t\t\tcase DLinkTarget.AUTO:\n\t\t\t\tif (e != null) {\n\t\t\t\t\tconst oe = e instanceof InteractionEvent ? e.data.originalEvent : e;\n\t\t\t\t\treturn (\n\t\t\t\t\t\toe.ctrlKey ||\n\t\t\t\t\t\toe.shiftKey ||\n\t\t\t\t\t\toe.altKey ||\n\t\t\t\t\t\toe.metaKey ||\n\t\t\t\t\t\t(\"button\" in oe && oe.button !== 0)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tadd(base: DBase, onSelect: (e: InteractionEvent) => void): void {\n\t\tconst onClick = (e: InteractionEvent): void => {\n\t\t\tif (this._isEnabled && base.state.isActionable) {\n\t\t\t\tonSelect(e);\n\t\t\t}\n\t\t};\n\t\tif (this._target !== DLinkTarget.AUTO) {\n\t\t\tUtilPointerEvent.onClick(base, onClick);\n\t\t} else {\n\t\t\tUtilPointerEvent.onClick(base, (e: InteractionEvent, isSimulated: boolean): void => {\n\t\t\t\tif (isSimulated) {\n\t\t\t\t\tconst menu = this._menu;\n\t\t\t\t\tif (menu.enable) {\n\t\t\t\t\t\tif (this._isEnabled && base.state.isActionable) {\n\t\t\t\t\t\t\tmenu.open(base);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tonClick(e);\n\t\t\t});\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-link.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-link.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, interaction, Texture } from \"pixi.js\";\nimport InteractionEvent = interaction.InteractionEvent;\nimport { DBase } from \"./d-base\";\nimport { DLinkMenu } from \"./d-link-menu\";\nimport { DLinkMenuItemId } from \"./d-link-menu-item-id\";\nimport { DLinkTarget } from \"./d-link-target\";\nimport { DMenu, DMenuOptions } from \"./d-menu\";\nimport { isFunction } from \"./util/is-function\";\nimport { isString } from \"./util/is-string\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilClipboard } from \"./util/util-clipboard\";\nimport { UtilPointerEvent } from \"./util/util-pointer-event\";\nimport { DThemes } from \"./theme/d-themes\";\nimport { DBaseStateSet } from \"./d-base-state-set\";\n\nexport type DLinkUrlValue = string | null | undefined;\n\nexport type DLinkUrlMaker = () => DLinkUrlValue | Promise<DLinkUrlValue>;\n\nexport type DLinkTargetValue = DLinkTarget | null | undefined | keyof typeof DLinkTarget;\n\nexport type DLinkChecker = () => boolean | Promise<boolean>;\n\nexport interface DLinkOptions {\n\turl?: DLinkUrlValue | DLinkUrlMaker;\n\ttarget?: DLinkTargetValue;\n\tchecker?: DLinkChecker;\n\tmenu?: DMenuOptions<DLinkMenuItemId> | DMenu<DLinkMenuItemId>;\n}\n\nexport interface DThemeLink {\n\tgetImageSource(state: DBaseStateSet): Texture | DisplayObject | null;\n\tgetMenuOptions(): DMenuOptions<DLinkMenuItemId>;\n}\n\nexport class DLink {\n\tprotected static ANCHOR_ELEMENT?: HTMLAnchorElement;\n\tprotected static MENU?: DLinkMenu;\n\n\tprotected _options?: DLinkOptions;\n\n\tprotected _url: DLinkUrlValue | DLinkUrlMaker;\n\tprotected _target: DLinkTarget;\n\tprotected _checker?: DLinkChecker;\n\tprotected _menu?: DLinkMenu;\n\tprotected _isEnabled: boolean;\n\n\tconstructor(options?: DLinkOptions) {\n\t\tthis._options = options;\n\n\t\tthis._url = options?.url;\n\t\tthis._target = this.toNormalizedTarget(options?.target);\n\t\tthis._checker = options?.checker;\n\t\tthis._isEnabled = true;\n\t}\n\n\tget enable(): boolean {\n\t\treturn this._isEnabled;\n\t}\n\n\tset enable(enable: boolean) {\n\t\tthis._isEnabled = enable;\n\t}\n\n\tget url(): DLinkUrlValue | DLinkUrlMaker {\n\t\treturn this._url;\n\t}\n\n\tset url(url: DLinkUrlValue | DLinkUrlMaker) {\n\t\tthis._url = url;\n\t}\n\n\tget target(): DLinkTarget {\n\t\treturn this._target;\n\t}\n\n\tset target(target: DLinkTargetValue) {\n\t\tthis._target = this.toNormalizedTarget(target);\n\t}\n\n\tget checker(): DLinkChecker | undefined {\n\t\treturn this._checker;\n\t}\n\n\tset checker(checker: DLinkChecker | undefined) {\n\t\tthis._checker = checker;\n\t}\n\n\tget menu(): DLinkMenu {\n\t\tlet result = this._menu;\n\t\tif (result == null) {\n\t\t\tresult = this.newMenu();\n\t\t\tthis._menu = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newMenu(): DLinkMenu {\n\t\tconst options = this._options;\n\t\tif (options) {\n\t\t\tconst menu = options.menu;\n\t\t\tif (menu) {\n\t\t\t\treturn new DLinkMenu(this, menu);\n\t\t\t}\n\t\t}\n\t\tlet result = DLink.MENU;\n\t\tif (result == null) {\n\t\t\tresult = new DLinkMenu(\n\t\t\t\tthis,\n\t\t\t\tDThemes.getInstance().get<DThemeLink>(\"DLink\").getMenuOptions()\n\t\t\t);\n\t\t\tDLink.MENU = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected toStringifiedUrl(\n\t\ttarget: DLinkUrlValue | DLinkUrlMaker,\n\t\tonResolved: (url: string) => void\n\t): void {\n\t\tconst url = isFunction(target) ? target() : target;\n\t\tif (url != null) {\n\t\t\tif (isString(url)) {\n\t\t\t\tonResolved(url);\n\t\t\t} else {\n\t\t\t\turl.then((resolved: DLinkUrlValue): void => {\n\t\t\t\t\tif (resolved != null) {\n\t\t\t\t\t\tonResolved(resolved);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected toNormalizedUrl(url: string): string {\n\t\tconst a = DLink.ANCHOR_ELEMENT || document.createElement(\"a\");\n\t\tDLink.ANCHOR_ELEMENT = a;\n\t\ta.href = url;\n\t\treturn a.href;\n\t}\n\n\tprotected toNormalizedTarget(target: DLinkTargetValue): DLinkTarget {\n\t\treturn toEnum(target ?? DLinkTarget.AUTO, DLinkTarget);\n\t}\n\n\t/**\n\t * Copys the URL to the clipboard.\n\t */\n\tcopy(): void {\n\t\tthis.toStringifiedUrl(this._url, (url: string): void => {\n\t\t\tUtilClipboard.copy(this.toNormalizedUrl(url));\n\t\t});\n\t}\n\n\t/**\n\t * Checks and opens the URL.\n\t *\n\t * @param e An event object which triggered this method call.\n\t */\n\topen(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void;\n\n\t/**\n\t * Checks and opens the URL.\n\t *\n\t * @param inNewWindow True to open in a new window\n\t */\n\topen(inNewWindow: boolean): void;\n\topen(\n\t\tx: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent | undefined | boolean\n\t): void {\n\t\tthis.toStringifiedUrl(this._url, (url): void => {\n\t\t\tconst inNewWindow = x === true || x === false ? x : this.inNewWindow(x);\n\t\t\tthis.check(url, inNewWindow, (): void => {\n\t\t\t\tthis.exec(url, inNewWindow);\n\t\t\t});\n\t\t});\n\t}\n\n\tcheck(url: string, inNewWindow: boolean, onResolved: () => void): void {\n\t\tconst checker = this._checker;\n\t\tif (checker) {\n\t\t\tconst checked = checker();\n\t\t\tif (checked === true) {\n\t\t\t\tonResolved();\n\t\t\t} else if (checked === false) {\n\t\t\t\t// DO NOTHING\n\t\t\t} else {\n\t\t\t\tchecked.then((resolved: boolean): void => {\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tonResolved();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tonResolved();\n\t\t}\n\t}\n\n\t/**\n\t * Opens the given URL.\n\t *\n\t * @param url An URL to be opened\n\t * @param inNewWindow True to open in a new window.\n\t */\n\texec(url: string, inNewWindow: boolean): void {\n\t\tif (inNewWindow) {\n\t\t\tconst a = document.createElement(\"a\");\n\t\t\ta.href = url;\n\t\t\ta.target = \"_blank\";\n\t\t\ta.style.display = \"none\";\n\t\t\ta.rel = \"noopener noreferrer\";\n\t\t\tdocument.body.appendChild(a);\n\t\t\ta.click();\n\t\t\tsetTimeout((): void => {\n\t\t\t\tdocument.body.removeChild(a);\n\t\t\t}, 100);\n\t\t} else {\n\t\t\twindow.location.href = url;\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the URL need to be opened in a new window.\n\t *\n\t * @param e An event object.\n\t */\n\tinNewWindow(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): boolean {\n\t\tswitch (this._target) {\n\t\t\tcase DLinkTarget.NEW_WINDOW:\n\t\t\t\treturn true;\n\t\t\tcase DLinkTarget.THIS_WINDOW:\n\t\t\t\treturn false;\n\t\t\tcase DLinkTarget.AUTO:\n\t\t\t\tif (e != null) {\n\t\t\t\t\tconst oe = e instanceof InteractionEvent ? e.data.originalEvent : e;\n\t\t\t\t\treturn (\n\t\t\t\t\t\toe.ctrlKey ||\n\t\t\t\t\t\toe.shiftKey ||\n\t\t\t\t\t\toe.altKey ||\n\t\t\t\t\t\toe.metaKey ||\n\t\t\t\t\t\t(\"button\" in oe && oe.button !== 0)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tadd(base: DBase, onSelect: (e: InteractionEvent) => void): void {\n\t\tUtilPointerEvent.onClick(base, (e: InteractionEvent, isSimulated: boolean): void => {\n\t\t\tif (!this.onClick(base, isSimulated)) {\n\t\t\t\tonSelect(e);\n\t\t\t}\n\t\t});\n\t}\n\n\tonClick(base: DBase, isSimulated: boolean): boolean {\n\t\tif (this._target === DLinkTarget.AUTO && isSimulated) {\n\t\t\tconst menu = this.menu;\n\t\t\tif (menu.enable) {\n\t\t\t\tif (this._isEnabled && base.state.isActionable) {\n\t\t\t\t\tmenu.open(base);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\tif (this._isEnabled && base.state.isActionable) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"d-list-data-selection.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-data-selection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,CAAC,IAAM,sBAAsB,GAAG;IACrC,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;CACF,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { utils } from \"pixi.js\";\nimport { DOnOptions } from \"./d-on-options\";\n\nexport const DListDataSelectionType = {\n\tNONE: 0,\n\tSINGLE: 1,\n\tMULTIPLE: 2\n} as const;\n\nexport type DListDataSelectionType =\n\ttypeof DListDataSelectionType[keyof typeof DListDataSelectionType];\n\n/**\n * {@link DListSelection} events.\n */\nexport interface DListDataSelectionEvents<EMITTER> {\n\t/**\n\t * Triggered when a selection is changed.\n\t *\n\t * @param emitter an emitter\n\t */\n\tchange(emitter: EMITTER): void;\n}\n\n/**\n * {@link DListSelection} \"on\" options.\n */\nexport interface DListDataSelectionOnOptions<EMITTER>\n\textends Partial<DListDataSelectionEvents<EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DListSelection} options.\n */\nexport interface DListDataSelectionOptions<ITEM, EMITTER = any> {\n\t/**\n\t * @deprecated in favor of {@link type}\n\t */\n\tmode?: DListDataSelectionType | keyof typeof DListDataSelectionType;\n\n\t/**\n\t * A type.\n\t */\n\ttype?: DListDataSelectionType | keyof typeof DListDataSelectionType;\n\n\t/**\n\t * Mappings of event names and handlers.\n\t */\n\ton?: DListDataSelectionOnOptions<EMITTER>;\n}\n\nexport interface DListDataSelection<ITEM> extends utils.EventEmitter {\n\treadonly type: DListDataSelectionType;\n\treadonly first: ITEM | null;\n\treadonly last: ITEM | null;\n\n\t/**\n\t * Returns an item at the given index or null.\n\t *\n\t * @param index an index\n\t * @returns an item at the given index or null\n\t */\n\tget(index: number): ITEM | null;\n\n\t/**\n\t * Adds the given item\n\t *\n\t * @param target an item\n\t * @return true if succeeded.\n\t */\n\tadd(target: ITEM): boolean;\n\n\t/**\n\t * Removes the given item.\n\t *\n\t * @param target an item\n\t * @return true if succeeded\n\t */\n\tremove(target: ITEM): boolean;\n\n\t/**\n\t * Toggles the given item.\n\t *\n\t * @param target an item\n\t * @return true if succeeded.\n\t */\n\ttoggle(target: ITEM): boolean;\n\n\t/**\n\t * Clears all the items.\n\t */\n\tclear(): void;\n\n\t/**\n\t * Clears all the exisint items and adds the given item.\n\t *\n\t * @param target an item to be added\n\t * @returns true if the selection is changed\n\t */\n\tclearAndAdd(target: ITEM): boolean;\n\n\t/**\n\t * Clears the exising items and add all the given items.\n\t *\n\t * @param targets items to be added\n\t * @returns true if the selection is changed\n\t */\n\tclearAndAddAll(targets: ITEM[]): boolean;\n\n\t/**\n\t * Returns true if the given item is selected.\n\t *\n\t * @param target an item to be checked\n\t * @returns true if the given item is selected\n\t */\n\tcontains(target: ITEM): boolean;\n\n\t/**\n\t * Returns the number of selected items.\n\t *\n\t * @returns the number of selected items\n\t */\n\tsize(): number;\n\n\t/**\n\t * Returns true if the selection is empty.\n\t *\n\t * @returns true if the selection is empty\n\t */\n\tisEmpty(): boolean;\n\n\t/**\n\t * Iterates over selected items.\n\t *\n\t * @param iteratee an iteratee\n\t */\n\teach(iteratee: (item: ITEM) => boolean | void): void;\n\n\t/**\n\t * Returns an array of selected items.\n\t */\n\ttoArray(): ITEM[];\n}\n"]}
1
+ {"version":3,"file":"d-list-data-selection.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-data-selection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,CAAC,IAAM,sBAAsB,GAAG;IACrC,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;CACF,CAAC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { utils } from \"pixi.js\";\nimport { DOnOptions } from \"./d-on-options\";\n\nexport const DListDataSelectionType = {\n\tNONE: 0,\n\tSINGLE: 1,\n\tMULTIPLE: 2\n} as const;\n\nexport type DListDataSelectionType =\n\ttypeof DListDataSelectionType[keyof typeof DListDataSelectionType];\n\n/**\n * {@link DListSelection} events.\n */\nexport interface DListDataSelectionEvents<EMITTER> {\n\t/**\n\t * Triggered when a selection is changed.\n\t *\n\t * @param emitter an emitter\n\t */\n\tchange(emitter: EMITTER): void;\n}\n\n/**\n * {@link DListSelection} \"on\" options.\n */\nexport interface DListDataSelectionOnOptions<EMITTER>\n\textends Partial<DListDataSelectionEvents<EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DListSelection} options.\n */\nexport interface DListDataSelectionOptions<ITEM, EMITTER = any> {\n\t/**\n\t * @deprecated in favor of {@link type}\n\t */\n\tmode?: DListDataSelectionType | keyof typeof DListDataSelectionType;\n\n\t/**\n\t * A type.\n\t */\n\ttype?: DListDataSelectionType | keyof typeof DListDataSelectionType;\n\n\t/**\n\t * Mappings of event names and handlers.\n\t */\n\ton?: DListDataSelectionOnOptions<EMITTER>;\n}\n\nexport interface DListDataSelection<ITEM> extends utils.EventEmitter {\n\treadonly type: DListDataSelectionType;\n\treadonly first: ITEM | null;\n\treadonly last: ITEM | null;\n\n\t/**\n\t * Returns an item at the given index or null.\n\t *\n\t * @param index an index\n\t * @returns an item at the given index or null\n\t */\n\tget(index: number): ITEM | null;\n\n\t/**\n\t * Adds the given item\n\t *\n\t * @param target an item\n\t * @return true if succeeded.\n\t */\n\tadd(target: ITEM): boolean;\n\n\t/**\n\t * Removes the given item.\n\t *\n\t * @param target an item\n\t * @return true if succeeded\n\t */\n\tremove(target: ITEM): boolean;\n\n\t/**\n\t * Toggles the given item.\n\t *\n\t * @param target an item\n\t * @return true if succeeded.\n\t */\n\ttoggle(target: ITEM): boolean;\n\n\t/**\n\t * Clears all the items.\n\t */\n\tclear(): void;\n\n\t/**\n\t * Clears all the existing items and adds the given item.\n\t *\n\t * @param target an item to be added\n\t * @returns true if the selection is changed\n\t */\n\tclearAndAdd(target: ITEM): boolean;\n\n\t/**\n\t * Clears the existing items and add all the given items.\n\t *\n\t * @param targets items to be added\n\t * @returns true if the selection is changed\n\t */\n\tclearAndAddAll(targets: ITEM[]): boolean;\n\n\t/**\n\t * Returns true if the given item is selected.\n\t *\n\t * @param target an item to be checked\n\t * @returns true if the given item is selected\n\t */\n\tcontains(target: ITEM): boolean;\n\n\t/**\n\t * Returns the number of selected items.\n\t *\n\t * @returns the number of selected items\n\t */\n\tsize(): number;\n\n\t/**\n\t * Returns true if the selection is empty.\n\t *\n\t * @returns true if the selection is empty\n\t */\n\tisEmpty(): boolean;\n\n\t/**\n\t * Iterates over selected items.\n\t *\n\t * @param iteratee an iteratee\n\t */\n\teach(iteratee: (item: ITEM) => boolean | void): void;\n\n\t/**\n\t * Returns an array of selected items.\n\t */\n\ttoArray(): ITEM[];\n}\n"]}
@@ -9,13 +9,35 @@ var toImage = function (value) {
9
9
  var toTitle = function (value) {
10
10
  return value.title;
11
11
  };
12
+ var toLinkUrl = function (value) {
13
+ return value.url;
14
+ };
12
15
  var DListItemAccessorImpl = /** @class */ (function () {
13
16
  function DListItemAccessorImpl(options) {
14
17
  this.toLabel = (options === null || options === void 0 ? void 0 : options.toLabel) || toLabelDefault;
15
18
  this.toTitle = (options === null || options === void 0 ? void 0 : options.toTitle) || toTitle;
16
19
  this.toImage = (options === null || options === void 0 ? void 0 : options.toImage) || toImage;
17
20
  this.toId = options === null || options === void 0 ? void 0 : options.toId;
21
+ this.link = this.toLink(options);
18
22
  }
23
+ DListItemAccessorImpl.prototype.toLink = function (options) {
24
+ if (options) {
25
+ var link = options.link;
26
+ if (link) {
27
+ var toUrl = link.toUrl;
28
+ var target = link.target;
29
+ var checker = link.checker;
30
+ if (toUrl !== undefined || target !== undefined || checker !== undefined) {
31
+ return {
32
+ toUrl: toUrl || toLinkUrl,
33
+ target: target,
34
+ checker: checker
35
+ };
36
+ }
37
+ }
38
+ }
39
+ return undefined;
40
+ };
19
41
  return DListItemAccessorImpl;
20
42
  }());
21
43
  export { DListItemAccessorImpl };
@@ -1 +1 @@
1
- {"version":3,"file":"d-list-item-accessor-impl.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-item-accessor-impl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE5D,IAAM,OAAO,GAAG,UAAC,KAAU;IAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;AACpB,CAAC,CAAC;AAEF,IAAM,OAAO,GAAG,UAAC,KAAU;IAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;AACpB,CAAC,CAAC;AAEF;IAMC,+BAAY,OAAyC;QACpD,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,cAAc,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAC3B,CAAC;IACF,4BAAC;AAAD,CAAC,AAZD,IAYC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, Texture } from \"pixi.js\";\nimport {\n\tDListItemAccessor,\n\tDListItemAccessorOptions,\n\tDListItemToId,\n\tDListItemToImage,\n\tDListItemToLabel,\n\tDListItemToTitle\n} from \"./d-list-item-accessor\";\nimport { toLabel as toLabelDefault } from \"./util/to-label\";\n\nconst toImage = (value: any): DisplayObject | Texture | null | undefined => {\n\treturn value.image;\n};\n\nconst toTitle = (value: any): string | undefined => {\n\treturn value.title;\n};\n\nexport class DListItemAccessorImpl<VALUE> implements DListItemAccessor<VALUE> {\n\ttoLabel: DListItemToLabel<VALUE>;\n\ttoTitle: DListItemToTitle<VALUE>;\n\ttoImage: DListItemToImage<VALUE>;\n\ttoId?: DListItemToId<VALUE>;\n\n\tconstructor(options?: DListItemAccessorOptions<VALUE>) {\n\t\tthis.toLabel = options?.toLabel || toLabelDefault;\n\t\tthis.toTitle = options?.toTitle || toTitle;\n\t\tthis.toImage = options?.toImage || toImage;\n\t\tthis.toId = options?.toId;\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-list-item-accessor-impl.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-item-accessor-impl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE5D,IAAM,OAAO,GAAG,UAAC,KAAU;IAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;AACpB,CAAC,CAAC;AAEF,IAAM,OAAO,GAAG,UAAC,KAAU;IAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;AACpB,CAAC,CAAC;AAEF,IAAM,SAAS,GAAG,UAAC,KAAU;IAC5B,OAAO,KAAK,CAAC,GAAG,CAAC;AAClB,CAAC,CAAC;AAEF;IAOC,+BAAY,OAAyC;QACpD,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,cAAc,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAES,sCAAM,GAAhB,UACC,OAAyC;QAEzC,IAAI,OAAO,EAAE;YACZ,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAI,IAAI,EAAE;gBACT,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACzB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE;oBACzE,OAAO;wBACN,KAAK,EAAE,KAAK,IAAI,SAAS;wBACzB,MAAM,QAAA;wBACN,OAAO,SAAA;qBACP,CAAC;iBACF;aACD;SACD;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IACF,4BAAC;AAAD,CAAC,AAnCD,IAmCC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, Texture } from \"pixi.js\";\nimport { DLinkUrlValue } from \"./d-link\";\nimport {\n\tDListItemAccessor,\n\tDListItemAccessorLink,\n\tDListItemAccessorOptions,\n\tDListItemToId,\n\tDListItemToImage,\n\tDListItemToLabel,\n\tDListItemToTitle\n} from \"./d-list-item-accessor\";\nimport { toLabel as toLabelDefault } from \"./util/to-label\";\n\nconst toImage = (value: any): DisplayObject | Texture | null | undefined => {\n\treturn value.image;\n};\n\nconst toTitle = (value: any): string | undefined => {\n\treturn value.title;\n};\n\nconst toLinkUrl = (value: any): DLinkUrlValue | Promise<DLinkUrlValue> => {\n\treturn value.url;\n};\n\nexport class DListItemAccessorImpl<VALUE> implements DListItemAccessor<VALUE> {\n\ttoLabel: DListItemToLabel<VALUE>;\n\ttoTitle: DListItemToTitle<VALUE>;\n\ttoImage: DListItemToImage<VALUE>;\n\ttoId?: DListItemToId<VALUE>;\n\tlink?: DListItemAccessorLink<VALUE>;\n\n\tconstructor(options?: DListItemAccessorOptions<VALUE>) {\n\t\tthis.toLabel = options?.toLabel || toLabelDefault;\n\t\tthis.toTitle = options?.toTitle || toTitle;\n\t\tthis.toImage = options?.toImage || toImage;\n\t\tthis.toId = options?.toId;\n\t\tthis.link = this.toLink(options);\n\t}\n\n\tprotected toLink(\n\t\toptions?: DListItemAccessorOptions<VALUE>\n\t): DListItemAccessorLink<VALUE> | undefined {\n\t\tif (options) {\n\t\t\tconst link = options.link;\n\t\t\tif (link) {\n\t\t\t\tconst toUrl = link.toUrl;\n\t\t\t\tconst target = link.target;\n\t\t\t\tconst checker = link.checker;\n\t\t\t\tif (toUrl !== undefined || target !== undefined || checker !== undefined) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttoUrl: toUrl || toLinkUrl,\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tchecker\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"d-list-item-accessor.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-item-accessor.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, Texture } from \"pixi.js\";\n\nexport type DListItemToLabel<VALUE> = (result: VALUE) => string | undefined;\n\nexport type DListItemToTitle<VALUE> = (result: VALUE) => string | undefined;\n\nexport type DListItemToImage<VALUE> = (result: VALUE) => DisplayObject | Texture | null | undefined;\n\nexport type DListItemToId<VALUE> = (a: VALUE) => unknown;\n\nexport interface DListItemAccessorOptions<VALUE> {\n\ttoLabel?: DListItemToLabel<VALUE>;\n\ttoTitle?: DListItemToTitle<VALUE>;\n\ttoImage?: DListItemToImage<VALUE>;\n\ttoId?: DListItemToId<VALUE>;\n}\n\nexport interface DListItemAccessor<VALUE> {\n\ttoLabel: DListItemToLabel<VALUE>;\n\ttoTitle: DListItemToTitle<VALUE>;\n\ttoImage: DListItemToImage<VALUE>;\n\ttoId?: DListItemToId<VALUE>;\n}\n"]}
1
+ {"version":3,"file":"d-list-item-accessor.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-item-accessor.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, Texture } from \"pixi.js\";\nimport { DLinkTargetValue, DLinkUrlValue } from \"./d-link\";\n\nexport type DListItemToLabel<VALUE> = (value: VALUE) => string | undefined;\n\nexport type DListItemToTitle<VALUE> = (value: VALUE) => string | undefined;\n\nexport type DListItemToImage<VALUE> = (value: VALUE) => DisplayObject | Texture | null | undefined;\n\nexport type DListItemToId<VALUE> = (value: VALUE) => unknown;\n\nexport type DListItemToLinkUrl<VALUE> = (value: VALUE) => DLinkUrlValue | Promise<DLinkUrlValue>;\n\nexport type DListItemLinkChecker<VALUE> = (value: VALUE) => boolean | Promise<boolean>;\n\nexport interface DListItemAccessorLinkOptions<VALUE> {\n\ttoUrl?: DListItemToLinkUrl<VALUE>;\n\ttarget?: DLinkTargetValue;\n\tchecker?: DListItemLinkChecker<VALUE>;\n}\n\nexport interface DListItemAccessorLink<VALUE> {\n\ttoUrl: DListItemToLinkUrl<VALUE>;\n\ttarget: DLinkTargetValue;\n\tchecker?: DListItemLinkChecker<VALUE>;\n}\n\nexport interface DListItemAccessorOptions<VALUE> {\n\ttoLabel?: DListItemToLabel<VALUE>;\n\ttoTitle?: DListItemToTitle<VALUE>;\n\ttoImage?: DListItemToImage<VALUE>;\n\ttoId?: DListItemToId<VALUE>;\n\tlink?: DListItemAccessorLinkOptions<VALUE>;\n}\n\nexport interface DListItemAccessor<VALUE> {\n\ttoLabel: DListItemToLabel<VALUE>;\n\ttoTitle: DListItemToTitle<VALUE>;\n\ttoImage: DListItemToImage<VALUE>;\n\ttoId?: DListItemToId<VALUE>;\n\tlink?: DListItemAccessorLink<VALUE>;\n}\n"]}
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (C) 2019 Toshiba Corporation
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { __extends } from "tslib";
6
+ import { DListItem } from "./d-list-item";
7
+ var DListItemAmbient = /** @class */ (function (_super) {
8
+ __extends(DListItemAmbient, _super);
9
+ function DListItemAmbient() {
10
+ return _super !== null && _super.apply(this, arguments) || this;
11
+ }
12
+ DListItemAmbient.prototype.getType = function () {
13
+ return "DListItemAmbient";
14
+ };
15
+ return DListItemAmbient;
16
+ }(DListItem));
17
+ export { DListItemAmbient };
18
+ //# sourceMappingURL=d-list-item-ambient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d-list-item-ambient.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-list-item-ambient.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,SAAS,EAAoC,MAAM,eAAe,CAAC;AAS5E;IAIU,oCAAgC;IAJ1C;;IAQA,CAAC;IAHU,kCAAO,GAAjB;QACC,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IACF,uBAAC;AAAD,CAAC,AARD,CAIU,SAAS,GAIlB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DListItem, DListItemOptions, DThemeListItem } from \"./d-list-item\";\n\nexport interface DListItemAmbientOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeListItemAmbient = DThemeListItemAmbient\n> extends DListItemOptions<VALUE, THEME> {}\n\nexport interface DThemeListItemAmbient extends DThemeListItem {}\n\nexport class DListItemAmbient<\n\tVALUE = unknown,\n\tTHEME extends DThemeListItemAmbient = DThemeListItemAmbient,\n\tOPTIONS extends DListItemAmbientOptions<VALUE, THEME> = DListItemAmbientOptions<VALUE, THEME>\n> extends DListItem<VALUE, THEME, OPTIONS> {\n\tprotected getType(): string {\n\t\treturn \"DListItemAmbient\";\n\t}\n}\n"]}